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");
var {
EventManager,
ignoreEvent,
runSafe,
} = ExtensionUtils;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -245,12 +245,27 @@ SingletonEventManager.prototype = {
};
// Simple API for event listeners where events never fire.
function ignoreEvent()
function ignoreEvent(context, name)
{
return {
addListener: function(context, callback) {},
removeListener: function(context, callback) {},
hasListener: function(context, callback) {},
addListener: function(callback) {
let id = context.extension.id;
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");
var {
EventManager,
ignoreEvent,
runSafe,
} = ExtensionUtils;

View File

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

View File

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

View File

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

View File

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

View File

@ -68,7 +68,7 @@ extensions.registerPrivilegedAPI("webNavigation", (extension, context) => {
onCompleted: new WebNavigationEventManager(context, "onCompleted").api(),
onErrorOccurred: new WebNavigationEventManager(context, "onErrorOccurred").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"};
// Test an unimplemented listener.
browser.notifications.onClicked.addListener(function() {});
browser.notifications.create("5", opts, function(id) {
browser.test.sendMessage("running", id);
browser.test.notifyPass("background test passed");