summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-26 12:43:51 +0000
committerdbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-26 12:43:51 +0000
commit36268d2915b84fdd33490594d7f552c9fc3d3556 (patch)
treeca8e21743a1ff2903c412bf5c8c645887d6a66b9
parentc37f2ccc382083f728010fe20f0c0c6a73dc4d6d (diff)
downloadchromium_src-36268d2915b84fdd33490594d7f552c9fc3d3556.zip
chromium_src-36268d2915b84fdd33490594d7f552c9fc3d3556.tar.gz
chromium_src-36268d2915b84fdd33490594d7f552c9fc3d3556.tar.bz2
Fix settings overlay "shifting" when shown.
aboxhall@s r228479 simplified |setOverlayVisible_| but I need to re-complicate it as |onVisibilityChanged_| must be called before |fadeCompleted_| to ensure the right sizes of frozen pages are calculated/set before transitions end. R=aboxhall@chromium.org BUG=307388 TEST=OptionsWebUINavigationTest.OverlayShowDoesntShift, visual (see bug) Review URL: https://codereview.chromium.org/42393002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231199 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/resources/options/options_page.js6
-rw-r--r--chrome/browser/ui/webui/options/options_browsertest.js20
2 files changed, 25 insertions, 1 deletions
diff --git a/chrome/browser/resources/options/options_page.js b/chrome/browser/resources/options/options_page.js
index c0a1787..8ed9f3b 100644
--- a/chrome/browser/resources/options/options_page.js
+++ b/chrome/browser/resources/options/options_page.js
@@ -907,12 +907,14 @@ cr.define('options', function() {
true);
}
container.classList.remove('transparent');
+ this.onVisibilityChanged_();
} else {
// Kick change events for text fields.
if (pageDiv.contains(document.activeElement))
document.activeElement.blur();
container.classList.add('transparent');
}
+
if (loading)
this.fadeCompleted_();
},
@@ -925,13 +927,15 @@ cr.define('options', function() {
if (this.container.classList.contains('transparent')) {
this.pageDiv.hidden = true;
this.container.hidden = true;
+
if (this.parentPage)
this.parentPage.pageDiv.parentElement.removeAttribute('aria-hidden');
if (this.nestingLevel == 1)
uber.invokeMethodOnParent('stopInterceptingEvents');
+
+ this.onVisibilityChanged_();
}
- this.onVisibilityChanged_();
},
/**
diff --git a/chrome/browser/ui/webui/options/options_browsertest.js b/chrome/browser/ui/webui/options/options_browsertest.js
index 2acef84..0a7115e1 100644
--- a/chrome/browser/ui/webui/options/options_browsertest.js
+++ b/chrome/browser/ui/webui/options/options_browsertest.js
@@ -668,3 +668,23 @@ TEST_F('OptionsWebUINavigationTest', 'OverlayBackToUnrelated', function() {
});
});
});
+
+// An overlay's position should remain the same as it shows.
+TEST_F('OptionsWebUINavigationTest', 'OverlayShowDoesntShift', function() {
+ var searchEngineOverlay = $('search-engine-manager-page');
+ var frozenPages = document.getElementsByClassName('frozen'); // Gets updated.
+ expectEquals(0, frozenPages.length);
+
+ document.addEventListener('webkitTransitionEnd', function(e) {
+ if (e.target != searchEngineOverlay)
+ return;
+
+ assertFalse(searchEngineOverlay.classList.contains('transparent'));
+ expectEquals(numFrozenPages, frozenPages.length);
+ testDone();
+ });
+
+ OptionsPage.navigateToPage('searchEngines');
+ var numFrozenPages = frozenPages.length;
+ expectGT(numFrozenPages, 0);
+});