forked from mirrors/gecko-dev
MozReview-Commit-ID: LidgzhI4Z7h --HG-- rename : browser/extensions/shield-recipe-client/content/AboutPages.jsm => toolkit/components/normandy/content/AboutPages.jsm rename : browser/extensions/shield-recipe-client/content/about-studies/about-studies.css => toolkit/components/normandy/content/about-studies/about-studies.css rename : browser/extensions/shield-recipe-client/content/about-studies/about-studies.html => toolkit/components/normandy/content/about-studies/about-studies.html rename : browser/extensions/shield-recipe-client/content/about-studies/about-studies.js => toolkit/components/normandy/content/about-studies/about-studies.js rename : browser/extensions/shield-recipe-client/content/about-studies/common.js => toolkit/components/normandy/content/about-studies/common.js rename : browser/extensions/shield-recipe-client/content/about-studies/img/shield-logo.png => toolkit/components/normandy/content/about-studies/img/shield-logo.png rename : browser/extensions/shield-recipe-client/content/about-studies/shield-studies.js => toolkit/components/normandy/content/about-studies/shield-studies.js rename : browser/extensions/shield-recipe-client/content/shield-content-frame.js => toolkit/components/normandy/content/shield-content-frame.js rename : browser/extensions/shield-recipe-client/content/shield-content-process.js => toolkit/components/normandy/content/shield-content-process.js rename : browser/extensions/shield-recipe-client/docs/data-collection.rst => toolkit/components/normandy/docs/data-collection.rst rename : browser/extensions/shield-recipe-client/docs/index.rst => toolkit/components/normandy/docs/index.rst rename : browser/extensions/shield-recipe-client/jar.mn => toolkit/components/normandy/jar.mn rename : browser/extensions/shield-recipe-client/lib/ActionSandboxManager.jsm => toolkit/components/normandy/lib/ActionSandboxManager.jsm rename : browser/extensions/shield-recipe-client/lib/AddonStudies.jsm => toolkit/components/normandy/lib/AddonStudies.jsm rename : browser/extensions/shield-recipe-client/lib/Addons.jsm => toolkit/components/normandy/lib/Addons.jsm rename : browser/extensions/shield-recipe-client/lib/CleanupManager.jsm => toolkit/components/normandy/lib/CleanupManager.jsm rename : browser/extensions/shield-recipe-client/lib/ClientEnvironment.jsm => toolkit/components/normandy/lib/ClientEnvironment.jsm rename : browser/extensions/shield-recipe-client/lib/EventEmitter.jsm => toolkit/components/normandy/lib/EventEmitter.jsm rename : browser/extensions/shield-recipe-client/lib/FilterExpressions.jsm => toolkit/components/normandy/lib/FilterExpressions.jsm rename : browser/extensions/shield-recipe-client/lib/Heartbeat.jsm => toolkit/components/normandy/lib/Heartbeat.jsm rename : browser/extensions/shield-recipe-client/lib/LogManager.jsm => toolkit/components/normandy/lib/LogManager.jsm rename : browser/extensions/shield-recipe-client/lib/NormandyApi.jsm => toolkit/components/normandy/lib/NormandyApi.jsm rename : browser/extensions/shield-recipe-client/lib/NormandyDriver.jsm => toolkit/components/normandy/lib/NormandyDriver.jsm rename : browser/extensions/shield-recipe-client/lib/PreferenceExperiments.jsm => toolkit/components/normandy/lib/PreferenceExperiments.jsm rename : browser/extensions/shield-recipe-client/lib/PreferenceFilters.jsm => toolkit/components/normandy/lib/PreferenceFilters.jsm rename : browser/extensions/shield-recipe-client/lib/RecipeRunner.jsm => toolkit/components/normandy/lib/RecipeRunner.jsm rename : browser/extensions/shield-recipe-client/lib/Sampling.jsm => toolkit/components/normandy/lib/Sampling.jsm rename : browser/extensions/shield-recipe-client/lib/SandboxManager.jsm => toolkit/components/normandy/lib/SandboxManager.jsm rename : browser/extensions/shield-recipe-client/lib/ShieldPreferences.jsm => toolkit/components/normandy/lib/ShieldPreferences.jsm rename : browser/extensions/shield-recipe-client/lib/Storage.jsm => toolkit/components/normandy/lib/Storage.jsm rename : browser/extensions/shield-recipe-client/lib/TelemetryEvents.jsm => toolkit/components/normandy/lib/TelemetryEvents.jsm rename : browser/extensions/shield-recipe-client/lib/Uptake.jsm => toolkit/components/normandy/lib/Uptake.jsm rename : browser/extensions/shield-recipe-client/lib/Utils.jsm => toolkit/components/normandy/lib/Utils.jsm rename : browser/extensions/shield-recipe-client/moz.build => toolkit/components/normandy/moz.build rename : browser/extensions/shield-recipe-client/skin/osx/Heartbeat.css => toolkit/components/normandy/skin/osx/Heartbeat.css rename : browser/extensions/shield-recipe-client/skin/shared/Heartbeat.css => toolkit/components/normandy/skin/shared/Heartbeat.css rename : browser/extensions/shield-recipe-client/skin/shared/heartbeat-icon.svg => toolkit/components/normandy/skin/shared/heartbeat-icon.svg rename : browser/extensions/shield-recipe-client/skin/shared/heartbeat-star-lit.svg => toolkit/components/normandy/skin/shared/heartbeat-star-lit.svg rename : browser/extensions/shield-recipe-client/skin/shared/heartbeat-star-off.svg => toolkit/components/normandy/skin/shared/heartbeat-star-off.svg rename : browser/extensions/shield-recipe-client/test/.eslintrc.js => toolkit/components/normandy/test/.eslintrc.js rename : browser/extensions/shield-recipe-client/test/browser/.eslintrc.js => toolkit/components/normandy/test/browser/.eslintrc.js rename : browser/extensions/shield-recipe-client/test/browser/action_server.sjs => toolkit/components/normandy/test/browser/action_server.sjs rename : browser/extensions/shield-recipe-client/test/browser/browser.ini => toolkit/components/normandy/test/browser/browser.ini rename : browser/extensions/shield-recipe-client/test/browser/browser_ActionSandboxManager.js => toolkit/components/normandy/test/browser/browser_ActionSandboxManager.js rename : browser/extensions/shield-recipe-client/test/browser/browser_AddonStudies.js => toolkit/components/normandy/test/browser/browser_AddonStudies.js rename : browser/extensions/shield-recipe-client/test/browser/browser_Addons.js => toolkit/components/normandy/test/browser/browser_Addons.js rename : browser/extensions/shield-recipe-client/test/browser/browser_CleanupManager.js => toolkit/components/normandy/test/browser/browser_CleanupManager.js rename : browser/extensions/shield-recipe-client/test/browser/browser_ClientEnvironment.js => toolkit/components/normandy/test/browser/browser_ClientEnvironment.js rename : browser/extensions/shield-recipe-client/test/browser/browser_EventEmitter.js => toolkit/components/normandy/test/browser/browser_EventEmitter.js rename : browser/extensions/shield-recipe-client/test/browser/browser_FilterExpressions.js => toolkit/components/normandy/test/browser/browser_FilterExpressions.js rename : browser/extensions/shield-recipe-client/test/browser/browser_Heartbeat.js => toolkit/components/normandy/test/browser/browser_Heartbeat.js rename : browser/extensions/shield-recipe-client/test/browser/browser_LogManager.js => toolkit/components/normandy/test/browser/browser_LogManager.js rename : browser/extensions/shield-recipe-client/test/browser/browser_bootstrap.js => toolkit/components/normandy/test/browser/browser_Normandy.js rename : browser/extensions/shield-recipe-client/test/browser/browser_NormandyDriver.js => toolkit/components/normandy/test/browser/browser_NormandyDriver.js rename : browser/extensions/shield-recipe-client/test/browser/browser_PreferenceExperiments.js => toolkit/components/normandy/test/browser/browser_PreferenceExperiments.js rename : browser/extensions/shield-recipe-client/test/browser/browser_RecipeRunner.js => toolkit/components/normandy/test/browser/browser_RecipeRunner.js rename : browser/extensions/shield-recipe-client/test/browser/browser_ShieldPreferences.js => toolkit/components/normandy/test/browser/browser_ShieldPreferences.js rename : browser/extensions/shield-recipe-client/test/browser/browser_ShieldRecipeClient.js => toolkit/components/normandy/test/browser/browser_ShieldRecipeClient.js rename : browser/extensions/shield-recipe-client/test/browser/browser_Storage.js => toolkit/components/normandy/test/browser/browser_Storage.js rename : browser/extensions/shield-recipe-client/test/browser/browser_about_preferences.js => toolkit/components/normandy/test/browser/browser_about_preferences.js rename : browser/extensions/shield-recipe-client/test/browser/browser_about_studies.js => toolkit/components/normandy/test/browser/browser_about_studies.js rename : browser/extensions/shield-recipe-client/test/browser/fixtures/addon-fixture/manifest.json => toolkit/components/normandy/test/browser/fixtures/addon-fixture/manifest.json rename : browser/extensions/shield-recipe-client/test/browser/fixtures/normandy.xpi => toolkit/components/normandy/test/browser/fixtures/normandy.xpi rename : browser/extensions/shield-recipe-client/test/browser/head.js => toolkit/components/normandy/test/browser/head.js rename : browser/extensions/shield-recipe-client/test/unit/.eslintrc.js => toolkit/components/normandy/test/unit/.eslintrc.js rename : browser/extensions/shield-recipe-client/test/unit/echo_server.sjs => toolkit/components/normandy/test/unit/echo_server.sjs rename : browser/extensions/shield-recipe-client/test/unit/head_xpc.js => toolkit/components/normandy/test/unit/head_xpc.js rename : browser/extensions/shield-recipe-client/test/unit/invalid_recipe_signature_api/api/v1/index.json => toolkit/components/normandy/test/unit/invalid_recipe_signature_api/api/v1/index.json rename : browser/extensions/shield-recipe-client/test/unit/invalid_recipe_signature_api/api/v1/recipe/signed/index.json => toolkit/components/normandy/test/unit/invalid_recipe_signature_api/api/v1/recipe/signed/index.json rename : browser/extensions/shield-recipe-client/test/unit/invalid_recipe_signature_api/normandy.content-signature.mozilla.org-20210705.dev.chain => toolkit/components/normandy/test/unit/invalid_recipe_signature_api/normandy.content-signature.mozilla.org-20210705.dev.chain rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/action/console-log/implementation/sha384-RGx3rydrSq53UfmW9kFcK0mQYra67XIvZvr4MhmAe--ljiiMQOtgM7Cmca48um3v => toolkit/components/normandy/test/unit/mock_api/api/v1/action/console-log/implementation/sha384-RGx3rydrSq53UfmW9kFcK0mQYra67XIvZvr4MhmAe--ljiiMQOtgM7Cmca48um3v rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/action/console-log/index.json => toolkit/components/normandy/test/unit/mock_api/api/v1/action/console-log/index.json rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/action/index.json => toolkit/components/normandy/test/unit/mock_api/api/v1/action/index.json rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/action/opt-out-study/implementation/sha384-HM_avYcD00o27ufwU1V7PIBtiuMAXML6MMwlYrDEqDX-XzGVuOfL52RCM680JExN => toolkit/components/normandy/test/unit/mock_api/api/v1/action/opt-out-study/implementation/sha384-HM_avYcD00o27ufwU1V7PIBtiuMAXML6MMwlYrDEqDX-XzGVuOfL52RCM680JExN rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/action/opt-out-study/index.json => toolkit/components/normandy/test/unit/mock_api/api/v1/action/opt-out-study/index.json rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/action/preference-experiment/implementation/sha384-KQgG38GQ7KZAb2VIB48ANQO6nBcxZoLm2ORzUviRT5nAvSywyPjZ5cJIElw6iXIt => toolkit/components/normandy/test/unit/mock_api/api/v1/action/preference-experiment/implementation/sha384-KQgG38GQ7KZAb2VIB48ANQO6nBcxZoLm2ORzUviRT5nAvSywyPjZ5cJIElw6iXIt rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/action/preference-experiment/index.json => toolkit/components/normandy/test/unit/mock_api/api/v1/action/preference-experiment/index.json rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/action/show-heartbeat/implementation/sha384-dEGiyKPEln8Ns5cQHzGpMIGdirSAAX0X-Kwlu-U3sJ05yNbO-ANij_a6c5SyL7G4 => toolkit/components/normandy/test/unit/mock_api/api/v1/action/show-heartbeat/implementation/sha384-dEGiyKPEln8Ns5cQHzGpMIGdirSAAX0X-Kwlu-U3sJ05yNbO-ANij_a6c5SyL7G4 rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/action/show-heartbeat/index.json => toolkit/components/normandy/test/unit/mock_api/api/v1/action/show-heartbeat/index.json rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/action/signed/index.json => toolkit/components/normandy/test/unit/mock_api/api/v1/action/signed/index.json rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/classify_client/index.json => toolkit/components/normandy/test/unit/mock_api/api/v1/classify_client/index.json rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/index.json => toolkit/components/normandy/test/unit/mock_api/api/v1/index.json rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/recipe/index.json => toolkit/components/normandy/test/unit/mock_api/api/v1/recipe/index.json rename : browser/extensions/shield-recipe-client/test/unit/mock_api/api/v1/recipe/signed/index.json => toolkit/components/normandy/test/unit/mock_api/api/v1/recipe/signed/index.json rename : browser/extensions/shield-recipe-client/test/unit/mock_api/normandy.content-signature.mozilla.org-20210705.dev.chain => toolkit/components/normandy/test/unit/mock_api/normandy.content-signature.mozilla.org-20210705.dev.chain rename : browser/extensions/shield-recipe-client/test/unit/query_server.sjs => toolkit/components/normandy/test/unit/query_server.sjs rename : browser/extensions/shield-recipe-client/test/unit/test_NormandyApi.js => toolkit/components/normandy/test/unit/test_NormandyApi.js rename : browser/extensions/shield-recipe-client/test/unit/test_Sampling.js => toolkit/components/normandy/test/unit/test_Sampling.js rename : browser/extensions/shield-recipe-client/test/unit/test_SandboxManager.js => toolkit/components/normandy/test/unit/test_SandboxManager.js rename : browser/extensions/shield-recipe-client/test/unit/test_Utils.js => toolkit/components/normandy/test/unit/test_Utils.js rename : browser/extensions/shield-recipe-client/test/unit/utils.js => toolkit/components/normandy/test/unit/utils.js rename : browser/extensions/shield-recipe-client/test/unit/xpcshell.ini => toolkit/components/normandy/test/unit/xpcshell.ini rename : browser/extensions/shield-recipe-client/vendor/LICENSE_THIRDPARTY => toolkit/components/normandy/vendor/LICENSE_THIRDPARTY rename : browser/extensions/shield-recipe-client/vendor/PropTypes.js => toolkit/components/normandy/vendor/PropTypes.js rename : browser/extensions/shield-recipe-client/vendor/React.js => toolkit/components/normandy/vendor/React.js rename : browser/extensions/shield-recipe-client/vendor/ReactDOM.js => toolkit/components/normandy/vendor/ReactDOM.js rename : browser/extensions/shield-recipe-client/vendor/classnames.js => toolkit/components/normandy/vendor/classnames.js rename : browser/extensions/shield-recipe-client/vendor/mozjexl.js => toolkit/components/normandy/vendor/mozjexl.js extra : rebase_source : 23de90d080eb96bed8cab7c9f8557f1b27c5d9ae extra : source : 18a7f08a6cdc379574836737f776c62c6e755134
64 lines
1.7 KiB
JavaScript
64 lines
1.7 KiB
JavaScript
/* 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";
|
|
|
|
ChromeUtils.import("resource://normandy/lib/LogManager.jsm");
|
|
|
|
var EXPORTED_SYMBOLS = ["EventEmitter"];
|
|
|
|
const log = LogManager.getLogger("event-emitter");
|
|
|
|
var EventEmitter = function(sandboxManager) {
|
|
const listeners = {};
|
|
|
|
return {
|
|
createSandboxedEmitter() {
|
|
return sandboxManager.cloneInto({
|
|
on: this.on.bind(this),
|
|
off: this.off.bind(this),
|
|
once: this.once.bind(this),
|
|
}, {cloneFunctions: true});
|
|
},
|
|
|
|
emit(eventName, event) {
|
|
// Fire events async
|
|
Promise.resolve()
|
|
.then(() => {
|
|
if (!(eventName in listeners)) {
|
|
log.debug(`EventEmitter: Event fired with no listeners: ${eventName}`);
|
|
return;
|
|
}
|
|
// Clone callbacks array to avoid problems with mutation while iterating
|
|
const callbacks = Array.from(listeners[eventName]);
|
|
for (const cb of callbacks) {
|
|
cb(sandboxManager.cloneInto(event));
|
|
}
|
|
});
|
|
},
|
|
|
|
on(eventName, callback) {
|
|
if (!(eventName in listeners)) {
|
|
listeners[eventName] = [];
|
|
}
|
|
listeners[eventName].push(callback);
|
|
},
|
|
|
|
off(eventName, callback) {
|
|
if (eventName in listeners) {
|
|
const index = listeners[eventName].indexOf(callback);
|
|
if (index !== -1) {
|
|
listeners[eventName].splice(index, 1);
|
|
}
|
|
}
|
|
},
|
|
|
|
once(eventName, callback) {
|
|
const inner = event => {
|
|
callback(event);
|
|
this.off(eventName, inner);
|
|
};
|
|
this.on(eventName, inner);
|
|
},
|
|
};
|
|
};
|