| 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..189a2f110a7e74f9a2750864ee251fad5ece6d87 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');
|
| +
|
| 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) {
|
| + 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]);
|
| }
|
|
|