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

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

Issue 24576003: <webview>: Change how plugin load works inside guests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 3 months 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
« no previous file with comments | « chrome/chrome_browser.gypi ('k') | chrome/renderer/resources/extensions/web_view_experimental.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 a14c3518b1dcdbeaac1464d5e4ebc743c97e48d9..f15a8dfba1d1b81ff46b22a2646b5446c553c281 100644
--- a/chrome/renderer/resources/extensions/web_view.js
+++ b/chrome/renderer/resources/extensions/web_view.js
@@ -111,7 +111,9 @@ var WEB_VIEW_EVENTS = {
},
evt: CreateEvent('webview.onPermissionRequest'),
fields: [
+ 'identifier',
'lastUnlockedBySelf',
+ 'name',
'permission',
'requestMethod',
'url',
@@ -751,7 +753,16 @@ WebViewInternal.prototype.handlePermissionEvent_ =
console.warn(WARNING_MSG_PERMISSION_DENIED.replace('%1', permission));
};
- var PERMISSION_TYPES = this.getPermissionTypes_();
+ var PERMISSION_TYPES = this.getPermissionTypes_().concat(
+ this.maybeGetExperimentalPermissions_());
+ if (PERMISSION_TYPES.indexOf(event.permission) < 0) {
+ // The permission type is not allowed. Trigger the default response.
+ var defaultPermission = this.getDefaultPermission_(event);
+ WebView.setPermission(self.instanceId_, requestId, defaultPermission, '');
+ if (!defaultPermission)
+ showWarningMessage(event.permission);
+ return;
+ }
var self = this;
var browserPluginNode = this.browserPluginNode_;
@@ -785,6 +796,7 @@ WebViewInternal.prototype.handlePermissionEvent_ =
return;
}
+ var defaultPermission = this.getDefaultPermission_(event);
if (defaultPrevented) {
// Make browser plugin track lifetime of |request|.
MessagingNatives.BindToGC(request, function() {
@@ -792,13 +804,15 @@ WebViewInternal.prototype.handlePermissionEvent_ =
if (decisionMade) {
return;
}
- WebView.setPermission(self.instanceId_, requestId, false, '');
- showWarningMessage(event.permission);
+ WebView.setPermission(self.instanceId_, requestId, defaultPermission, '');
+ if (!defaultPermission)
+ showWarningMessage(event.permission);
});
} else {
decisionMade = true;
- WebView.setPermission(self.instanceId_, requestId, false, '');
- showWarningMessage(event.permission);
+ WebView.setPermission(self.instanceId_, requestId, defaultPermission, '');
+ if (!defaultPermission)
+ showWarningMessage(event.permission);
}
};
@@ -969,6 +983,20 @@ WebViewInternal.prototype.maybeGetExperimentalEvents_ = function() {};
*/
WebViewInternal.prototype.maybeAttachWebRequestEventToWebview_ = function() {};
+/**
+ * Implemented when the experimental API is available.
+ * @private
+ */
+WebViewInternal.prototype.maybeGetExperimentalPermissions_ = function() {
+ return [];
+};
+
+/** @private */
+WebViewInternal.prototype.getDefaultPermission_ = function(event) {
+ var PERMISSIONS_DEFAULT_ALLOWED = ['loadplugin'];
+ return PERMISSIONS_DEFAULT_ALLOWED.indexOf(event.permission) >= 0;
+};
+
exports.WebView = WebView;
exports.WebViewInternal = WebViewInternal;
exports.CreateEvent = CreateEvent;
« no previous file with comments | « chrome/chrome_browser.gypi ('k') | chrome/renderer/resources/extensions/web_view_experimental.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698