| 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 %} |