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..e31d0f3e727211cc50a3e435620cd12b9e851dfd 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('webview.on' + name, undefined, eventOpts); |
| +}; |
| + |
| +var loadCommitEvent = createEvent('LoadCommit'); |
|
Matt Perry
2013/06/20 00:31:34
I would put the full name in here as well... easie
Fady Samuel
2013/06/20 00:55:14
Done.
|
| + |
| 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]); |
| } |