| 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 bfb3498fefdb415e242d05ad0bab27b850a2efd6..f4cc6ef5ffef32b23c58f148e7a9628029fe91bf 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};
|
| + return new eventBindings.Event(name, undefined, eventOpts);
|
| +};
|
| +
|
| +var loadCommitEvent = createEvent('webview.onLoadCommit');
|
| +
|
| // The <webview> tags we wish to watch for (watchForTag) does not belong to the
|
| // current scope's "document" reference. We need to wait until the document
|
| // begins loading, since only then will the "document" reference
|
| @@ -266,6 +274,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) {
|
| + var webviewEvent = new Event('loadcommit', {bubbles: true});
|
| + var attribs = WEB_VIEW_EVENTS['loadcommit'];
|
| + $Array.forEach(attribs, function(attribName) {
|
| + webviewEvent[attribName] = event[attribName];
|
| + });
|
| + webviewNode.dispatchEvent(webviewEvent);
|
| + }, {instanceId: detail.windowId});
|
| + };
|
| + this.browserPluginNode_.addEventListener('-internal-attached', onAttached);
|
| +
|
| for (var eventName in WEB_VIEW_EVENTS) {
|
| this.setupEvent_(eventName, WEB_VIEW_EVENTS[eventName]);
|
| }
|
|
|