Commit 34598585 authored by David Rajchenbach-Teller's avatar David Rajchenbach-Teller
Browse files

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

parent 9af16a66
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
/* 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);
+6 −3
Original line number Diff line number Diff line
@@ -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"));