Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(251)

Unified Diff: chrome/renderer/resources/extensions/extension_options.js

Issue 429763002: Implement createfailed event for <extensionoptions> (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add more tests for bad extension id, nonexistent options page Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
};

Powered by Google App Engine
This is Rietveld 408576698