Index: extensions/renderer/resources/guest_view/web_view.js |
diff --git a/extensions/renderer/resources/guest_view/web_view.js b/extensions/renderer/resources/guest_view/web_view.js |
deleted file mode 100644 |
index aa1d67d78d8282472a2629bccadae64f0ffa164b..0000000000000000000000000000000000000000 |
--- a/extensions/renderer/resources/guest_view/web_view.js |
+++ /dev/null |
@@ -1,234 +0,0 @@ |
-// Copyright (c) 2012 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 WebView (<webview>) as a custom element that wraps a |
-// BrowserPlugin object element. The object element is hidden within |
-// the shadow DOM of the WebView element. |
- |
-var DocumentNatives = requireNative('document_natives'); |
-var GuestView = require('guestView').GuestView; |
-var GuestViewContainer = require('guestViewContainer').GuestViewContainer; |
-var WebViewConstants = require('webViewConstants').WebViewConstants; |
-var WebViewEvents = require('webViewEvents').WebViewEvents; |
-var WebViewInternal = require('webViewInternal').WebViewInternal; |
- |
-// Represents the internal state of <webview>. |
-function WebViewImpl(webviewElement) { |
- GuestViewContainer.call(this, webviewElement, 'webview'); |
- |
- this.setupWebViewAttributes(); |
- this.setupElementProperties(); |
- |
- new WebViewEvents(this, this.viewInstanceId); |
-} |
- |
-WebViewImpl.prototype.__proto__ = GuestViewContainer.prototype; |
- |
-WebViewImpl.VIEW_TYPE = 'WebView'; |
- |
-// Add extra functionality to |this.element|. |
-WebViewImpl.setupElement = function(proto) { |
- // Public-facing API methods. |
- var apiMethods = WebViewImpl.getApiMethods(); |
- |
- // Add the experimental API methods, if available. |
- var experimentalApiMethods = |
- WebViewImpl.maybeGetExperimentalApiMethods(); |
- apiMethods = $Array.concat(apiMethods, experimentalApiMethods); |
- |
- // Create default implementations for undefined API methods. |
- var createDefaultApiMethod = function(m) { |
- return function(var_args) { |
- if (!this.guest.getId()) { |
- return false; |
- } |
- var args = $Array.concat([this.guest.getId()], $Array.slice(arguments)); |
- $Function.apply(WebViewInternal[m], null, args); |
- return true; |
- }; |
- }; |
- for (var i = 0; i != apiMethods.length; ++i) { |
- if (WebViewImpl.prototype[apiMethods[i]] == undefined) { |
- WebViewImpl.prototype[apiMethods[i]] = |
- createDefaultApiMethod(apiMethods[i]); |
- } |
- } |
- |
- // Forward proto.foo* method calls to WebViewImpl.foo*. |
- GuestViewContainer.forwardApiMethods(proto, apiMethods); |
-}; |
- |
-// Initiates navigation once the <webview> element is attached to the DOM. |
-WebViewImpl.prototype.onElementAttached = function() { |
- for (var i in this.attributes) { |
- this.attributes[i].attach(); |
- } |
-}; |
- |
-// Resets some state upon detaching <webview> element from the DOM. |
-WebViewImpl.prototype.onElementDetached = function() { |
- this.guest.destroy(); |
- for (var i in this.attributes) { |
- this.attributes[i].detach(); |
- } |
-}; |
- |
-// Sets the <webview>.request property. |
-WebViewImpl.prototype.setRequestPropertyOnWebViewElement = function(request) { |
- Object.defineProperty( |
- this.element, |
- 'request', |
- { |
- value: request, |
- enumerable: true |
- } |
- ); |
-}; |
- |
-WebViewImpl.prototype.setupElementProperties = function() { |
- // We cannot use {writable: true} property descriptor because we want a |
- // dynamic getter value. |
- Object.defineProperty(this.element, 'contentWindow', { |
- get: function() { |
- if (this.guest.getContentWindow()) { |
- return this.guest.getContentWindow(); |
- } |
- window.console.error( |
- WebViewConstants.ERROR_MSG_CONTENTWINDOW_NOT_AVAILABLE); |
- }.bind(this), |
- // No setter. |
- enumerable: true |
- }); |
-}; |
- |
-// This observer monitors mutations to attributes of the <webview>. |
-WebViewImpl.prototype.handleAttributeMutation = function( |
- attributeName, oldValue, newValue) { |
- if (!this.attributes[attributeName]) { |
- return; |
- } |
- |
- // Let the changed attribute handle its own mutation; |
- this.attributes[attributeName].maybeHandleMutation(oldValue, newValue); |
-}; |
- |
-WebViewImpl.prototype.onSizeChanged = function(webViewEvent) { |
- var newWidth = webViewEvent.newWidth; |
- var newHeight = webViewEvent.newHeight; |
- |
- var element = this.element; |
- |
- var width = element.offsetWidth; |
- var height = element.offsetHeight; |
- |
- // Check the current bounds to make sure we do not resize <webview> |
- // outside of current constraints. |
- var maxWidth = this.attributes[ |
- WebViewConstants.ATTRIBUTE_MAXWIDTH].getValue() || width; |
- var minWidth = this.attributes[ |
- WebViewConstants.ATTRIBUTE_MINWIDTH].getValue() || width; |
- var maxHeight = this.attributes[ |
- WebViewConstants.ATTRIBUTE_MAXHEIGHT].getValue() || height; |
- var minHeight = this.attributes[ |
- WebViewConstants.ATTRIBUTE_MINHEIGHT].getValue() || height; |
- |
- minWidth = Math.min(minWidth, maxWidth); |
- minHeight = Math.min(minHeight, maxHeight); |
- |
- if (!this.attributes[WebViewConstants.ATTRIBUTE_AUTOSIZE].getValue() || |
- (newWidth >= minWidth && |
- newWidth <= maxWidth && |
- newHeight >= minHeight && |
- newHeight <= maxHeight)) { |
- element.style.width = newWidth + 'px'; |
- element.style.height = newHeight + 'px'; |
- // Only fire the DOM event if the size of the <webview> has actually |
- // changed. |
- this.dispatchEvent(webViewEvent); |
- } |
-}; |
- |
-WebViewImpl.prototype.createGuest = function() { |
- this.guest.create(this.buildParams(), function() { |
- this.attachWindow(); |
- }.bind(this)); |
-}; |
- |
-WebViewImpl.prototype.onFrameNameChanged = function(name) { |
- this.attributes[WebViewConstants.ATTRIBUTE_NAME].setValueIgnoreMutation(name); |
-}; |
- |
-// Updates state upon loadcommit. |
-WebViewImpl.prototype.onLoadCommit = function( |
- baseUrlForDataUrl, currentEntryIndex, entryCount, |
- processId, url, isTopLevel) { |
- this.baseUrlForDataUrl = baseUrlForDataUrl; |
- this.currentEntryIndex = currentEntryIndex; |
- this.entryCount = entryCount; |
- this.processId = processId; |
- if (isTopLevel) { |
- // Touching the src attribute triggers a navigation. To avoid |
- // triggering a page reload on every guest-initiated navigation, |
- // we do not handle this mutation. |
- this.attributes[ |
- WebViewConstants.ATTRIBUTE_SRC].setValueIgnoreMutation(url); |
- } |
-}; |
- |
-WebViewImpl.prototype.onAttach = function(storagePartitionId) { |
- this.attributes[WebViewConstants.ATTRIBUTE_PARTITION].setValueIgnoreMutation( |
- storagePartitionId); |
-}; |
- |
-WebViewImpl.prototype.buildContainerParams = function() { |
- var params = { 'userAgentOverride': this.userAgentOverride }; |
- for (var i in this.attributes) { |
- params[i] = this.attributes[i].getValue(); |
- } |
- return params; |
-}; |
- |
-WebViewImpl.prototype.attachWindow = function(opt_guestInstanceId) { |
- // If |opt_guestInstanceId| was provided, then a different existing guest is |
- // being attached to this webview, and the current one will get destroyed. |
- if (opt_guestInstanceId) { |
- if (this.guest.getId() == opt_guestInstanceId) { |
- return true; |
- } |
- this.guest.destroy(); |
- this.guest = new GuestView('webview', opt_guestInstanceId); |
- } |
- |
- return GuestViewContainer.prototype.attachWindow.call(this); |
-}; |
- |
-// Shared implementation of executeScript() and insertCSS(). |
-WebViewImpl.prototype.executeCode = function(func, args) { |
- if (!this.guest.getId()) { |
- window.console.error(WebViewConstants.ERROR_MSG_CANNOT_INJECT_SCRIPT); |
- return false; |
- } |
- |
- var webviewSrc = this.attributes[WebViewConstants.ATTRIBUTE_SRC].getValue(); |
- if (this.baseUrlForDataUrl) { |
- webviewSrc = this.baseUrlForDataUrl; |
- } |
- |
- args = $Array.concat([this.guest.getId(), webviewSrc], |
- $Array.slice(args)); |
- $Function.apply(func, null, args); |
- return true; |
-} |
- |
-// Implemented when the ChromeWebView API is available. |
-WebViewImpl.prototype.maybeGetChromeWebViewEvents = function() {}; |
- |
-// Implemented when the experimental WebView API is available. |
-WebViewImpl.maybeGetExperimentalApiMethods = function() { return []; }; |
-WebViewImpl.prototype.setupExperimentalContextMenus = function() {}; |
- |
-GuestViewContainer.registerElement(WebViewImpl); |
- |
-// Exports. |
-exports.WebViewImpl = WebViewImpl; |