Index: chrome/renderer/resources/extensions/event.js |
diff --git a/chrome/renderer/resources/extensions/event.js b/chrome/renderer/resources/extensions/event.js |
index f342014fdda09db0652e8d08c3778d0f9e3c99f9..19419fbd8264ac2d8cb4632dfc32ddeb785a23b0 100644 |
--- a/chrome/renderer/resources/extensions/event.js |
+++ b/chrome/renderer/resources/extensions/event.js |
@@ -158,6 +158,24 @@ |
return result; |
}; |
+ chromeHidden.parseEventOptions = function(opt_eventOptions) { |
+ function merge(dest, src) { |
+ for (var k in src) { |
+ if (!dest.hasOwnProperty(k)) { |
+ dest[k] = src[k]; |
+ } |
+ } |
+ } |
+ |
+ var options = opt_eventOptions || {}; |
+ merge(options, |
+ {supportsFilters: false, |
+ supportsListeners: true, |
+ supportsRules: false, |
+ }); |
+ return options; |
+ }; |
+ |
// Event object. If opt_eventName is provided, this object represents |
// the unique instance of that named event, and dispatching an event |
// with that name will route through this object's listeners. Note that |
@@ -174,11 +192,7 @@ |
chrome.Event = function(opt_eventName, opt_argSchemas, opt_eventOptions) { |
this.eventName_ = opt_eventName; |
this.listeners_ = []; |
- this.eventOptions_ = opt_eventOptions || |
- {supportsFilters: false, |
- supportsListeners: true, |
- supportsRules: false, |
- }; |
+ this.eventOptions_ = chromeHidden.parseEventOptions(opt_eventOptions); |
if (this.eventOptions_.supportsRules && !opt_eventName) |
throw new Error("Events that support rules require an event name."); |
@@ -207,6 +221,7 @@ |
} |
}; |
+ |
chromeHidden.Event = {}; |
// callback is a function(args, dispatch). args are the args we receive from |