aboutsummaryrefslogtreecommitdiff
path: root/tools/addon-sdk-1.3/packages/development-mode/lib/bootstrap.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/addon-sdk-1.3/packages/development-mode/lib/bootstrap.js')
-rw-r--r--tools/addon-sdk-1.3/packages/development-mode/lib/bootstrap.js153
1 files changed, 0 insertions, 153 deletions
diff --git a/tools/addon-sdk-1.3/packages/development-mode/lib/bootstrap.js b/tools/addon-sdk-1.3/packages/development-mode/lib/bootstrap.js
deleted file mode 100644
index 6986c60..0000000
--- a/tools/addon-sdk-1.3/packages/development-mode/lib/bootstrap.js
+++ /dev/null
@@ -1,153 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Jetpack SDK.
- *
- * The Initial Developer of the Original Code is
- * Atul Varma <atul@mozilla.com>.
- * Portions created by the Initial Developer are Copyright (C) 2010
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Atul Varma <atul@mozilla.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-"use strict";
-
-var {Cc,Cm,Ci,components} = require("chrome");
-var file = require("api-utils/file");
-
-// A global registry of all Jetpack Programs that we're responsible
-// for loading and unloading. Keys are XPCOM contract IDs of
-// the harness services of Jetpack Programs, values are the
-// wrappedJSObject of the harness services themselves.
-var gServices = {};
-
-var manager = Cm;
-manager.QueryInterface(Ci.nsIComponentRegistrar);
-
-// Attempts to unload and then unregister the XPCOM component with the
-// given contract ID, if it is managed by us.
-function maybeUnload(contractID) {
- if (contractID in gServices) {
- try {
- gServices[contractID].unload();
- } catch (e) {
- console.exception(e);
- }
- var classID = gServices[contractID].classID;
- delete gServices[contractID];
- maybeUnregister(contractID, classID);
- }
-}
-
-// Attempts to unregister the XPCOM component with the given
-// contract ID and class ID, if it is managed by us.
-function maybeUnregister(contractID, classID) {
- try {
- var factory = manager.getClassObjectByContractID(contractID,
- Ci.nsIFactory);
- manager.unregisterFactory(classID, factory);
- } catch (e) {
- console.exception(e);
- }
-}
-
-// A quit callable that is passed to the main() function of any
-// Jetpack Program we manage. Whenever said program quits, we will
-// automatically take care of unloading and unregistering it.
-function makeQuit(contractID) {
- return function quit(status) {
- maybeUnload(contractID);
- };
-}
-
-function logError(e) {
- console.exception(e);
-}
-
-function makeUnloader(contractID) {
- return {unload: function unload() { maybeUnload(contractID); }};
-}
-
-// The main public function of this module; given a JSON harness options
-// blob and a root directory of where the Jetpack Program
-// is installed, takes care of loading the program, running it, and
-// unloading its resources when they're no longer needed.
-exports.run = function run(options, rootDirPath, dump) {
- var harnessService;
- var contractID = options.bootstrap.contractID;
- var classID = components.ID(options.bootstrap.classID);
-
- maybeUnload(contractID);
- options.runImmediately = true;
-
- var rootDir = Cc["@mozilla.org/file/local;1"]
- .createInstance(Ci.nsILocalFile);
- rootDir.initWithPath(rootDirPath);
-
- // Note that we're reusing our own bootstrapping code here, rather
- // than directly invoking the target Jetpack Program's bootstrapping
- // infrastructure. If one works differently than the other,
- // we could have problems, but for now we'll assume that this
- // bootstrapping infrastructure is stable.
- var HarnessService = packaging.buildHarnessService(rootDir,
- dump,
- logError,
- makeQuit(contractID),
- options);
- var factory = HarnessService.prototype._xpcom_factory;
- var proto = HarnessService.prototype;
- manager.registerFactory(proto.classID,
- proto.classDescription,
- proto.contractID,
- factory);
-
- try {
- harnessService = factory.createInstance(null, Ci.nsISupports);
- harnessService = harnessService.wrappedJSObject;
- gServices[contractID] = harnessService;
- harnessService.load();
- return makeUnloader(contractID, classID);
- } catch (e) {
- console.exception(e);
- return null;
- }
-};
-
-// When this module is unloaded, shut down all currently-running
-// Jetpack Programs we manage and free their resources.
-require("unload").when(
- function() {
- var argLists = [];
- for (contractID in gServices)
- argLists.push([contractID, gServices[contractID].classID]);
-
- argLists.forEach(
- function(args) {
- maybeUnload.apply(undefined, args);
- });
- });