mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 11:25:00 +00:00
Bug 1203330 Part 2 Convert EventManager uses to SingletonEventManager r=kmag
MozReview-Commit-ID: A12TPwAYzTS --HG-- extra : rebase_source : 10526ee923dc1eed24bac3c9b9c80c54b8e174e9
This commit is contained in:
parent
30deceecf8
commit
322ee1283f
@ -18,7 +18,7 @@ Cu.import("resource://gre/modules/ExtensionUtils.jsm");
|
||||
Cu.import("resource://gre/modules/Task.jsm");
|
||||
|
||||
var {
|
||||
EventManager,
|
||||
SingletonEventManager,
|
||||
IconDetails,
|
||||
} = ExtensionUtils;
|
||||
|
||||
@ -446,10 +446,10 @@ extensions.registerSchemaAPI("browserAction", "addon_parent", context => {
|
||||
let {extension} = context;
|
||||
return {
|
||||
browserAction: {
|
||||
onClicked: new EventManager(context, "browserAction.onClicked", fire => {
|
||||
onClicked: new SingletonEventManager(context, "browserAction.onClicked", fire => {
|
||||
let listener = () => {
|
||||
let tab = TabManager.activeTab;
|
||||
fire(TabManager.convert(extension, tab));
|
||||
fire.async(TabManager.convert(extension, tab));
|
||||
};
|
||||
BrowserAction.for(extension).on("click", listener);
|
||||
return () => {
|
||||
|
@ -6,7 +6,7 @@ Cu.import("resource://devtools/shared/event-emitter.js");
|
||||
Cu.import("resource://gre/modules/ExtensionUtils.jsm");
|
||||
|
||||
var {
|
||||
EventManager,
|
||||
SingletonEventManager,
|
||||
PlatformInfo,
|
||||
} = ExtensionUtils;
|
||||
|
||||
@ -245,9 +245,9 @@ extensions.registerSchemaAPI("commands", "addon_parent", context => {
|
||||
});
|
||||
}));
|
||||
},
|
||||
onCommand: new EventManager(context, "commands.onCommand", fire => {
|
||||
onCommand: new SingletonEventManager(context, "commands.onCommand", fire => {
|
||||
let listener = (eventName, commandName) => {
|
||||
fire(commandName);
|
||||
fire.async(commandName);
|
||||
};
|
||||
commandsMap.get(extension).on("command", listener);
|
||||
return () => {
|
||||
|
@ -8,9 +8,9 @@ Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
var {
|
||||
EventManager,
|
||||
ExtensionError,
|
||||
IconDetails,
|
||||
SingletonEventManager,
|
||||
} = ExtensionUtils;
|
||||
|
||||
const ACTION_MENU_TOP_LEVEL_LIMIT = 6;
|
||||
@ -625,9 +625,9 @@ extensions.registerSchemaAPI("contextMenus", "addon_parent", context => {
|
||||
}
|
||||
},
|
||||
|
||||
onClicked: new EventManager(context, "contextMenus.onClicked", fire => {
|
||||
onClicked: new SingletonEventManager(context, "contextMenus.onClicked", fire => {
|
||||
let listener = (event, info, tab) => {
|
||||
fire(info, tab);
|
||||
fire.async(info, tab);
|
||||
};
|
||||
|
||||
extension.on("webext-contextmenu-menuitem-click", listener);
|
||||
|
@ -5,7 +5,7 @@
|
||||
Cu.import("resource://gre/modules/Task.jsm");
|
||||
Cu.import("resource://gre/modules/ExtensionUtils.jsm");
|
||||
var {
|
||||
EventManager,
|
||||
SingletonEventManager,
|
||||
IconDetails,
|
||||
} = ExtensionUtils;
|
||||
|
||||
@ -244,9 +244,9 @@ extensions.registerSchemaAPI("pageAction", "addon_parent", context => {
|
||||
let {extension} = context;
|
||||
return {
|
||||
pageAction: {
|
||||
onClicked: new EventManager(context, "pageAction.onClicked", fire => {
|
||||
onClicked: new SingletonEventManager(context, "pageAction.onClicked", fire => {
|
||||
let listener = (evt, tab) => {
|
||||
fire(TabManager.convert(extension, tab));
|
||||
fire.async(TabManager.convert(extension, tab));
|
||||
};
|
||||
let pageAction = PageAction.for(extension);
|
||||
|
||||
|
@ -18,7 +18,7 @@ XPCOMUtils.defineLazyModuleGetter(this, "Services",
|
||||
Cu.import("resource://gre/modules/ExtensionUtils.jsm");
|
||||
|
||||
var {
|
||||
EventManager,
|
||||
SingletonEventManager,
|
||||
ignoreEvent,
|
||||
} = ExtensionUtils;
|
||||
|
||||
@ -283,12 +283,12 @@ extensions.registerSchemaAPI("tabs", "addon_parent", context => {
|
||||
let tab = event.originalTarget;
|
||||
let tabId = TabManager.getId(tab);
|
||||
let windowId = WindowManager.getId(tab.ownerGlobal);
|
||||
fire({tabId, windowId});
|
||||
fire.async({tabId, windowId});
|
||||
}).api(),
|
||||
|
||||
onCreated: new EventManager(context, "tabs.onCreated", fire => {
|
||||
onCreated: new SingletonEventManager(context, "tabs.onCreated", fire => {
|
||||
let listener = (eventName, event) => {
|
||||
fire(TabManager.convert(extension, event.tab));
|
||||
fire.async(TabManager.convert(extension, event.tab));
|
||||
};
|
||||
|
||||
tabListener.on("tab-created", listener);
|
||||
@ -307,12 +307,12 @@ extensions.registerSchemaAPI("tabs", "addon_parent", context => {
|
||||
let tab = event.originalTarget;
|
||||
let tabIds = [TabManager.getId(tab)];
|
||||
let windowId = WindowManager.getId(tab.ownerGlobal);
|
||||
fire({tabIds, windowId});
|
||||
fire.async({tabIds, windowId});
|
||||
}).api(),
|
||||
|
||||
onAttached: new EventManager(context, "tabs.onAttached", fire => {
|
||||
onAttached: new SingletonEventManager(context, "tabs.onAttached", fire => {
|
||||
let listener = (eventName, event) => {
|
||||
fire(event.tabId, {newWindowId: event.newWindowId, newPosition: event.newPosition});
|
||||
fire.async(event.tabId, {newWindowId: event.newWindowId, newPosition: event.newPosition});
|
||||
};
|
||||
|
||||
tabListener.on("tab-attached", listener);
|
||||
@ -321,9 +321,9 @@ extensions.registerSchemaAPI("tabs", "addon_parent", context => {
|
||||
};
|
||||
}).api(),
|
||||
|
||||
onDetached: new EventManager(context, "tabs.onDetached", fire => {
|
||||
onDetached: new SingletonEventManager(context, "tabs.onDetached", fire => {
|
||||
let listener = (eventName, event) => {
|
||||
fire(event.tabId, {oldWindowId: event.oldWindowId, oldPosition: event.oldPosition});
|
||||
fire.async(event.tabId, {oldWindowId: event.oldWindowId, oldPosition: event.oldPosition});
|
||||
};
|
||||
|
||||
tabListener.on("tab-detached", listener);
|
||||
@ -332,9 +332,9 @@ extensions.registerSchemaAPI("tabs", "addon_parent", context => {
|
||||
};
|
||||
}).api(),
|
||||
|
||||
onRemoved: new EventManager(context, "tabs.onRemoved", fire => {
|
||||
onRemoved: new SingletonEventManager(context, "tabs.onRemoved", fire => {
|
||||
let listener = (eventName, event) => {
|
||||
fire(event.tabId, {windowId: event.windowId, isWindowClosing: event.isWindowClosing});
|
||||
fire.async(event.tabId, {windowId: event.windowId, isWindowClosing: event.isWindowClosing});
|
||||
};
|
||||
|
||||
tabListener.on("tab-removed", listener);
|
||||
@ -345,7 +345,7 @@ extensions.registerSchemaAPI("tabs", "addon_parent", context => {
|
||||
|
||||
onReplaced: ignoreEvent(context, "tabs.onReplaced"),
|
||||
|
||||
onMoved: new EventManager(context, "tabs.onMoved", fire => {
|
||||
onMoved: new SingletonEventManager(context, "tabs.onMoved", fire => {
|
||||
// There are certain circumstances where we need to ignore a move event.
|
||||
//
|
||||
// Namely, the first time the tab is moved after it's created, we need
|
||||
@ -373,7 +373,7 @@ extensions.registerSchemaAPI("tabs", "addon_parent", context => {
|
||||
return;
|
||||
}
|
||||
|
||||
fire(TabManager.getId(tab), {
|
||||
fire.async(TabManager.getId(tab), {
|
||||
windowId: WindowManager.getId(tab.ownerGlobal),
|
||||
fromIndex: event.detail,
|
||||
toIndex: tab._tPos,
|
||||
@ -388,7 +388,7 @@ extensions.registerSchemaAPI("tabs", "addon_parent", context => {
|
||||
};
|
||||
}).api(),
|
||||
|
||||
onUpdated: new EventManager(context, "tabs.onUpdated", fire => {
|
||||
onUpdated: new SingletonEventManager(context, "tabs.onUpdated", fire => {
|
||||
const restricted = ["url", "favIconUrl", "title"];
|
||||
|
||||
function sanitize(extension, changeInfo) {
|
||||
@ -410,7 +410,7 @@ extensions.registerSchemaAPI("tabs", "addon_parent", context => {
|
||||
let tabElem = gBrowser.getTabForBrowser(browser);
|
||||
|
||||
let tab = TabManager.convert(extension, tabElem);
|
||||
fire(tab.id, changeInfo, tab);
|
||||
fire.async(tab.id, changeInfo, tab);
|
||||
}
|
||||
};
|
||||
|
||||
@ -447,7 +447,7 @@ extensions.registerSchemaAPI("tabs", "addon_parent", context => {
|
||||
for (let prop of needed) {
|
||||
changeInfo[prop] = tab[prop];
|
||||
}
|
||||
fire(tab.id, changeInfo, tab);
|
||||
fire.async(tab.id, changeInfo, tab);
|
||||
}
|
||||
};
|
||||
let progressListener = {
|
||||
@ -1025,7 +1025,7 @@ extensions.registerSchemaAPI("tabs", "addon_parent", context => {
|
||||
return Promise.resolve();
|
||||
},
|
||||
|
||||
onZoomChange: new EventManager(context, "tabs.onZoomChange", fire => {
|
||||
onZoomChange: new SingletonEventManager(context, "tabs.onZoomChange", fire => {
|
||||
let getZoomLevel = browser => {
|
||||
let {ZoomManager} = browser.ownerGlobal;
|
||||
|
||||
@ -1075,7 +1075,7 @@ extensions.registerSchemaAPI("tabs", "addon_parent", context => {
|
||||
zoomLevels.set(browser, newZoomFactor);
|
||||
|
||||
let tabId = TabManager.getId(tab);
|
||||
fire({
|
||||
fire.async({
|
||||
tabId,
|
||||
oldZoomFactor,
|
||||
newZoomFactor,
|
||||
|
@ -28,8 +28,8 @@ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
|
||||
var {
|
||||
DefaultWeakMap,
|
||||
EventManager,
|
||||
promiseEvent,
|
||||
SingletonEventManager,
|
||||
} = ExtensionUtils;
|
||||
|
||||
// This file provides some useful code for the |tabs| and |windows|
|
||||
@ -1281,16 +1281,16 @@ global.AllWindowEvents = {
|
||||
|
||||
AllWindowEvents.openListener = AllWindowEvents.openListener.bind(AllWindowEvents);
|
||||
|
||||
// Subclass of EventManager where we just need to call
|
||||
// Subclass of SingletonEventManager where we just need to call
|
||||
// add/removeEventListener on each XUL window.
|
||||
global.WindowEventManager = function(context, name, event, listener) {
|
||||
EventManager.call(this, context, name, fire => {
|
||||
let listener2 = (...args) => listener(fire, ...args);
|
||||
AllWindowEvents.addListener(event, listener2);
|
||||
return () => {
|
||||
AllWindowEvents.removeListener(event, listener2);
|
||||
};
|
||||
});
|
||||
global.WindowEventManager = class extends SingletonEventManager {
|
||||
constructor(context, name, event, listener) {
|
||||
super(context, name, fire => {
|
||||
let listener2 = (...args) => listener(fire, ...args);
|
||||
AllWindowEvents.addListener(event, listener2);
|
||||
return () => {
|
||||
AllWindowEvents.removeListener(event, listener2);
|
||||
};
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
WindowEventManager.prototype = Object.create(EventManager.prototype);
|
||||
|
@ -12,7 +12,7 @@ XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils",
|
||||
|
||||
Cu.import("resource://gre/modules/ExtensionUtils.jsm");
|
||||
var {
|
||||
EventManager,
|
||||
SingletonEventManager,
|
||||
promiseObserved,
|
||||
} = ExtensionUtils;
|
||||
|
||||
@ -26,15 +26,15 @@ extensions.registerSchemaAPI("windows", "addon_parent", context => {
|
||||
windows: {
|
||||
onCreated:
|
||||
new WindowEventManager(context, "windows.onCreated", "domwindowopened", (fire, window) => {
|
||||
fire(WindowManager.convert(extension, window));
|
||||
fire.async(WindowManager.convert(extension, window));
|
||||
}).api(),
|
||||
|
||||
onRemoved:
|
||||
new WindowEventManager(context, "windows.onRemoved", "domwindowclosed", (fire, window) => {
|
||||
fire(WindowManager.getId(window));
|
||||
fire.async(WindowManager.getId(window));
|
||||
}).api(),
|
||||
|
||||
onFocusChanged: new EventManager(context, "windows.onFocusChanged", fire => {
|
||||
onFocusChanged: new SingletonEventManager(context, "windows.onFocusChanged", fire => {
|
||||
// Keep track of the last windowId used to fire an onFocusChanged event
|
||||
let lastOnFocusChangedWindowId;
|
||||
|
||||
@ -45,7 +45,7 @@ extensions.registerSchemaAPI("windows", "addon_parent", context => {
|
||||
let window = Services.focus.activeWindow;
|
||||
let windowId = window ? WindowManager.getId(window) : WindowManager.WINDOW_ID_NONE;
|
||||
if (windowId !== lastOnFocusChangedWindowId) {
|
||||
fire(windowId);
|
||||
fire.async(windowId);
|
||||
lastOnFocusChangedWindowId = windowId;
|
||||
}
|
||||
});
|
||||
|
@ -41,7 +41,6 @@ Cu.import("resource://gre/modules/ExtensionUtils.jsm");
|
||||
|
||||
const {
|
||||
DefaultMap,
|
||||
EventManager,
|
||||
SingletonEventManager,
|
||||
SpreadArgs,
|
||||
defineLazyGetter,
|
||||
@ -119,17 +118,17 @@ class Port {
|
||||
this.postMessage(json);
|
||||
},
|
||||
|
||||
onDisconnect: new EventManager(this.context, "Port.onDisconnect", fire => {
|
||||
onDisconnect: new SingletonEventManager(this.context, "Port.onDisconnect", fire => {
|
||||
return this.registerOnDisconnect(error => {
|
||||
portError = error && this.context.normalizeError(error);
|
||||
fire.withoutClone(portObj);
|
||||
fire.asyncWithoutClone(portObj);
|
||||
});
|
||||
}).api(),
|
||||
|
||||
onMessage: new EventManager(this.context, "Port.onMessage", fire => {
|
||||
onMessage: new SingletonEventManager(this.context, "Port.onMessage", fire => {
|
||||
return this.registerOnMessage(msg => {
|
||||
msg = Cu.cloneInto(msg, this.context.cloneScope);
|
||||
fire.withoutClone(msg, portObj);
|
||||
fire.asyncWithoutClone(msg, portObj);
|
||||
});
|
||||
}).api(),
|
||||
|
||||
|
@ -4,7 +4,7 @@ var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/ExtensionUtils.jsm");
|
||||
var {
|
||||
EventManager,
|
||||
SingletonEventManager,
|
||||
} = ExtensionUtils;
|
||||
|
||||
// WeakMap[Extension -> Map[name -> Alarm]]
|
||||
@ -140,9 +140,9 @@ extensions.registerSchemaAPI("alarms", "addon_parent", context => {
|
||||
return Promise.resolve(cleared);
|
||||
},
|
||||
|
||||
onAlarm: new EventManager(context, "alarms.onAlarm", fire => {
|
||||
onAlarm: new SingletonEventManager(context, "alarms.onAlarm", fire => {
|
||||
let callback = alarm => {
|
||||
fire(alarm.data);
|
||||
fire.sync(alarm.data);
|
||||
};
|
||||
|
||||
alarmCallbacksMap.get(extension).add(callback);
|
||||
|
@ -9,7 +9,7 @@ XPCOMUtils.defineLazyModuleGetter(this, "ContextualIdentityService",
|
||||
"resource://gre/modules/ContextualIdentityService.jsm");
|
||||
|
||||
var {
|
||||
EventManager,
|
||||
SingletonEventManager,
|
||||
} = ExtensionUtils;
|
||||
|
||||
var DEFAULT_STORE = "firefox-default";
|
||||
@ -438,13 +438,13 @@ extensions.registerSchemaAPI("cookies", "addon_parent", context => {
|
||||
return Promise.resolve(result);
|
||||
},
|
||||
|
||||
onChanged: new EventManager(context, "cookies.onChanged", fire => {
|
||||
onChanged: new SingletonEventManager(context, "cookies.onChanged", fire => {
|
||||
let observer = (subject, topic, data) => {
|
||||
let notify = (removed, cookie, cause) => {
|
||||
cookie.QueryInterface(Ci.nsICookie2);
|
||||
|
||||
if (extension.whiteListedHosts.matchesCookie(cookie)) {
|
||||
fire({removed, cookie: convert({cookie, isPrivate: topic == "private-cookie-changed"}), cause});
|
||||
fire.async({removed, cookie: convert({cookie, isPrivate: topic == "private-cookie-changed"}), cause});
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -8,7 +8,7 @@ XPCOMUtils.defineLazyModuleGetter(this, "EventEmitter",
|
||||
"resource://devtools/shared/event-emitter.js");
|
||||
|
||||
var {
|
||||
EventManager,
|
||||
SingletonEventManager,
|
||||
ignoreEvent,
|
||||
} = ExtensionUtils;
|
||||
|
||||
@ -131,10 +131,10 @@ extensions.registerSchemaAPI("notifications", "addon_parent", context => {
|
||||
return Promise.resolve(result);
|
||||
},
|
||||
|
||||
onClosed: new EventManager(context, "notifications.onClosed", fire => {
|
||||
onClosed: new SingletonEventManager(context, "notifications.onClosed", fire => {
|
||||
let listener = (event, notificationId) => {
|
||||
// FIXME: Support the byUser argument.
|
||||
fire(notificationId, true);
|
||||
fire.async(notificationId, true);
|
||||
};
|
||||
|
||||
notificationsMap.get(extension).on("closed", listener);
|
||||
@ -143,9 +143,9 @@ extensions.registerSchemaAPI("notifications", "addon_parent", context => {
|
||||
};
|
||||
}).api(),
|
||||
|
||||
onClicked: new EventManager(context, "notifications.onClicked", fire => {
|
||||
onClicked: new SingletonEventManager(context, "notifications.onClicked", fire => {
|
||||
let listener = (event, notificationId) => {
|
||||
fire(notificationId, true);
|
||||
fire.async(notificationId, true);
|
||||
};
|
||||
|
||||
notificationsMap.get(extension).on("clicked", listener);
|
||||
|
@ -11,8 +11,8 @@ XPCOMUtils.defineLazyModuleGetter(this, "AddonManagerPrivate",
|
||||
|
||||
Cu.import("resource://gre/modules/ExtensionUtils.jsm");
|
||||
var {
|
||||
EventManager,
|
||||
ExtensionError,
|
||||
SingletonEventManager,
|
||||
} = ExtensionUtils;
|
||||
|
||||
function enforceNoTemporaryAddon(extensionId) {
|
||||
@ -63,12 +63,12 @@ function storageApiFactory(context) {
|
||||
},
|
||||
},
|
||||
|
||||
onChanged: new EventManager(context, "storage.onChanged", fire => {
|
||||
onChanged: new SingletonEventManager(context, "storage.onChanged", fire => {
|
||||
let listenerLocal = changes => {
|
||||
fire(changes, "local");
|
||||
fire.async(changes, "local");
|
||||
};
|
||||
let listenerSync = changes => {
|
||||
fire(changes, "sync");
|
||||
fire.async(changes, "sync");
|
||||
};
|
||||
|
||||
ExtensionStorage.addOnChangedListener(extension.id, listenerLocal);
|
||||
|
Loading…
Reference in New Issue
Block a user