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

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

Issue 11368071: browser-plugin: Remove event handling code, and use CustomEvents in webkit instead. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 1 month 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 2a299f7a1dc5ca55706b0f09f22daaf37c8034a8..5d14f046c31f615465cf7fe51705a42df3d08e10 100644
--- a/chrome/renderer/resources/extensions/web_view.js
+++ b/chrome/renderer/resources/extensions/web_view.js
@@ -14,18 +14,26 @@ var WEB_VIEW_READONLY_ATTRIBUTES = ['contentWindow'];
// All exposed api methods for <webview>, these are forwarded to the browser
// plugin.
var WEB_VIEW_API_METHODS = [
- 'addEventListener',
- 'back',
- 'canGoBack',
- 'canGoForward',
- 'forward',
- 'getProcessId',
- 'go',
- 'reload',
- 'removeEventListener',
- 'stop',
- 'terminate'
- ];
+ 'back',
+ 'canGoBack',
+ 'canGoForward',
+ 'forward',
+ 'getProcessId',
+ 'go',
+ 'reload',
+ 'stop',
+ 'terminate'
+];
+
+var WEB_VIEW_EVENTS = {
+ 'exit' : [ 'processId', 'reason' ],
arv (Not doing code reviews) 2012/11/12 22:58:07 no ws after [ nor before ]
sadrul 2012/11/12 23:03:21 Done.
+ 'loadabort' : [ 'url', 'isTopLevel', 'reason' ],
+ 'loadcommit' : [ 'url', 'isTopLevel' ],
+ 'loadredirect' : [ 'oldurl', 'newurl', 'isTopLevel' ],
+ 'loadstart' : [ 'url', 'isTopLevel' ],
+ 'loadstop' : [],
+ 'sizechanged': [ 'oldHeight', 'oldWidth', 'newHeight', 'newWidth' ],
+};
window.addEventListener('DOMContentLoaded', function() {
// Handle <webview> tags already in the document.
@@ -111,6 +119,10 @@ function WebView(node) {
enumerable: true
})
}, this);
+
+ for (eventname in WEB_VIEW_EVENTS) {
arv (Not doing code reviews) 2012/11/12 22:58:07 eventName
arv (Not doing code reviews) 2012/11/12 22:58:07 missing var You should really use strict mode for
sadrul 2012/11/12 23:03:21 Done.
sadrul 2012/11/12 23:03:21 Done.
+ this.setupEvent_(eventname, WEB_VIEW_EVENTS[eventname]);
+ }
};
/**
@@ -138,3 +150,18 @@ WebView.prototype.copyAttribute_ = function(attributeName) {
this.objectNode_.setAttribute(
attributeName, this.node_.getAttribute(attributeName));
};
+
+/**
+ * @private
+ */
+WebView.prototype.setupEvent_ = function(eventname, attribs) {
+ var node = this.node_;
+ this.objectNode_.addEventListener('-internal-' + eventname, function(e) {
+ var evt = new Event(eventname);
+ var detail = e.detail ? JSON.parse(e.detail) : {};
+ attribs.forEach(function(attribname) {
arv (Not doing code reviews) 2012/11/12 22:58:07 attribName
sadrul 2012/11/12 23:03:21 Done.
+ evt[attribname] = detail[attribname];
+ });
+ node.dispatchEvent(evt);
+ });
+}

Powered by Google App Engine
This is Rietveld 408576698