| Index: templates/bootstrap.js.tmpl |
| diff --git a/templates/bootstrap.js.tmpl b/templates/bootstrap.js.tmpl |
| deleted file mode 100644 |
| index 42eaef49cefa9bbd87151a4dcc84310bf9b544f7..0000000000000000000000000000000000000000 |
| --- a/templates/bootstrap.js.tmpl |
| +++ /dev/null |
| @@ -1,196 +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/. */ |
| - |
| -const Cc = Components.classes; |
| -const Ci = Components.interfaces; |
| -const Cr = Components.results; |
| -const Cu = Components.utils; |
| - |
| -let {Services} = Cu.import("resource://gre/modules/Services.jsm", {}); |
| - |
| -Cu.importGlobalProperties(["atob", "btoa", "File", "URL", |
| - "TextDecoder", "TextEncoder", "XMLHttpRequest"]); |
| - |
| -let addonData = null; |
| - |
| -function startup(params, reason) |
| -{ |
| - addonData = params; |
| - |
| - {%- if hasChromeRequires %} |
| - Services.obs.addObserver(RequireObserver, "{{metadata.get('general', 'basename')}}-require", true); |
| - onShutdown.add(function() |
| - { |
| - Services.obs.removeObserver(RequireObserver, "{{metadata.get('general', 'basename')}}-require"); |
| - }); |
| - {%- set hasShutdownHandlers = True %} |
| - {%- endif %} |
| - |
| - {%- if hasWebExtension %} |
| - let port = params.webExtension.startup().then(({browser}) => |
| - { |
| - return new Promise((resolve, reject) => |
| - { |
| - browser.runtime.onConnect.addListener(resolve); |
| - }); |
| - }); |
| - require.scopes.webextension = {exports: port}; |
| - {%- endif %} |
| - |
| - require("main"); |
| -} |
| - |
| -function shutdown(params, reason) |
| -{ |
| - {%- if chromeWindows %} |
| - let windowNames = {{chromeWindows|json}}; |
| - for (let i = 0; i < windowNames.length; i++) |
| - { |
| - let enumerator = Services.wm.getEnumerator(windowNames[i]); |
| - while (enumerator.hasMoreElements()) |
| - { |
| - let window = enumerator.getNext().QueryInterface(Ci.nsIDOMWindow); |
| - window.setTimeout("window.close()", 0); // Closing immediately might not work due to modal windows |
| - try |
| - { |
| - window.close(); |
| - } catch(e) {} |
| - } |
| - } |
| - {%- endif %} |
| - |
| - {%- if hasShutdownHandlers %} |
| - onShutdown.done = true; |
| - for (let i = shutdownHandlers.length - 1; i >= 0; i --) |
| - { |
| - try |
| - { |
| - shutdownHandlers[i](); |
| - } |
| - catch (e) |
| - { |
| - Cu.reportError(e); |
| - } |
| - } |
| - shutdownHandlers = null; |
| - {%- endif %} |
| - |
| - // Make sure to release our ties to the modules even if the sandbox cannot be |
| - // released for some reason. |
| - for (let key in require.scopes) |
| - { |
| - let scope = require.scopes[key]; |
| - let list = Object.keys(scope); |
| - for (let i = 0; i < list.length; i++) |
| - scope[list[i]] = null; |
| - } |
| - require.scopes = null; |
| - addonData = null; |
| -} |
| - |
| -function install(params, reason) {} |
| - |
| -function uninstall(params, reason) |
| -{ |
| - {%- if 'currentVersion' in jsonRequires.get('prefs.json', {}).get('defaults', {}) %} |
| - const ADDON_UNINSTALL = 6; // https://developer.mozilla.org/en/Extensions/Bootstrapped_extensions#Reason_constants |
| - if (reason == ADDON_UNINSTALL) |
| - { |
| - // Users often uninstall/reinstall extension to "fix" issues. Clear current |
| - // version number on uninstall to rerun first-run actions in this scenario. |
| - Services.prefs.clearUserPref("extensions.{{metadata.get('general', 'basename')}}.currentVersion"); |
| - } |
| - {%- endif %} |
| -} |
| - |
| -{%- if hasShutdownHandlers %} |
| -let shutdownHandlers = []; |
| -let onShutdown = |
| -{ |
| - done: false, |
| - add: function(handler) |
| - { |
| - if (shutdownHandlers.indexOf(handler) < 0) |
| - shutdownHandlers.push(handler); |
| - }, |
| - remove: function(handler) |
| - { |
| - let index = shutdownHandlers.indexOf(handler); |
| - if (index >= 0) |
| - shutdownHandlers.splice(index, 1); |
| - } |
| -}; |
| -{%- endif %} |
| - |
| -function require(module) |
| -{ |
| - let scopes = require.scopes; |
| - if (!(module in scopes)) |
| - { |
| - {%- if 'info' in requires %} |
| - if (module == "info") |
| - { |
| - let applications = {{applications|json}}; |
| - let appInfo = Services.appinfo; |
| - |
| - scopes[module] = {}; |
| - scopes[module].exports = |
| - { |
| - addonID: addonData.id, |
| - addonVersion: addonData.version, |
| - addonRoot: addonData.resourceURI.spec, |
| - addonName: "{{metadata.get('general', 'basename')}}", |
| - application: (appInfo.ID in applications ? applications[appInfo.ID] : "other"), |
| - applicationVersion: appInfo.version, |
| - platform: "gecko", |
| - platformVersion: appInfo.platformVersion |
| - }; |
| - } |
| - else |
| - { |
| - {%- endif %} |
| - let url = addonData.resourceURI.spec + "lib/" + module + ".js"; |
| - scopes[module] = { |
| - Cc, Ci, Cr, Cu, atob, btoa, File, URL, TextDecoder, TextEncoder, |
| - XMLHttpRequest, require, |
| - {% if hasShutdownHandlers %} |
| - onShutdown, |
| - {% endif %} |
| - exports: {}}; |
| - {%- if multicompartment %} |
| - let principal = Cc["@mozilla.org/systemprincipal;1"].getService(Ci.nsIPrincipal); |
| - scopes[module] = new Cu.Sandbox(principal, { |
| - sandboxName: url, |
| - sandboxPrototype: scopes[module], |
| - wantXrays: false |
| - }); |
| - {%- endif %} |
| - Services.scriptloader.loadSubScript(url, scopes[module]); |
| - {%- if 'info' in requires %} |
| - } |
| - {%- endif %} |
| - } |
| - return scopes[module].exports; |
| -} |
| -require.scopes = Object.create(null); |
| -{%- for name, data in jsonRequires.iteritems() %} |
| -require.scopes[{{name|json}}] = {exports: {{data|json}}}; |
| -{%- endfor %} |
| - |
| -{%- if hasChromeRequires %} |
| -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); |
| - |
| -let RequireObserver = |
| -{ |
| - observe: function(subject, topic, data) |
| - { |
| - if (topic == "{{metadata.get('general', 'basename')}}-require") |
| - { |
| - subject.wrappedJSObject.exports = require(data); |
| - } |
| - }, |
| - |
| - QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver]) |
| -}; |
| -{%- endif %} |