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

Side by Side Diff: chrome/renderer/resources/extensions/extension_options.js

Issue 480243003: Implement smoother autosizing of the extension options overlay (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 var DocumentNatives = requireNative('document_natives'); 5 var DocumentNatives = requireNative('document_natives');
6 var ExtensionOptionsEvents = 6 var ExtensionOptionsEvents =
7 require('extensionOptionsEvents').ExtensionOptionsEvents; 7 require('extensionOptionsEvents').ExtensionOptionsEvents;
8 var GuestViewInternal = 8 var GuestViewInternal =
9 require('binding').Binding.create('guestViewInternal').generate(); 9 require('binding').Binding.create('guestViewInternal').generate();
10 var IdGenerator = requireNative('id_generator'); 10 var IdGenerator = requireNative('id_generator');
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 if (this.initCalled) 127 if (this.initCalled)
128 return; 128 return;
129 129
130 this.initCalled = true; 130 this.initCalled = true;
131 this.browserPluginNode = this.createBrowserPluginNode(); 131 this.browserPluginNode = this.createBrowserPluginNode();
132 var shadowRoot = this.extensionoptionsNode.createShadowRoot(); 132 var shadowRoot = this.extensionoptionsNode.createShadowRoot();
133 shadowRoot.appendChild(this.browserPluginNode); 133 shadowRoot.appendChild(this.browserPluginNode);
134 this.createGuest(); 134 this.createGuest();
135 }; 135 };
136 136
137 ExtensionOptionsInternal.prototype.onSizeChanged = function(width, height) { 137 ExtensionOptionsInternal.prototype.onSizeChanged =
138 this.browserPluginNode.style.width = width + 'px'; 138 function(newWidth, newHeight, oldWidth, oldHeight) {
139 this.browserPluginNode.style.height = height + 'px'; 139 // When this method is called, the sizechanged event on the external
140 // ExtensionOptions object is fired at the same time. This timeout allows
141 // the embedder WebUI overlay to perform resizing animations before the
142 // guest view resizes.
143 var animationTime = 0.25 * Math.sqrt(
not at google - send to devlin 2014/08/19 17:02:48 Why is there animation code inside the extension_o
ericzeng 2014/08/19 18:20:13 I need a way to delay <extensionoptions> from auto
not at google - send to devlin 2014/08/19 19:27:18 Ah I see. It's still unfortunately specific to be
144 Math.pow(newWidth - oldWidth, 2) +
145 Math.pow(newHeight - oldHeight, 2));
146 setTimeout(function() {
147 this.browserPluginNode.style.width = newWidth + 'px';
148 this.browserPluginNode.style.height = newHeight + 'px';
149
150 // Do not allow the options page's dimensions to shrink so that the options
151 // page has a consistent UI. If the new size is larger than the minimum,
152 // make that the new minimum size.
153 if (newWidth > this.minwidth)
154 this.minwidth = newWidth;
155 if (newHeight > this.minheight)
156 this.minheight = newHeight;
157
158 GuestViewInternal.setAutoSize(this.instanceId, {
159 'enableAutoSize': this.extensionoptionsNode.hasAttribute('autosize'),
160 'min': {
161 'width': parseInt(this.minwidth || 0),
162 'height': parseInt(this.minheight || 0)
163 },
164 'max': {
165 'width': parseInt(this.maxwidth || 0),
166 'height': parseInt(this.maxheight || 0)
167 }
168 });
169 }.bind(this), animationTime);
140 }; 170 };
141 171
142 ExtensionOptionsInternal.prototype.parseExtensionAttribute = function() { 172 ExtensionOptionsInternal.prototype.parseExtensionAttribute = function() {
143 if (this.extensionoptionsNode.hasAttribute('extension')) { 173 if (this.extensionoptionsNode.hasAttribute('extension')) {
144 this.extensionId = this.extensionoptionsNode.getAttribute('extension'); 174 this.extensionId = this.extensionoptionsNode.getAttribute('extension');
145 return true; 175 return true;
146 } 176 }
147 return false; 177 return false;
148 }; 178 };
149 179
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 294
265 var useCapture = true; 295 var useCapture = true;
266 window.addEventListener('readystatechange', function listener(event) { 296 window.addEventListener('readystatechange', function listener(event) {
267 if (document.readyState == 'loading') 297 if (document.readyState == 'loading')
268 return; 298 return;
269 299
270 registerBrowserPluginElement(); 300 registerBrowserPluginElement();
271 registerExtensionOptionsElement(); 301 registerExtensionOptionsElement();
272 window.removeEventListener(event.type, listener, useCapture); 302 window.removeEventListener(event.type, listener, useCapture);
273 }, useCapture); 303 }, useCapture);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698