Chromium Code Reviews| 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]); |
| } |