| Index: extensions/renderer/resources/guest_view/web_view_action_requests.js
|
| diff --git a/extensions/renderer/resources/guest_view/web_view_action_requests.js b/extensions/renderer/resources/guest_view/web_view_action_requests.js
|
| deleted file mode 100644
|
| index 21cc7b1723244282ef42c9d6650985fe9ba4a4b2..0000000000000000000000000000000000000000
|
| --- a/extensions/renderer/resources/guest_view/web_view_action_requests.js
|
| +++ /dev/null
|
| @@ -1,260 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// This module implements helper objects for the dialog, newwindow, and
|
| -// permissionrequest <webview> events.
|
| -
|
| -var MessagingNatives = requireNative('messaging_natives');
|
| -var WebViewConstants = require('webViewConstants').WebViewConstants;
|
| -var WebViewInternal = require('webViewInternal').WebViewInternal;
|
| -
|
| -var PERMISSION_TYPES = ['media',
|
| - 'geolocation',
|
| - 'pointerLock',
|
| - 'download',
|
| - 'loadplugin',
|
| - 'filesystem'];
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -// WebViewActionRequest object.
|
| -
|
| -// Default partial implementation of a webview action request.
|
| -function WebViewActionRequest(webViewImpl, event, webViewEvent, interfaceName) {
|
| - this.webViewImpl = webViewImpl;
|
| - this.event = event;
|
| - this.webViewEvent = webViewEvent;
|
| - this.interfaceName = interfaceName;
|
| - this.guestInstanceId = this.webViewImpl.guest.getId();
|
| - this.requestId = event.requestId;
|
| - this.actionTaken = false;
|
| -}
|
| -
|
| -// Performs the default action for the request.
|
| -WebViewActionRequest.prototype.defaultAction = function() {
|
| - // Do nothing if the action has already been taken or the requester is
|
| - // already gone (in which case its guestInstanceId will be stale).
|
| - if (this.actionTaken ||
|
| - this.guestInstanceId != this.webViewImpl.guest.getId()) {
|
| - return;
|
| - }
|
| -
|
| - this.actionTaken = true;
|
| - WebViewInternal.setPermission(this.guestInstanceId, this.requestId,
|
| - 'default', '', function(allowed) {
|
| - if (allowed) {
|
| - return;
|
| - }
|
| - this.showWarningMessage();
|
| - }.bind(this));
|
| -};
|
| -
|
| -// Called to handle the action request's event.
|
| -WebViewActionRequest.prototype.handleActionRequestEvent = function() {
|
| - // Construct the interface object and attach it to |webViewEvent|.
|
| - var request = this.getInterfaceObject();
|
| - this.webViewEvent[this.interfaceName] = request;
|
| -
|
| - var defaultPrevented = !this.webViewImpl.dispatchEvent(this.webViewEvent);
|
| - // Set |webViewEvent| to null to break the circular reference to |request| so
|
| - // that the garbage collector can eventually collect it.
|
| - this.webViewEvent = null;
|
| - if (this.actionTaken) {
|
| - return;
|
| - }
|
| -
|
| - if (defaultPrevented) {
|
| - // Track the lifetime of |request| with the garbage collector.
|
| - MessagingNatives.BindToGC(request, this.defaultAction.bind(this));
|
| - } else {
|
| - this.defaultAction();
|
| - }
|
| -};
|
| -
|
| -// Displays a warning message when an action request is blocked by default.
|
| -WebViewActionRequest.prototype.showWarningMessage = function() {
|
| - window.console.warn(this.WARNING_MSG_REQUEST_BLOCKED);
|
| -};
|
| -
|
| -// This function ensures that each action is taken at most once.
|
| -WebViewActionRequest.prototype.validateCall = function() {
|
| - if (this.actionTaken) {
|
| - throw new Error(this.ERROR_MSG_ACTION_ALREADY_TAKEN);
|
| - }
|
| - this.actionTaken = true;
|
| -};
|
| -
|
| -// The following are implemented by the specific action request.
|
| -
|
| -// Returns the interface object for this action request.
|
| -WebViewActionRequest.prototype.getInterfaceObject = undefined;
|
| -
|
| -// Error/warning messages.
|
| -WebViewActionRequest.prototype.ERROR_MSG_ACTION_ALREADY_TAKEN = undefined;
|
| -WebViewActionRequest.prototype.WARNING_MSG_REQUEST_BLOCKED = undefined;
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -// Dialog object.
|
| -
|
| -// Represents a dialog box request (e.g. alert()).
|
| -function Dialog(webViewImpl, event, webViewEvent) {
|
| - WebViewActionRequest.call(this, webViewImpl, event, webViewEvent, 'dialog');
|
| -
|
| - this.handleActionRequestEvent();
|
| -}
|
| -
|
| -Dialog.prototype.__proto__ = WebViewActionRequest.prototype;
|
| -
|
| -Dialog.prototype.getInterfaceObject = function() {
|
| - return {
|
| - ok: function(user_input) {
|
| - this.validateCall();
|
| - user_input = user_input || '';
|
| - WebViewInternal.setPermission(
|
| - this.guestInstanceId, this.requestId, 'allow', user_input);
|
| - }.bind(this),
|
| - cancel: function() {
|
| - this.validateCall();
|
| - WebViewInternal.setPermission(
|
| - this.guestInstanceId, this.requestId, 'deny');
|
| - }.bind(this)
|
| - };
|
| -};
|
| -
|
| -Dialog.prototype.showWarningMessage = function() {
|
| - var VOWELS = ['a', 'e', 'i', 'o', 'u'];
|
| - var dialogType = this.event.messageType;
|
| - var article = (VOWELS.indexOf(dialogType.charAt(0)) >= 0) ? 'An' : 'A';
|
| - this.WARNING_MSG_REQUEST_BLOCKED = this.WARNING_MSG_REQUEST_BLOCKED.
|
| - replace('%1', article).replace('%2', dialogType);
|
| - window.console.warn(this.WARNING_MSG_REQUEST_BLOCKED);
|
| -};
|
| -
|
| -Dialog.prototype.ERROR_MSG_ACTION_ALREADY_TAKEN =
|
| - WebViewConstants.ERROR_MSG_DIALOG_ACTION_ALREADY_TAKEN;
|
| -Dialog.prototype.WARNING_MSG_REQUEST_BLOCKED =
|
| - WebViewConstants.WARNING_MSG_DIALOG_REQUEST_BLOCKED;
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -// NewWindow object.
|
| -
|
| -// Represents a new window request.
|
| -function NewWindow(webViewImpl, event, webViewEvent) {
|
| - WebViewActionRequest.call(this, webViewImpl, event, webViewEvent, 'window');
|
| -
|
| - this.handleActionRequestEvent();
|
| -}
|
| -
|
| -NewWindow.prototype.__proto__ = WebViewActionRequest.prototype;
|
| -
|
| -NewWindow.prototype.getInterfaceObject = function() {
|
| - return {
|
| - attach: function(webview) {
|
| - this.validateCall();
|
| - if (!webview || !webview.tagName || webview.tagName != 'WEBVIEW') {
|
| - throw new Error(ERROR_MSG_WEBVIEW_EXPECTED);
|
| - }
|
| -
|
| - var webViewImpl = privates(webview).internal;
|
| - // Update the partition.
|
| - if (this.event.partition) {
|
| - webViewImpl.onAttach(this.event.partition);
|
| - }
|
| -
|
| - var attached = webViewImpl.attachWindow(this.event.windowId);
|
| - if (!attached) {
|
| - window.console.error(ERROR_MSG_NEWWINDOW_UNABLE_TO_ATTACH);
|
| - }
|
| -
|
| - if (this.guestInstanceId != this.webViewImpl.guest.getId()) {
|
| - // If the opener is already gone, then its guestInstanceId will be
|
| - // stale.
|
| - return;
|
| - }
|
| -
|
| - // If the object being passed into attach is not a valid <webview>
|
| - // then we will fail and it will be treated as if the new window
|
| - // was rejected. The permission API plumbing is used here to clean
|
| - // up the state created for the new window if attaching fails.
|
| - WebViewInternal.setPermission(this.guestInstanceId, this.requestId,
|
| - attached ? 'allow' : 'deny');
|
| - }.bind(this),
|
| - discard: function() {
|
| - this.validateCall();
|
| - if (!this.guestInstanceId) {
|
| - // If the opener is already gone, then we won't have its
|
| - // guestInstanceId.
|
| - return;
|
| - }
|
| - WebViewInternal.setPermission(
|
| - this.guestInstanceId, this.requestId, 'deny');
|
| - }.bind(this)
|
| - };
|
| -};
|
| -
|
| -NewWindow.prototype.ERROR_MSG_ACTION_ALREADY_TAKEN =
|
| - WebViewConstants.ERROR_MSG_NEWWINDOW_ACTION_ALREADY_TAKEN;
|
| -NewWindow.prototype.WARNING_MSG_REQUEST_BLOCKED =
|
| - WebViewConstants.WARNING_MSG_NEWWINDOW_REQUEST_BLOCKED;
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -// PermissionRequest object.
|
| -
|
| -// Represents a permission request (e.g. to access the filesystem).
|
| -function PermissionRequest(webViewImpl, event, webViewEvent) {
|
| - WebViewActionRequest.call(this, webViewImpl, event, webViewEvent, 'request');
|
| -
|
| - if (!this.validPermissionCheck()) {
|
| - return;
|
| - }
|
| -
|
| - this.handleActionRequestEvent();
|
| -}
|
| -
|
| -PermissionRequest.prototype.__proto__ = WebViewActionRequest.prototype;
|
| -
|
| -PermissionRequest.prototype.getInterfaceObject = function() {
|
| - return {
|
| - allow: function() {
|
| - this.validateCall();
|
| - WebViewInternal.setPermission(
|
| - this.guestInstanceId, this.requestId, 'allow');
|
| - }.bind(this),
|
| - deny: function() {
|
| - this.validateCall();
|
| - WebViewInternal.setPermission(
|
| - this.guestInstanceId, this.requestId, 'deny');
|
| - }.bind(this)
|
| - };
|
| -};
|
| -
|
| -PermissionRequest.prototype.showWarningMessage = function() {
|
| - window.console.warn(
|
| - this.WARNING_MSG_REQUEST_BLOCKED.replace('%1', this.event.permission));
|
| -};
|
| -
|
| -// Checks that the requested permission is valid. Returns true if valid.
|
| -PermissionRequest.prototype.validPermissionCheck = function() {
|
| - if (PERMISSION_TYPES.indexOf(this.event.permission) < 0) {
|
| - // The permission type is not allowed. Trigger the default response.
|
| - this.defaultAction();
|
| - return false;
|
| - }
|
| - return true;
|
| -};
|
| -
|
| -PermissionRequest.prototype.ERROR_MSG_ACTION_ALREADY_TAKEN =
|
| - WebViewConstants.ERROR_MSG_PERMISSION_ACTION_ALREADY_TAKEN;
|
| -PermissionRequest.prototype.WARNING_MSG_REQUEST_BLOCKED =
|
| - WebViewConstants.WARNING_MSG_PERMISSION_REQUEST_BLOCKED;
|
| -
|
| -// -----------------------------------------------------------------------------
|
| -
|
| -var WebViewActionRequests = {
|
| - WebViewActionRequest: WebViewActionRequest,
|
| - Dialog: Dialog,
|
| - NewWindow: NewWindow,
|
| - PermissionRequest: PermissionRequest
|
| -};
|
| -
|
| -exports.WebViewActionRequests = WebViewActionRequests;
|
|
|