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

Unified Diff: chrome/test/data/webui/settings/basic_page_browsertest.js

Issue 2552393002: MD Settings: Scroll correctly for navigations that exit search mode. (Closed)
Patch Set: update Created 4 years 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
« no previous file with comments | « chrome/browser/resources/settings/settings_page/main_page_behavior.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/data/webui/settings/basic_page_browsertest.js
diff --git a/chrome/test/data/webui/settings/basic_page_browsertest.js b/chrome/test/data/webui/settings/basic_page_browsertest.js
index 9fde2be0af3303f876535a5e2aadf5c362832897..8e1b2d90ffd8a434b6b1933a540d1ac01f8df165 100644
--- a/chrome/test/data/webui/settings/basic_page_browsertest.js
+++ b/chrome/test/data/webui/settings/basic_page_browsertest.js
@@ -13,7 +13,12 @@ GEN_INCLUDE(['settings_page_browsertest.js']);
function SettingsBasicPageBrowserTest() {}
SettingsBasicPageBrowserTest.prototype = {
- __proto__: SettingsPageBrowserTest.prototype
+ __proto__: SettingsPageBrowserTest.prototype,
+
+ /** @override */
+ extraLibraries: SettingsPageBrowserTest.prototype.extraLibraries.concat([
+ 'test_browser_proxy.js',
+ ]),
};
// Times out on debug builders and may time out on memory bots because
@@ -30,6 +35,49 @@ TEST_F('SettingsBasicPageBrowserTest', 'MAYBE_Load', function() {
// and test() will be a Mocha 'Suite' or 'Test' instance.
var self = this;
+ /**
+ * This fake SearchManager just hides and re-displays the sections on search.
+ *
+ * @implements {SearchManager}
+ * @extends {settings.TestBrowserProxy}
+ */
+ var TestSearchManager = function() {
+ settings.TestBrowserProxy.call(this, [
+ 'search',
+ ]);
+
+ /** @private {?settings.SearchRequest} */
+ this.searchRequest_ = null;
+ }
+
+ TestSearchManager.prototype = {
+ __proto__: settings.TestBrowserProxy.prototype,
+
+ /** @override */
+ search: function(text, page) {
+ if (this.searchRequest_ == null || !this.searchRequest_.isSame(text)) {
+ this.searchRequest_ = new settings.SearchRequest(text);
+ this.searchRequest_.finished = true;
+ this.searchRequest_.updateMatches(false);
+
+ // The search much be resolved asynchronously just like the real
+ // SearchManager. Otherwise, the race condition doesn't manifest.
+ setTimeout(function() {
+ // All the sections must be hidden by the TestSearchManager, just like
+ // the real SearchManager. Otherwise, the bug doesn't manifest.
+ var sections =
+ Polymer.dom().querySelectorAll('* /deep/ settings-section');
+ for (var i = 0; i < sections.length; i++)
+ sections[i].hiddenBySearch = !!text;
+
+ this.searchRequest_.resolver.resolve(this.searchRequest_);
+ this.methodCalled('search', text);
+ }.bind(this), 0);
+ }
+ return this.searchRequest_.resolver.promise;
+ },
+ };
+
// Register mocha tests.
suite('SettingsPage', function() {
test('load page', function() {
@@ -81,6 +129,33 @@ TEST_F('SettingsBasicPageBrowserTest', 'MAYBE_Load', function() {
assertEquals(0, page.scroller.scrollTop);
});
});
+
+ test('scroll to section after exiting search', function() {
+ var searchManager = new TestSearchManager();
+ settings.setSearchManagerForTesting(searchManager);
+
+ settings.navigateTo(settings.Route.BASIC,
+ new URLSearchParams(`search=foobar`),
+ /* removeSearch */ false);
+ return searchManager.whenCalled('search').then(function() {
+ return new Promise(function(resolve) {
+ settings.navigateTo(settings.Route.ON_STARTUP,
+ /* dynamicParams */ null,
+ /* removeSearch */ true);
+
+ var page = self.getPage('basic');
+ assertTrue(!!page);
+
+ // Should (after some time) be scrolled to the On Startup section.
+ var intervalId = window.setInterval(function() {
+ if (page.scroller.scrollTop != 0) {
+ window.clearInterval(intervalId);
+ resolve();
+ }
+ }, 55);
+ });
+ });
+ });
});
// Run all registered tests.
« no previous file with comments | « chrome/browser/resources/settings/settings_page/main_page_behavior.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698