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

Side by Side Diff: extensions/renderer/resources/guest_view/web_view.js

Issue 706473002: Automated the definitions of webview attributes as properties on the webview node. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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 unified diff | Download patch
« no previous file with comments | « no previous file | extensions/renderer/resources/guest_view/web_view_attributes.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This module implements WebView (<webview>) as a custom element that wraps a 5 // This module implements WebView (<webview>) as a custom element that wraps a
6 // BrowserPlugin object element. The object element is hidden within 6 // BrowserPlugin object element. The object element is hidden within
7 // the shadow DOM of the WebView element. 7 // the shadow DOM of the WebView element.
8 8
9 var DocumentNatives = requireNative('document_natives'); 9 var DocumentNatives = requireNative('document_natives');
10 var GuestViewInternal = 10 var GuestViewInternal =
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 }.bind(this)); 118 }.bind(this));
119 }; 119 };
120 120
121 // Validation helper function for executeScript() and insertCSS(). 121 // Validation helper function for executeScript() and insertCSS().
122 WebView.prototype.validateExecuteCodeCall = function() { 122 WebView.prototype.validateExecuteCodeCall = function() {
123 if (!this.guestInstanceId) { 123 if (!this.guestInstanceId) {
124 throw new Error(WebViewConstants.ERROR_MSG_CANNOT_INJECT_SCRIPT); 124 throw new Error(WebViewConstants.ERROR_MSG_CANNOT_INJECT_SCRIPT);
125 } 125 }
126 }; 126 };
127 127
128 WebView.prototype.setupAutoSizeProperties = function() {
129 $Array.forEach(AUTO_SIZE_ATTRIBUTES, function(attributeName) {
130 Object.defineProperty(this.webviewNode, attributeName, {
131 get: function() {
132 return this.attributes[attributeName].getValue();
133 }.bind(this),
134 set: function(value) {
135 this.attributes[attributeName].setValue(value);
136 }.bind(this),
137 enumerable: true
138 });
139 }.bind(this), this);
140 };
141
142 WebView.prototype.setupWebviewNodeProperties = function() { 128 WebView.prototype.setupWebviewNodeProperties = function() {
143 this.setupAutoSizeProperties(); 129 for (var attributeName in this.attributes) {
144 130 this.attributes[attributeName].define();
145 Object.defineProperty(this.webviewNode, 131 }
146 WebViewConstants.ATTRIBUTE_ALLOWTRANSPARENCY, {
147 get: function() {
148 return this.attributes[WebViewConstants.ATTRIBUTE_ALLOWTRANSPARENCY].
149 getValue();
150 }.bind(this),
151 set: function(value) {
152 this.attributes[WebViewConstants.ATTRIBUTE_ALLOWTRANSPARENCY].
153 setValue(value);
154 }.bind(this),
155 enumerable: true
156 });
157 132
158 // We cannot use {writable: true} property descriptor because we want a 133 // We cannot use {writable: true} property descriptor because we want a
159 // dynamic getter value. 134 // dynamic getter value.
160 Object.defineProperty(this.webviewNode, 'contentWindow', { 135 Object.defineProperty(this.webviewNode, 'contentWindow', {
161 get: function() { 136 get: function() {
162 if (this.contentWindow) { 137 if (this.contentWindow) {
163 return this.contentWindow; 138 return this.contentWindow;
164 } 139 }
165 window.console.error( 140 window.console.error(
166 WebViewConstants.ERROR_MSG_CONTENTWINDOW_NOT_AVAILABLE); 141 WebViewConstants.ERROR_MSG_CONTENTWINDOW_NOT_AVAILABLE);
167 }.bind(this), 142 }.bind(this),
168 // No setter. 143 // No setter.
169 enumerable: true 144 enumerable: true
170 }); 145 });
171
172 Object.defineProperty(this.webviewNode, WebViewConstants.ATTRIBUTE_NAME, {
173 get: function() {
174 return this.attributes[WebViewConstants.ATTRIBUTE_NAME].getValue();
175 }.bind(this),
176 set: function(value) {
177 this.attributes[WebViewConstants.ATTRIBUTE_NAME].setValue(value);
178 }.bind(this),
179 enumerable: true
180 });
181
182 Object.defineProperty(this.webviewNode,
183 WebViewConstants.ATTRIBUTE_PARTITION, {
184 get: function() {
185 return this.attributes[WebViewConstants.ATTRIBUTE_PARTITION].getValue();
186 }.bind(this),
187 set: function(value) {
188 this.attributes[WebViewConstants.ATTRIBUTE_PARTITION].setValue(value);
189 }.bind(this),
190 enumerable: true
191 });
192
193 Object.defineProperty(this.webviewNode, WebViewConstants.ATTRIBUTE_SRC, {
194 get: function() {
195 return this.attributes[WebViewConstants.ATTRIBUTE_SRC].getValue();
196 }.bind(this),
197 set: function(value) {
198 this.attributes[WebViewConstants.ATTRIBUTE_SRC].setValue(value);
199 }.bind(this),
200 enumerable: true
201 });
202 }; 146 };
203 147
204 // The purpose of this mutation observer is to catch assignment to the src 148 // The purpose of this mutation observer is to catch assignment to the src
205 // attribute without any changes to its value. This is useful in the case 149 // attribute without any changes to its value. This is useful in the case
206 // where the webview guest has crashed and navigating to the same address 150 // where the webview guest has crashed and navigating to the same address
207 // spawns off a new process. 151 // spawns off a new process.
208 WebView.prototype.setupWebViewSrcAttributeMutationObserver = 152 WebView.prototype.setupWebViewSrcAttributeMutationObserver =
209 function() { 153 function() {
210 this.srcAndPartitionObserver = new MutationObserver(function(mutations) { 154 this.srcAndPartitionObserver = new MutationObserver(function(mutations) {
211 $Array.forEach(mutations, function(mutation) { 155 $Array.forEach(mutations, function(mutation) {
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 WebView.prototype.maybeGetChromeWebViewEvents = function() {}; 811 WebView.prototype.maybeGetChromeWebViewEvents = function() {};
868 812
869 // Implemented when the experimental WebView API is available. 813 // Implemented when the experimental WebView API is available.
870 WebView.maybeGetExperimentalAPIs = function() {}; 814 WebView.maybeGetExperimentalAPIs = function() {};
871 WebView.prototype.maybeGetExperimentalEvents = function() {}; 815 WebView.prototype.maybeGetExperimentalEvents = function() {};
872 WebView.prototype.setupExperimentalContextMenus = function() {}; 816 WebView.prototype.setupExperimentalContextMenus = function() {};
873 817
874 // Exports. 818 // Exports.
875 exports.WebView = WebView; 819 exports.WebView = WebView;
876 exports.WebViewInternal = WebViewInternal; 820 exports.WebViewInternal = WebViewInternal;
OLDNEW
« no previous file with comments | « no previous file | extensions/renderer/resources/guest_view/web_view_attributes.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698