Bug 1223585 - [webext] Annotate ignoreEvent (r=kmag)

This commit is contained in:
Bill McCloskey 2015-11-10 14:13:02 -08:00
parent fb73ec3419
commit 2639bfa14e
14 changed files with 27 additions and 17 deletions

View File

@ -6,7 +6,6 @@ var Bookmarks = PlacesUtils.bookmarks;
Cu.import("resource://gre/modules/ExtensionUtils.jsm"); Cu.import("resource://gre/modules/ExtensionUtils.jsm");
var { var {
EventManager, EventManager,
ignoreEvent,
runSafe, runSafe,
} = ExtensionUtils; } = ExtensionUtils;

View File

@ -11,7 +11,6 @@ Cu.import("resource://gre/modules/ExtensionUtils.jsm");
var { var {
EventManager, EventManager,
DefaultWeakMap, DefaultWeakMap,
ignoreEvent,
runSafe, runSafe,
} = ExtensionUtils; } = ExtensionUtils;

View File

@ -6,7 +6,6 @@ Cu.import("resource://gre/modules/ExtensionUtils.jsm");
var { var {
EventManager, EventManager,
DefaultWeakMap, DefaultWeakMap,
ignoreEvent,
runSafe, runSafe,
} = ExtensionUtils; } = ExtensionUtils;

View File

@ -230,7 +230,7 @@ extensions.registerAPI((extension, context) => {
}; };
}).api(), }).api(),
onReplaced: ignoreEvent(), onReplaced: ignoreEvent(context, "tabs.onReplaced"),
onRemoved: new EventManager(context, "tabs.onRemoved", fire => { onRemoved: new EventManager(context, "tabs.onRemoved", fire => {
let tabListener = event => { let tabListener = event => {

View File

@ -5,7 +5,6 @@ XPCOMUtils.defineLazyServiceGetter(this, "aboutNewTabService",
Cu.import("resource://gre/modules/ExtensionUtils.jsm"); Cu.import("resource://gre/modules/ExtensionUtils.jsm");
var { var {
EventManager, EventManager,
ignoreEvent,
runSafe, runSafe,
} = ExtensionUtils; } = ExtensionUtils;

View File

@ -33,7 +33,6 @@ var {
runSafeSyncWithoutClone, runSafeSyncWithoutClone,
MessageBroker, MessageBroker,
Messenger, Messenger,
ignoreEvent,
injectAPI, injectAPI,
flushJarCache, flushJarCache,
} = ExtensionUtils; } = ExtensionUtils;

View File

@ -245,12 +245,27 @@ SingletonEventManager.prototype = {
}; };
// Simple API for event listeners where events never fire. // Simple API for event listeners where events never fire.
function ignoreEvent() function ignoreEvent(context, name)
{ {
return { return {
addListener: function(context, callback) {}, addListener: function(callback) {
removeListener: function(context, callback) {}, let id = context.extension.id;
hasListener: function(context, callback) {}, let frame = Components.stack.caller;
let msg = `In add-on ${id}, attempting to use listener "${name}", which is unimplemented.`;
let winID = context.contentWindow.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils).currentInnerWindowID;
let scriptError = Cc["@mozilla.org/scripterror;1"]
.createInstance(Ci.nsIScriptError);
scriptError.initWithWindowID(msg, frame.filename, null,
frame.lineNumber, frame.columnNumber,
Ci.nsIScriptError.warningFlag,
"content javascript", winID);
let consoleService = Cc['@mozilla.org/consoleservice;1']
.getService(Ci.nsIConsoleService);
consoleService.logMessage(scriptError);
},
removeListener: function(callback) {},
hasListener: function(callback) {},
}; };
} }

View File

@ -3,7 +3,6 @@ var { classes: Cc, interfaces: Ci, utils: Cu } = Components;
Cu.import("resource://gre/modules/ExtensionUtils.jsm"); Cu.import("resource://gre/modules/ExtensionUtils.jsm");
var { var {
EventManager, EventManager,
ignoreEvent,
runSafe, runSafe,
} = ExtensionUtils; } = ExtensionUtils;

View File

@ -2,7 +2,6 @@ const { interfaces: Ci, utils: Cu } = Components;
Cu.import("resource://gre/modules/ExtensionUtils.jsm"); Cu.import("resource://gre/modules/ExtensionUtils.jsm");
var { var {
EventManager, EventManager,
ignoreEvent,
runSafe, runSafe,
} = ExtensionUtils; } = ExtensionUtils;

View File

@ -138,8 +138,8 @@ extensions.registerPrivilegedAPI("notifications", (extension, context) => {
}).api(), }).api(),
// FIXME // FIXME
onButtonClicked: ignoreEvent(), onButtonClicked: ignoreEvent(context, "notifications.onButtonClicked"),
onClicked: ignoreEvent(), onClicked: ignoreEvent(context, "notifications.onClicked"),
}, },
}; };
}); });

View File

@ -37,7 +37,7 @@ extensions.registerAPI((extension, context) => {
}; };
}).api(), }).api(),
onInstalled: ignoreEvent(), onInstalled: ignoreEvent(context, "runtime.onInstalled"),
onMessage: context.messenger.onMessage("runtime.onMessage"), onMessage: context.messenger.onMessage("runtime.onMessage"),

View File

@ -6,7 +6,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "ExtensionStorage",
Cu.import("resource://gre/modules/ExtensionUtils.jsm"); Cu.import("resource://gre/modules/ExtensionUtils.jsm");
var { var {
EventManager, EventManager,
ignoreEvent,
runSafe, runSafe,
} = ExtensionUtils; } = ExtensionUtils;

View File

@ -68,7 +68,7 @@ extensions.registerPrivilegedAPI("webNavigation", (extension, context) => {
onCompleted: new WebNavigationEventManager(context, "onCompleted").api(), onCompleted: new WebNavigationEventManager(context, "onCompleted").api(),
onErrorOccurred: new WebNavigationEventManager(context, "onErrorOccurred").api(), onErrorOccurred: new WebNavigationEventManager(context, "onErrorOccurred").api(),
onReferenceFragmentUpdated: new WebNavigationEventManager(context, "onReferenceFragmentUpdated").api(), onReferenceFragmentUpdated: new WebNavigationEventManager(context, "onReferenceFragmentUpdated").api(),
onCreatedNavigationTarget: ignoreEvent(), onCreatedNavigationTarget: ignoreEvent(context, "webNavigation.onCreatedNavigationTarget"),
}, },
}; };
}); });

View File

@ -17,6 +17,9 @@ add_task(function* test_notifications() {
var opts = {title: "Testing Notification", message: "Carry on"}; var opts = {title: "Testing Notification", message: "Carry on"};
// Test an unimplemented listener.
browser.notifications.onClicked.addListener(function() {});
browser.notifications.create("5", opts, function(id) { browser.notifications.create("5", opts, function(id) {
browser.test.sendMessage("running", id); browser.test.sendMessage("running", id);
browser.test.notifyPass("background test passed"); browser.test.notifyPass("background test passed");