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

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

Issue 11093080: <webview>: First stab at implementing media permission request for guests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reup patch, with new style event handling + fix tests. 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 13331c49bc21b843e98bdd4699766c430f39df3c..335a2887bdee048b3282fa1839ebd86ee4aee923 100644
--- a/chrome/renderer/resources/extensions/web_view.js
+++ b/chrome/renderer/resources/extensions/web_view.js
@@ -123,6 +123,34 @@ function WebView(node) {
for (var eventName in WEB_VIEW_EVENTS) {
this.setupEvent_(eventName, WEB_VIEW_EVENTS[eventName]);
}
+ this.setupPermissionRequestEvent_();
+}
+
+/**
+ * @private
+ */
+WebView.prototype.setupPermissionRequestEvent_ = function(mutation) {
sadrul 2012/11/16 03:59:53 Can setupEvent_ be reused for this? setupEvent_ ca
lazyboy 2012/11/16 06:27:09 Yes that makes sense. Done.
+ var node = this.node_;
+ var objectNode = this.objectNode_;
+ this.objectNode_.addEventListener('-internal-permissionrequest', function(e) {
+ var detail = e.detail ? JSON.parse(e.detail) : {};
+ if (detail.reason == 'media') {
+ var request_id = detail.request_id;
+ if (request_id !== undefined) {
+ var evt = new Event('permissionrequest');
+ // TODO(lazyboy): Also fill in evt.url and evt.details (see webview
+ // specs).
+ evt.reason = detail.reason;
+ evt.allow = function() {
+ objectNode.setMediaPermission(request_id, true /* allow */);
+ };
+ evt.deny = function() {
+ objectNode.setMediaPermission(request_id, false /* allow */);
Fady Samuel 2012/11/16 03:42:59 This looks good. Looks like what we discussed.
+ }
+ node.dispatchEvent(evt);
+ }
+ }
+ });
};
/**

Powered by Google App Engine
This is Rietveld 408576698