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

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

Issue 17165004: <webview>: Partially migrate loadcommit event from content to chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed unnecessary line of code Created 7 years, 6 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/web_view.js
diff --git a/chrome/renderer/resources/extensions/web_view.js b/chrome/renderer/resources/extensions/web_view.js
index 833778252c2a2e2d01028b770a2d04c0de37484f..1ddf4e7b6c2c94eeeff456d21eae17d42e800ec2 100644
--- a/chrome/renderer/resources/extensions/web_view.js
+++ b/chrome/renderer/resources/extensions/web_view.js
@@ -8,6 +8,7 @@
// are hidden via Shadow DOM.
var watchForTag = require('tagWatcher').watchForTag;
+var eventBindings = require('event_bindings');
/** @type {Array.<string>} */
var WEB_VIEW_ATTRIBUTES = ['name', 'src', 'partition', 'autosize', 'minheight',
@@ -43,6 +44,13 @@ var WEB_VIEW_EVENTS = {
'unresponsive' : ['processId']
};
+var createEvent = function(name) {
+ var eventOpts = { supportsListeners: true, supportsFilters: true };
lazyboy 2013/06/19 19:22:16 nit: here and below: no space after { and before }
Fady Samuel 2013/06/19 19:42:11 Done.
+ return new eventBindings.Event('webview.on' + name, undefined, eventOpts);
+};
+
+var loadCommitEvent = createEvent('loadcommit');
+
window.addEventListener('DOMContentLoaded', function() {
watchForTag('WEBVIEW', function(addedNode) { new WebView(addedNode); });
});
@@ -252,6 +260,21 @@ WebView.prototype.handleBrowserPluginAttributeMutation_ = function(mutation) {
* @private
*/
WebView.prototype.setupWebviewNodeEvents_ = function() {
+ var webviewNode = this.webviewNode_;
+ // TODO(fsamuel): Generalize this further as we add more events.
+ var onAttached = function(e) {
+ var detail = e.detail ? JSON.parse(e.detail) : {};
+ loadCommitEvent.addListener(function(event) {
lazyboy 2013/06/19 19:22:16 How is it ensured that loadcommit event doesn't re
Fady Samuel 2013/06/19 19:42:11 No content is loaded prior to attachment. We fire
+ var evt = new Event('loadcommit', { bubbles: true });
lazyboy 2013/06/19 19:22:16 e event evt are kind of hard to read here. s/evt/w
Fady Samuel 2013/06/19 19:42:11 Done.
+ var attribs = WEB_VIEW_EVENTS['loadcommit'];
+ $Array.forEach(attribs, function(attribName) {
+ evt[attribName] = event[attribName];
+ });
+ webviewNode.dispatchEvent(evt);
+ }, { instanceId: detail.windowId });
+ };
+ this.browserPluginNode_.addEventListener('-internal-attached', onAttached);
+
for (var eventName in WEB_VIEW_EVENTS) {
this.setupEvent_(eventName, WEB_VIEW_EVENTS[eventName]);
}

Powered by Google App Engine
This is Rietveld 408576698