Bug 952335 - Provide the full path for OS.Constants.Path.libxul on OSX. r=mossop

This commit is contained in:
David Rajchenbach-Teller 2014-02-05 13:29:51 -05:00
parent 319cd8feae
commit e189bf007a
2 changed files with 24 additions and 3 deletions

View File

@ -0,0 +1,18 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// Test that we can link with libxul using js-ctypes
const {Cu} = require("chrome");
const {ctypes} = Cu.import("resource://gre/modules/ctypes.jsm", {});
const {OS} = Cu.import("resource://gre/modules/osfile.jsm", {});
exports.test = function(assert) {
let path = OS.Constants.Path.libxul;
assert.pass("libxul is at " + path);
let lib = ctypes.open(path);
assert.ok(lib != null, "linked to libxul successfully");
};
require('test').run(exports);

View File

@ -837,11 +837,14 @@ bool DefineOSFileConstants(JSContext *cx, JS::Handle<JSObject*> global)
// library, which is sufficient to link to the library using js-ctypes.
#if defined(XP_MACOSX)
// Under MacOS X, for some reason, libxul is called simply "XUL"
nsAutoString libxul(NS_LITERAL_STRING("XUL"));
// Under MacOS X, for some reason, libxul is called simply "XUL",
// and we need to provide the full path.
nsAutoString libxul;
libxul.Append(gPaths->libDir);
libxul.Append(NS_LITERAL_STRING("/XUL"));
#else
// On other platforms, libxul is a library "xul" with regular
// library prefix/suffix
// library prefix/suffix.
nsAutoString libxul;
libxul.Append(NS_LITERAL_STRING(DLL_PREFIX));
libxul.Append(NS_LITERAL_STRING("xul"));