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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/resources/extensions/extension_options.js
diff --git a/chrome/renderer/resources/extensions/extension_options.js b/chrome/renderer/resources/extensions/extension_options.js
index d88c3d1460a5bd490e6ba0ba423f1c3f03bf0863..9dc1e69ecdb87ec2303ccf7db8fe5fad6fedc117 100644
--- a/chrome/renderer/resources/extensions/extension_options.js
+++ b/chrome/renderer/resources/extensions/extension_options.js
@@ -134,9 +134,39 @@ ExtensionOptionsInternal.prototype.init = function() {
this.createGuest();
};
-ExtensionOptionsInternal.prototype.onSizeChanged = function(width, height) {
- this.browserPluginNode.style.width = width + 'px';
- this.browserPluginNode.style.height = height + 'px';
+ExtensionOptionsInternal.prototype.onSizeChanged =
+ function(newWidth, newHeight, oldWidth, oldHeight) {
+ // When this method is called, the sizechanged event on the external
+ // ExtensionOptions object is fired at the same time. This timeout allows
+ // the embedder WebUI overlay to perform resizing animations before the
+ // guest view resizes.
+ 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
+ Math.pow(newWidth - oldWidth, 2) +
+ Math.pow(newHeight - oldHeight, 2));
+ setTimeout(function() {
+ this.browserPluginNode.style.width = newWidth + 'px';
+ this.browserPluginNode.style.height = newHeight + 'px';
+
+ // Do not allow the options page's dimensions to shrink so that the options
+ // page has a consistent UI. If the new size is larger than the minimum,
+ // make that the new minimum size.
+ if (newWidth > this.minwidth)
+ this.minwidth = newWidth;
+ if (newHeight > this.minheight)
+ this.minheight = newHeight;
+
+ GuestViewInternal.setAutoSize(this.instanceId, {
+ 'enableAutoSize': this.extensionoptionsNode.hasAttribute('autosize'),
+ 'min': {
+ 'width': parseInt(this.minwidth || 0),
+ 'height': parseInt(this.minheight || 0)
+ },
+ 'max': {
+ 'width': parseInt(this.maxwidth || 0),
+ 'height': parseInt(this.maxheight || 0)
+ }
+ });
+ }.bind(this), animationTime);
};
ExtensionOptionsInternal.prototype.parseExtensionAttribute = function() {

Powered by Google App Engine
This is Rietveld 408576698