summaryrefslogtreecommitdiffstats
path: root/b2g/components/Bootstraper.jsm
diff options
context:
space:
mode:
Diffstat (limited to 'b2g/components/Bootstraper.jsm')
-rw-r--r--b2g/components/Bootstraper.jsm156
1 files changed, 0 insertions, 156 deletions
diff --git a/b2g/components/Bootstraper.jsm b/b2g/components/Bootstraper.jsm
deleted file mode 100644
index 3d3fb37d9..000000000
--- a/b2g/components/Bootstraper.jsm
+++ /dev/null
@@ -1,156 +0,0 @@
-/* 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/. */
-
-"use strict";
-
-this.EXPORTED_SYMBOLS = ["Bootstraper"];
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-const CC = Components.Constructor;
-
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/AppsUtils.jsm");
-
-function debug(aMsg) {
- //dump("-*- Bootstraper: " + aMsg + "\n");
-}
-
-/**
- * This module loads the manifest for app from the --start-url enpoint and
- * ensures that it's installed as the system app.
- */
-this.Bootstraper = {
- _manifestURL: null,
- _startupURL: null,
-
- bailout: function(aMsg) {
- dump("************************************************************\n");
- dump("* /!\\ " + aMsg + "\n");
- dump("************************************************************\n");
- let appStartup = Cc["@mozilla.org/toolkit/app-startup;1"]
- .getService(Ci.nsIAppStartup);
- appStartup.quit(appStartup.eForceQuit);
- },
-
- installSystemApp: function(aManifest) {
- // Get the appropriate startup url from the manifest launch_path.
- let base = Services.io.newURI(this._manifestURL, null, null);
- let origin = base.prePath;
- let helper = new ManifestHelper(aManifest, origin, this._manifestURL);
- this._startupURL = helper.fullLaunchPath();
-
- return new Promise((aResolve, aReject) => {
- debug("Origin is " + origin);
- let appData = {
- app: {
- installOrigin: origin,
- origin: origin,
- manifest: aManifest,
- manifestURL: this._manifestURL,
- manifestHash: AppsUtils.computeHash(JSON.stringify(aManifest)),
- appStatus: Ci.nsIPrincipal.APP_STATUS_CERTIFIED
- },
- appId: 1,
- isBrowser: false,
- isPackage: false
- };
-
- //DOMApplicationRegistry.confirmInstall(appData, null, aResolve);
- });
- },
-
- /**
- * Resolves to a json manifest.
- */
- loadManifest: function() {
- return new Promise((aResolve, aReject) => {
- debug("Loading manifest " + this._manifestURL);
-
- let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"]
- .createInstance(Ci.nsIXMLHttpRequest);
- xhr.mozBackgroundRequest = true;
- xhr.open("GET", this._manifestURL);
- xhr.responseType = "json";
- xhr.addEventListener("load", () => {
- if (xhr.status >= 200 && xhr.status < 400) {
- debug("Success loading " + this._manifestURL);
- aResolve(xhr.response);
- } else {
- aReject("Error loading " + this._manifestURL);
- }
- });
- xhr.addEventListener("error", () => {
- aReject("Error loading " + this._manifestURL);
- });
- xhr.send(null);
- });
- },
-
- configure: function() {
- debug("Setting startup prefs... " + this._startupURL);
- Services.prefs.setCharPref("b2g.system_manifest_url", this._manifestURL);
- Services.prefs.setCharPref("b2g.system_startup_url", this._startupURL);
- return Promise.resolve();
- },
-
- /**
- * If a system app is already installed, uninstall it so that we can
- * cleanly replace it by the current one.
- */
- uninstallPreviousSystemApp: function() {
- // TODO: FIXME
- return Promise.resolve();
-
- let oldManifestURL;
- try{
- oldManifestURL = Services.prefs.getCharPref("b2g.system_manifest_url");
- } catch(e) {
- // No preference set, so nothing to uninstall.
- return Promise.resolve();
- }
-
- let id = DOMApplicationRegistry.getAppLocalIdByManifestURL(oldManifestURL);
- if (id == Ci.nsIScriptSecurityManager.NO_APP_ID) {
- return Promise.resolve();
- }
- debug("Uninstalling " + oldManifestURL);
- return DOMApplicationRegistry.uninstall(oldManifestURL);
- },
-
- /**
- * Check if we are already configured to run from this manifest url.
- */
- isInstallRequired: function(aManifestURL) {
- try {
- if (Services.prefs.getCharPref("b2g.system_manifest_url") == aManifestURL) {
- return false;
- }
- } catch(e) { }
- return true;
- },
-
- /**
- * Resolves once we have installed the app.
- */
- ensureSystemAppInstall: function(aManifestURL) {
- this._manifestURL = aManifestURL;
- debug("Installing app from " + this._manifestURL);
-
- if (!this.isInstallRequired(this._manifestURL)) {
- debug("Already configured for " + this._manifestURL);
- return Promise.resolve();
- }
-
- return new Promise((aResolve, aReject) => {
- this.uninstallPreviousSystemApp.bind(this)
- .then(this.loadManifest.bind(this))
- .then(this.installSystemApp.bind(this))
- .then(this.configure.bind(this))
- .then(aResolve)
- .catch(aReject);
- });
- }
-};