Index: chrome/renderer/resources/extensions/extension_options.js |
diff --git a/chrome/renderer/resources/extensions/extension_options.js b/chrome/renderer/resources/extensions/extension_options.js |
index cc42d7fb4b156bcff285dafd53e8e03a7e999bbb..4e896697e589e2240989bd77b58de3dca770b38e 100644 |
--- a/chrome/renderer/resources/extensions/extension_options.js |
+++ b/chrome/renderer/resources/extensions/extension_options.js |
@@ -16,6 +16,13 @@ function ExtensionOptionsInternal(extensionoptionsNode) { |
// on* Event handlers. |
this.eventHandlers = {}; |
+ |
+ // setupEventProperty is normally called in extension_options_events.js to |
+ // register events, but the createfailed event is registered here because |
+ // the event is fired from here instead of through |
+ // extension_options_events.js. |
+ this.setupEventProperty('createfailed'); |
+ |
new ExtensionOptionsEvents(this, this.viewInstanceId); |
this.setupNodeProperties(); |
@@ -48,7 +55,15 @@ ExtensionOptionsInternal.prototype.createGuest = function() { |
params, |
function(instanceId) { |
if (instanceId == 0) { |
+ // Fire a createfailed event here rather than in ExtensionOptionsGuest |
+ // because the guest will not be created, and cannot fire an event. |
self.initCalled = false; |
+ var createFailedEvent = new Event('createfailed', { |
+ bubbles: true, |
+ supportsListeners: true, |
+ supportsFilters: true |
Fady Samuel
2014/08/06 21:46:44
supportsListeners and supportsFilters is not relev
ericzeng
2014/08/06 23:49:24
Done.
|
+ }); |
+ self.dispatchEvent(createFailedEvent); |
} else { |
self.attachWindow(instanceId); |
} |
@@ -93,13 +108,8 @@ ExtensionOptionsInternal.prototype.init = function() { |
ExtensionOptionsInternal.prototype.parseExtensionAttribute = function() { |
if (this.extensionoptionsNode.hasAttribute('extension')) { |
- var extensionId = this.extensionoptionsNode.getAttribute('extension'); |
- // Only allow extensions to embed their own options page (if it has one). |
- if (chrome.runtime.id == extensionId && |
- chrome.runtime.getManifest().hasOwnProperty('options_page')) { |
- this.extensionId = extensionId; |
- return true; |
- } |
+ this.extensionId = this.extensionoptionsNode.getAttribute('extension'); |
+ return true; |
} |
return false; |
}; |