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

Unified Diff: chrome/browser/ui/webui/options/options_browsertest.js

Issue 2919343005: Remove tests for deprecated Options UI (Closed)
Patch Set: and more Created 3 years, 6 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/browser/ui/webui/options/options_browsertest.js
diff --git a/chrome/browser/ui/webui/options/options_browsertest.js b/chrome/browser/ui/webui/options/options_browsertest.js
deleted file mode 100644
index 05dfd8c96b371f195964e0263045b3cb25823ac8..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/webui/options/options_browsertest.js
+++ /dev/null
@@ -1,969 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-GEN_INCLUDE(['options_browsertest_base.js']);
-GEN('#include "chrome/browser/ui/webui/options/options_browsertest.h"');
-
-/** @const */ var SUPERVISED_USERS_PREF = 'profile.managed_users';
-
-/**
- * Wait for the method specified by |methodName|, on the |object| object, to be
- * called, then execute |afterFunction|.
- * @param {*} object Object with callable property named |methodName|.
- * @param {string} methodName The name of the property on |object| to use as a
- * callback.
- * @param {!Function} afterFunction A function to call after object.methodName()
- * is called.
- */
-function waitForResponse(object, methodName, afterFunction) {
- var originalCallback = object[methodName];
-
- // Install a wrapper that temporarily replaces the original function.
- object[methodName] = function() {
- object[methodName] = originalCallback;
- originalCallback.apply(this, arguments);
- afterFunction();
- };
-}
-
-/**
- * Wait for the global window.onpopstate callback to be called (after a tab
- * history navigation), then execute |afterFunction|.
- * @param {!Function} afterFunction A function to call after pop state events.
- */
-function waitForPopstate(afterFunction) {
- waitForResponse(window, 'onpopstate', afterFunction);
-}
-
-/**
- * TestFixture for OptionsPage WebUI testing.
- * @extends {testing.Test}
- * @constructor
- */
-function OptionsWebUITest() {}
-
-OptionsWebUITest.prototype = {
- __proto__: OptionsBrowsertestBase.prototype,
-
- /**
- * Browse to the options page & call our preLoad().
- * @override
- */
- browsePreload: 'chrome://settings-frame',
-
- /** @override */
- isAsync: true,
-
- /**
- * Register a mock handler to ensure expectations are met and options pages
- * behave correctly.
- */
- preLoad: function() {
- this.makeAndRegisterMockHandler(
- ['defaultZoomFactorAction',
- 'fetchPrefs',
- 'observePrefs',
- 'setBooleanPref',
- 'setIntegerPref',
- 'setDoublePref',
- 'setStringPref',
- 'setObjectPref',
- 'clearPref',
- 'coreOptionsUserMetricsAction',
- ]);
-
- // Register stubs for methods expected to be called before/during tests.
- // Specific expectations can be made in the tests themselves.
- this.mockHandler.stubs().fetchPrefs(ANYTHING);
- this.mockHandler.stubs().observePrefs(ANYTHING);
- this.mockHandler.stubs().coreOptionsUserMetricsAction(ANYTHING);
- },
-
- /** @override */
- setUp: function() {
- OptionsBrowsertestBase.prototype.setUp.call(this);
-
- // Enable when failure is resolved.
- // AX_ARIA_10: http://crbug.com/559329
- this.accessibilityAuditConfig.ignoreSelectors(
- 'unsupportedAriaAttribute',
- '#profiles-list');
-
- var linkWithUnclearPurposeSelectors = [
- '#sync-overview > A',
- '#privacy-explanation > A',
- '#languages-section > .settings-row > A',
- '#cloudprint-options-mdns > .settings-row > A',
- '#cups-printers-section > .settings-row > A',
- '#do-not-track-confirm-overlay > .action-area > .hbox.stretch > A',
- ];
-
- // Enable when failure is resolved.
- // AX_TEXT_04: http://crbug.com/559318
- this.accessibilityAuditConfig.ignoreSelectors(
- 'linkWithUnclearPurpose',
- linkWithUnclearPurposeSelectors);
-
- // Causes testDefaultZoomFactor to flake. See http://crbug.com/611233.
- var requiredOwnedAriaRoleMissingSelectors = [
- '#default-search-engine-list',
- '#other-search-engine-list',
- ];
-
- // Enable when failure is resolved.
- // AX_ARIA_08: http://crbug.com/606657
- this.accessibilityAuditConfig.ignoreSelectors(
- 'requiredOwnedAriaRoleMissing',
- requiredOwnedAriaRoleMissingSelectors);
- },
-};
-
-/**
- * Wait for all targets to be hidden.
- * @param {Array<Element>} targets
- */
-function waitUntilHidden(targets) {
- function isHidden(el) { return el.hidden; }
- function ensureTransition(el) { ensureTransitionEndEvent(el, 500); }
-
- document.addEventListener('transitionend', function f(e) {
- if (targets.indexOf(e.target) >= 0 && targets.every(isHidden)) {
- document.removeEventListener(f, 'transitionend');
- testDone();
- }
- });
-
- targets.forEach(ensureTransition);
-}
-
-// Crashes on Mac only. See http://crbug.com/79181
-GEN('#if defined(OS_MACOSX)');
-GEN('#define MAYBE_testSetBooleanPrefTriggers ' +
- 'DISABLED_testSetBooleanPrefTriggers');
-GEN('#else');
-GEN('#define MAYBE_testSetBooleanPrefTriggers testSetBooleanPrefTriggers');
-GEN('#endif // defined(OS_MACOSX)');
-
-TEST_F('OptionsWebUITest', 'MAYBE_testSetBooleanPrefTriggers', function() {
- // TODO(dtseng): make generic to click all buttons.
- var showHomeButton =
- document.querySelector('input[pref="browser.show_home_button"]');
- var trueListValue = [
- 'browser.show_home_button',
- true,
- 'Options_Homepage_HomeButton',
- ];
- // Note: this expectation is checked in testing::Test::tearDown.
- this.mockHandler.expects(once()).setBooleanPref(trueListValue);
-
- // Cause the handler to be called.
- showHomeButton.click();
- showHomeButton.blur();
- testDone();
-});
-
-// Not meant to run on ChromeOS at this time.
-// Not finishing in windows. http://crbug.com/81723
-TEST_F('OptionsWebUITest', 'DISABLED_testRefreshStaysOnCurrentPage',
- function() {
- assertTrue($('search-engine-manager-page').hidden);
- var item = $('manage-default-search-engines');
- item.click();
-
- assertFalse($('search-engine-manager-page').hidden);
-
- window.location.reload();
-
- assertEquals('chrome://settings-frame/searchEngines', document.location.href);
- assertFalse($('search-engine-manager-page').hidden);
- testDone();
-});
-
-/**
- * Test the default zoom factor select element.
- */
-TEST_F('OptionsWebUITest', 'testDefaultZoomFactor', function() {
- // The expected minimum length of the |defaultZoomFactor| element.
- var defaultZoomFactorMinimumLength = 10;
- // Verify that the zoom factor element exists.
- var defaultZoomFactor = $('defaultZoomFactor');
- assertNotEquals(defaultZoomFactor, null);
-
- // Verify that the zoom factor element has a reasonable number of choices.
- expectGE(defaultZoomFactor.options.length, defaultZoomFactorMinimumLength);
-
- // Simulate a change event, selecting the highest zoom value. Verify that
- // the javascript handler was invoked once.
- this.mockHandler.expects(once()).defaultZoomFactorAction(NOT_NULL).
- will(callFunction(function() { }));
- defaultZoomFactor.selectedIndex = defaultZoomFactor.options.length - 1;
- var event = {target: defaultZoomFactor};
- if (defaultZoomFactor.onchange) defaultZoomFactor.onchange(event);
- testDone();
-});
-
-/**
- * If |confirmInterstitial| is true, the OK button of the Do Not Track
- * interstitial is pressed, otherwise the abort button is pressed.
- * @param {boolean} confirmInterstitial Whether to confirm the Do Not Track
- * interstitial.
- */
-OptionsWebUITest.prototype.testDoNotTrackInterstitial =
- function(confirmInterstitial) {
- Preferences.prefsFetchedCallback({'enable_do_not_track': {'value': false}});
- var buttonToClick = confirmInterstitial ? $('do-not-track-confirm-ok') :
- $('do-not-track-confirm-cancel');
- var dntCheckbox = $('do-not-track-enabled');
- var dntOverlay = PageManager.registeredOverlayPages['donottrackconfirm'];
- assertFalse(dntCheckbox.checked);
-
- var visibleChangeCounter = 0;
- var visibleChangeHandler = function() {
- ++visibleChangeCounter;
- switch (visibleChangeCounter) {
- case 1:
- window.setTimeout(function() {
- assertTrue(dntOverlay.visible);
- buttonToClick.click();
- }, 0);
- break;
- case 2:
- window.setTimeout(function() {
- assertFalse(dntOverlay.visible);
- assertEquals(confirmInterstitial, dntCheckbox.checked);
- dntOverlay.removeEventListener('visibleChange', visibleChangeHandler);
- testDone();
- }, 0);
- break;
- default:
- assertTrue(false);
- }
- };
- dntOverlay.addEventListener('visibleChange', visibleChangeHandler);
-
- if (confirmInterstitial) {
- this.mockHandler.expects(once()).setBooleanPref(
- ['enable_do_not_track', true, 'Options_DoNotTrackCheckbox']);
- } else {
- // The mock handler complains if setBooleanPref is called even though
- // it should not be.
- }
-
- dntCheckbox.click();
-};
-
-TEST_F('OptionsWebUITest', 'EnableDoNotTrackAndConfirmInterstitial',
- function() {
- this.testDoNotTrackInterstitial(true);
-});
-
-TEST_F('OptionsWebUITest', 'EnableDoNotTrackAndCancelInterstitial',
- function() {
- this.testDoNotTrackInterstitial(false);
-});
-
-// Check that the "Do not Track" preference can be correctly disabled.
-// In order to do that, we need to enable it first.
-TEST_F('OptionsWebUITest', 'EnableAndDisableDoNotTrack', function() {
- Preferences.prefsFetchedCallback({'enable_do_not_track': {'value': false}});
- var dntCheckbox = $('do-not-track-enabled');
- var dntOverlay = PageManager.registeredOverlayPages.donottrackconfirm;
- assertFalse(dntCheckbox.checked);
-
- var visibleChangeCounter = 0;
- var visibleChangeHandler = function() {
- ++visibleChangeCounter;
- switch (visibleChangeCounter) {
- case 1:
- window.setTimeout(function() {
- assertTrue(dntOverlay.visible);
- $('do-not-track-confirm-ok').click();
- }, 0);
- break;
- case 2:
- window.setTimeout(function() {
- assertFalse(dntOverlay.visible);
- assertTrue(dntCheckbox.checked);
- dntOverlay.removeEventListener('visibleChange', visibleChangeHandler);
- dntCheckbox.click();
- }, 0);
- break;
- default:
- assertNotReached();
- }
- };
- dntOverlay.addEventListener('visibleChange', visibleChangeHandler);
-
- this.mockHandler.expects(once()).setBooleanPref(
- eq(['enable_do_not_track', true, 'Options_DoNotTrackCheckbox']));
-
- var verifyCorrectEndState = function() {
- window.setTimeout(function() {
- assertFalse(dntOverlay.visible);
- assertFalse(dntCheckbox.checked);
- testDone();
- }, 0);
- };
- this.mockHandler.expects(once()).setBooleanPref(
- eq(['enable_do_not_track', false, 'Options_DoNotTrackCheckbox'])).will(
- callFunction(verifyCorrectEndState));
-
- dntCheckbox.click();
-});
-
-// Fails on chromeos, http://crbug.com/660867
-// Verify that preventDefault() is called on 'Enter' keydown events that trigger
-// the default button. If this doesn't happen, other elements that may get
-// focus (by the overlay closing for instance), will execute in addition to the
-// default button. See crbug.com/268336.
-TEST_F('OptionsWebUITest', 'DISABLED_EnterPreventsDefault', function() {
- var page = HomePageOverlay.getInstance();
- PageManager.showPageByName(page.name);
- var event = new KeyboardEvent('keydown', {
- 'bubbles': true,
- 'cancelable': true,
- 'key': 'Enter'
- });
- assertFalse(event.defaultPrevented);
- page.pageDiv.dispatchEvent(event);
- assertTrue(event.defaultPrevented);
- testDone();
-});
-
-// Verifies that sending an empty list of indexes to move doesn't crash chrome.
-TEST_F('OptionsWebUITest', 'emptySelectedIndexesDoesntCrash', function() {
- chrome.send('dragDropStartupPage', [0, []]);
- setTimeout(testDone);
-});
-
-// This test turns out to be flaky on all platforms.
-// See http://crbug.com/315250.
-
-// An overlay's position should remain the same as it shows.
-TEST_F('OptionsWebUITest', 'DISABLED_OverlayShowDoesntShift', function() {
- var overlayName = 'startup';
- var overlay = $('startup-overlay');
- var frozenPages = document.getElementsByClassName('frozen'); // Gets updated.
- expectEquals(0, frozenPages.length);
-
- document.addEventListener('transitionend', function(e) {
- if (e.target != overlay)
- return;
-
- assertFalse(overlay.classList.contains('transparent'));
- expectEquals(numFrozenPages, frozenPages.length);
- testDone();
- });
-
- PageManager.showPageByName(overlayName);
- var numFrozenPages = frozenPages.length;
- expectGT(numFrozenPages, 0);
-});
-
-GEN('#if defined(OS_CHROMEOS)');
-// Verify that range inputs respond to touch events. Currently only Chrome OS
-// uses slider options.
-TEST_F('OptionsWebUITest', 'RangeInputHandlesTouchEvents', function() {
- this.mockHandler.expects(once()).setIntegerPref([
- 'settings.touchpad.sensitivity2', 1]);
-
- var touchpadRange = $('touchpad-sensitivity-range');
- var event = document.createEvent('UIEvent');
- event.initUIEvent('touchstart', true, true, window);
- touchpadRange.dispatchEvent(event);
-
- event = document.createEvent('UIEvent');
- event.initUIEvent('touchmove', true, true, window);
- touchpadRange.dispatchEvent(event);
-
- touchpadRange.value = 1;
-
- event = document.createEvent('UIEvent');
- event.initUIEvent('touchend', true, true, window);
- touchpadRange.dispatchEvent(event);
-
- // touchcancel should also trigger the handler, since it
- // changes the slider position.
- this.mockHandler.expects(once()).setIntegerPref([
- 'settings.touchpad.sensitivity2', 2]);
-
- event = document.createEvent('UIEvent');
- event.initUIEvent('touchstart', true, true, window);
- touchpadRange.dispatchEvent(event);
-
- touchpadRange.value = 2;
-
- event = document.createEvent('UIEvent');
- event.initUIEvent('touchcancel', true, true, window);
- touchpadRange.dispatchEvent(event);
-
- testDone();
-});
-GEN('#endif'); // defined(OS_CHROMEOS)
-
-/**
- * TestFixture for OptionsPage WebUI testing including tab history and support
- * for preference manipulation. If you don't need the features in the C++
- * fixture, use the simpler OptionsWebUITest (above) instead.
- * @extends {testing.Test}
- * @constructor
- */
-function OptionsWebUIExtendedTest() {}
-
-OptionsWebUIExtendedTest.prototype = {
- __proto__: OptionsWebUITest.prototype,
-
- /** @override */
- typedefCppFixture: 'OptionsBrowserTest',
-
- /** @override */
- setUp: function() {
- OptionsWebUITest.prototype.setUp.call(this);
-
- // Enable when failure is resolved.
- // AX_ARIA_10: http://crbug.com/559329
- this.accessibilityAuditConfig.ignoreSelectors(
- 'unsupportedAriaAttribute',
- '#profiles-list');
-
- var controlsWithoutLabelSelectors = [
- '#cookies-view-page > .content-area.cookies-list-content-area > *',
- '#other-search-engine-list > .deletable-item > DIV > *',
- ];
-
- // Enable when failure is resolved.
- // AX_TEXT_01: http://crbug.com/559330
- this.accessibilityAuditConfig.ignoreSelectors(
- 'controlsWithoutLabel',
- controlsWithoutLabelSelectors);
-
- var linkWithUnclearPurposeSelectors = [
- '#sync-overview > A',
- '#privacy-explanation > A',
- '#languages-section > .settings-row > A',
- '#cloudprint-options-mdns > .settings-row > A',
- // Selectors below only affect ChromeOS tests.
- '#privacy-section > DIV > DIV:nth-of-type(9) > A',
- '#accessibility-learn-more',
- ];
-
- // Enable when failure is resolved.
- // AX_TEXT_04: http://crbug.com/559326
- this.accessibilityAuditConfig.ignoreSelectors(
- 'linkWithUnclearPurpose',
- linkWithUnclearPurposeSelectors);
-
- var requiredOwnedAriaRoleMissingSelectors = [
- '#default-search-engine-list',
- '#other-search-engine-list',
- ];
-
- // Enable when failure is resolved.
- // AX_ARIA_08: http://crbug.com/605689
- this.accessibilityAuditConfig.ignoreSelectors(
- 'requiredOwnedAriaRoleMissing',
- requiredOwnedAriaRoleMissingSelectors);
- },
-
- testGenPreamble: function() {
- // Start with no supervised users managed by this profile.
- GEN(' ClearPref("' + SUPERVISED_USERS_PREF + '");');
- },
-
- /**
- * Asserts that two non-nested arrays are equal. The arrays must contain only
- * plain data types, no nested arrays or other objects.
- * @param {Array} expected An array of expected values.
- * @param {Array} result An array of actual values.
- * @param {boolean} doSort If true, the arrays will be sorted before being
- * compared.
- * @param {string} description A brief description for the array of actual
- * values, to use in an error message if the arrays differ.
- * @private
- */
- compareArrays_: function(expected, result, doSort, description) {
- var errorMessage = '\n' + description + ': ' + result +
- '\nExpected: ' + expected;
- assertEquals(expected.length, result.length, errorMessage);
-
- var expectedSorted = expected.slice();
- var resultSorted = result.slice();
- if (doSort) {
- expectedSorted.sort();
- resultSorted.sort();
- }
-
- for (var i = 0; i < expectedSorted.length; ++i) {
- assertEquals(expectedSorted[i], resultSorted[i], errorMessage);
- }
- },
-
- /**
- * Verifies that the correct pages are currently open/visible.
- * @param {!Array<string>} expectedPages An array of page names expected to
- * be open, with the topmost listed last.
- * @param {string=} opt_expectedUrl The URL path, including hash, expected to
- * be open. If undefined, the topmost (last) page name in |expectedPages|
- * will be used. In either case, 'chrome://settings-frame/' will be
- * prepended.
- * @private
- */
- verifyOpenPages_: function(expectedPages, opt_expectedUrl) {
- // Check the topmost page.
- expectEquals(null, PageManager.getVisibleBubble());
- var currentPage = PageManager.getTopmostVisiblePage();
-
- var lastExpected = expectedPages[expectedPages.length - 1];
- expectEquals(lastExpected, currentPage.name);
- // We'd like to check the title too, but we have to load the settings-frame
- // instead of the outer settings page in order to have access to
- // OptionsPage, and setting the title from within the settings-frame fails
- // because of cross-origin access restrictions.
- // TODO(pamg): Add a test fixture that loads chrome://settings and uses
- // UI elements to access sub-pages, so we can test the titles and
- // search-page URLs.
- var expectedUrl = (typeof opt_expectedUrl == 'undefined') ?
- lastExpected : opt_expectedUrl;
- var fullExpectedUrl = 'chrome://settings-frame/' + expectedUrl;
- expectEquals(fullExpectedUrl, window.location.href);
-
- // Collect open pages.
- var allPageNames = Object.keys(PageManager.registeredPages).concat(
- Object.keys(PageManager.registeredOverlayPages));
- var openPages = [];
- for (var i = 0; i < allPageNames.length; ++i) {
- var name = allPageNames[i];
- var page = PageManager.registeredPages[name] ||
- PageManager.registeredOverlayPages[name];
- if (page.visible)
- openPages.push(page.name);
- }
-
- this.compareArrays_(expectedPages, openPages, true, 'Open pages');
- },
-
- /*
- * Verifies that the correct URLs are listed in the history. Asynchronous.
- * @param {!Array<string>} expectedHistory An array of URL paths expected to
- * be in the tab navigation history, sorted by visit time, including the
- * current page as the last entry. The base URL (chrome://settings-frame/)
- * will be prepended to each. An initial 'about:blank' history entry is
- * assumed and should not be included in this list.
- * @param {Function=} callback A function to be called after the history has
- * been verified successfully. May be undefined.
- * @private
- */
- verifyHistory_: function(expectedHistory, callback) {
- var self = this;
- OptionsWebUIExtendedTest.verifyHistoryCallback = function(results) {
- // The history always starts with a blank page.
- assertEquals('about:blank', results.shift());
- var fullExpectedHistory = [];
- for (var i = 0; i < expectedHistory.length; ++i) {
- fullExpectedHistory.push(
- 'chrome://settings-frame/' + expectedHistory[i]);
- }
- self.compareArrays_(fullExpectedHistory, results, false, 'History');
- callback();
- };
-
- // The C++ fixture will call verifyHistoryCallback with the results.
- chrome.send('optionsTestReportHistory');
- },
-
- /**
- * Overrides the page callbacks for the given PageManager overlay to verify
- * that they are not called.
- * @param {Object} overlay The singleton instance of the overlay.
- * @private
- */
- prohibitChangesToOverlay_: function(overlay) {
- overlay.initializePage =
- overlay.didShowPage =
- overlay.didClosePage = function() {
- assertTrue(false,
- 'Overlay was affected when changes were prohibited.');
- };
- },
-};
-
-/**
- * Set by verifyHistory_ to incorporate a followup callback, then called by the
- * C++ fixture with the navigation history to be verified.
- * @type {Function}
- */
-OptionsWebUIExtendedTest.verifyHistoryCallback = null;
-
-// Show the search page with no query string, to fall back to the settings page.
-// Test disabled because it's flaky. crbug.com/303841
-TEST_F('OptionsWebUIExtendedTest', 'DISABLED_ShowSearchPageNoQuery',
- function() {
- PageManager.showPageByName('search');
- this.verifyOpenPages_(['settings']);
- this.verifyHistory_(['settings'], testDone);
-});
-
-// Manipulate the search page via the search field.
-TEST_F('OptionsWebUIExtendedTest', 'ShowSearchFromField', function() {
- $('search-field').onsearch({currentTarget: {value: 'query'}});
- this.verifyOpenPages_(['settings', 'search'], 'search#query');
- this.verifyHistory_(['', 'search#query'], function() {
- $('search-field').onsearch({currentTarget: {value: 'query2'}});
- this.verifyOpenPages_(['settings', 'search'], 'search#query2');
- this.verifyHistory_(['', 'search#query', 'search#query2'], function() {
- $('search-field').onsearch({currentTarget: {value: ''}});
- this.verifyOpenPages_(['settings'], '');
- this.verifyHistory_(['', 'search#query', 'search#query2', ''], testDone);
- }.bind(this));
- }.bind(this));
-});
-
-// Show a page without updating history.
-TEST_F('OptionsWebUIExtendedTest', 'ShowPageNoHistory', function() {
- this.verifyOpenPages_(['settings'], '');
- PageManager.showPageByName('search', true, {hash: '#query'});
-
- // The settings page is also still "open" (i.e., visible), in order to show
- // the search results. Furthermore, the URL hasn't been updated in the parent
- // page, because we've loaded the chrome-settings frame instead of the whole
- // settings page, so the cross-origin call to set the URL fails.
- this.verifyOpenPages_(['settings', 'search'], 'search#query');
- var self = this;
- this.verifyHistory_(['', 'search#query'], function() {
- PageManager.showPageByName('settings', false);
- self.verifyOpenPages_(['settings'], 'search#query');
- self.verifyHistory_(['', 'search#query'], testDone);
- });
-});
-
-TEST_F('OptionsWebUIExtendedTest', 'ShowPageWithHistory', function() {
- PageManager.showPageByName('search', true, {hash: '#query'});
- var self = this;
- this.verifyHistory_(['', 'search#query'], function() {
- PageManager.showPageByName('settings', true);
- self.verifyOpenPages_(['settings'], '');
- self.verifyHistory_(['', 'search#query', ''],
- testDone);
- });
-});
-
-TEST_F('OptionsWebUIExtendedTest', 'ShowPageReplaceHistory', function() {
- PageManager.showPageByName('search', true, {hash: '#query'});
- var self = this;
- this.verifyHistory_(['', 'search#query'], function() {
- PageManager.showPageByName('settings', true, {'replaceState': true});
- self.verifyOpenPages_(['settings'], '');
- self.verifyHistory_(['', ''], testDone);
- });
-});
-
-// This should be identical to ShowPageWithHisory.
-TEST_F('OptionsWebUIExtendedTest', 'NavigateToPage', function() {
- PageManager.showPageByName('search', true, {hash: '#query'});
- var self = this;
- this.verifyHistory_(['', 'search#query'], function() {
- PageManager.showPageByName('settings');
- self.verifyOpenPages_(['settings'], '');
- self.verifyHistory_(['', 'search#query', ''], testDone);
- });
-});
-
-// Settings overlays are much more straightforward than settings pages, opening
-// normally with none of the latter's quirks in the expected history or URL.
-TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayNoHistory', function() {
- // Open a layer-1 overlay, not updating history.
- PageManager.showPageByName('languages', false);
- this.verifyOpenPages_(['settings', 'languages'], '');
-
- var self = this;
- this.verifyHistory_([''], function() {
- // Open a layer-2 overlay for which the layer-1 is a parent, not updating
- // history.
- PageManager.showPageByName('addLanguage', false);
- self.verifyOpenPages_(['settings', 'languages', 'addLanguage'],
- '');
- self.verifyHistory_([''], testDone);
- });
-});
-
-TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayWithHistory', function() {
- // Open a layer-1 overlay, updating history.
- PageManager.showPageByName('languages', true);
- this.verifyOpenPages_(['settings', 'languages']);
-
- var self = this;
- this.verifyHistory_(['', 'languages'], function() {
- // Open a layer-2 overlay, updating history.
- PageManager.showPageByName('addLanguage', true);
- self.verifyOpenPages_(['settings', 'languages', 'addLanguage']);
- self.verifyHistory_(['', 'languages', 'addLanguage'], testDone);
- });
-});
-
-TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayReplaceHistory', function() {
- // Open a layer-1 overlay, updating history.
- PageManager.showPageByName('languages', true);
- var self = this;
- this.verifyHistory_(['', 'languages'], function() {
- // Open a layer-2 overlay, replacing history.
- PageManager.showPageByName('addLanguage', true, {'replaceState': true});
- self.verifyOpenPages_(['settings', 'languages', 'addLanguage']);
- self.verifyHistory_(['', 'addLanguage'], testDone);
- });
-});
-
-// Directly show an overlay further above this page, i.e. one for which the
-// current page is an ancestor but not a parent.
-TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayFurtherAbove', function() {
- // Open a layer-2 overlay directly.
- PageManager.showPageByName('addLanguage', true);
- this.verifyOpenPages_(['settings', 'languages', 'addLanguage']);
- var self = this;
- this.verifyHistory_(['', 'addLanguage'], testDone);
-});
-
-// Directly show a layer-2 overlay for which the layer-1 overlay is not a
-// parent.
-TEST_F('OptionsWebUIExtendedTest', 'ShowUnrelatedOverlay', function() {
- // Open a layer-1 overlay.
- PageManager.showPageByName('languages', true);
- this.verifyOpenPages_(['settings', 'languages']);
-
- var self = this;
- this.verifyHistory_(['', 'languages'], function() {
- // Open an unrelated layer-2 overlay.
- PageManager.showPageByName('cookies', true);
- self.verifyOpenPages_(['settings', 'content', 'cookies']);
- self.verifyHistory_(['', 'languages', 'cookies'], testDone);
- });
-});
-
-// Close an overlay.
-TEST_F('OptionsWebUIExtendedTest', 'CloseOverlay', function() {
- // Open a layer-1 overlay, then a layer-2 overlay on top of it.
- PageManager.showPageByName('languages', true);
- this.verifyOpenPages_(['settings', 'languages']);
- PageManager.showPageByName('addLanguage', true);
- this.verifyOpenPages_(['settings', 'languages', 'addLanguage']);
-
- var self = this;
- this.verifyHistory_(['', 'languages', 'addLanguage'], function() {
- // Close the layer-2 overlay.
- PageManager.closeOverlay();
- self.verifyOpenPages_(['settings', 'languages']);
- self.verifyHistory_(
- ['', 'languages', 'addLanguage', 'languages'],
- function() {
- // Close the layer-1 overlay.
- PageManager.closeOverlay();
- self.verifyOpenPages_(['settings'], '');
- self.verifyHistory_(
- ['', 'languages', 'addLanguage', 'languages', ''],
- function noop() {});
- waitUntilHidden([$('overlay-container-1'), $('overlay-container-2')]);
- });
- });
-});
-
-// Hashes are maintained separately for each page and are preserved when
-// overlays close.
-TEST_F('OptionsWebUIExtendedTest', 'CloseOverlayWithHashes', function() {
- // Open an overlay on top of the search page.
- PageManager.showPageByName('search', true, {hash: '#1'});
- this.verifyOpenPages_(['settings', 'search'], 'search#1');
- PageManager.showPageByName('languages', true, {hash: '#2'});
- this.verifyOpenPages_(['settings', 'search', 'languages'],
- 'languages#2');
- PageManager.showPageByName('addLanguage', true, {hash: '#3'});
- this.verifyOpenPages_(['settings', 'search', 'languages', 'addLanguage'],
- 'addLanguage#3');
-
- this.verifyHistory_(['', 'search#1', 'languages#2', 'addLanguage#3'],
- function() {
- // Close the layer-2 overlay.
- PageManager.closeOverlay();
- this.verifyOpenPages_(['settings', 'search', 'languages'], 'languages#2');
- this.verifyHistory_(
- ['', 'search#1', 'languages#2', 'addLanguage#3', 'languages#2'],
- function() {
- // Close the layer-1 overlay.
- PageManager.closeOverlay();
- this.verifyOpenPages_(['settings', 'search'], 'search#1');
- this.verifyHistory_(
- ['', 'search#1', 'languages#2', 'addLanguage#3', 'languages#2',
- 'search#1'],
- function noop() {});
- waitUntilHidden([$('overlay-container-1'), $('overlay-container-2')]);
- }.bind(this));
- }.bind(this));
-});
-
-// Test that closing an overlay that did not push history when opening does not
-// again push history.
-TEST_F('OptionsWebUIExtendedTest', 'CloseOverlayNoHistory', function() {
- // Open the do not track confirmation prompt.
- PageManager.showPageByName('doNotTrackConfirm', false);
-
- // Opening the prompt does not add to the history.
- this.verifyHistory_([''], function() {
- // Close the overlay.
- PageManager.closeOverlay();
- // Still no history changes.
- this.verifyHistory_([''], function noop() {});
- waitUntilHidden([$('overlay-container-1')]);
- }.bind(this));
-});
-
-// Make sure an overlay isn't closed (even temporarily) when another overlay is
-// opened on top.
-TEST_F('OptionsWebUIExtendedTest', 'OverlayAboveNoReset', function() {
- // Open a layer-1 overlay.
- PageManager.showPageByName('languages', true);
- this.verifyOpenPages_(['settings', 'languages']);
-
- // Open a layer-2 overlay on top. This should not close 'languages'.
- this.prohibitChangesToOverlay_(options.LanguageOptions.getInstance());
- PageManager.showPageByName('addLanguage', true);
- this.verifyOpenPages_(['settings', 'languages', 'addLanguage']);
- testDone();
-});
-
-TEST_F('OptionsWebUIExtendedTest', 'OverlayTabNavigation', function() {
- // Open a layer-1 overlay, then a layer-2 overlay on top of it.
- PageManager.showPageByName('languages', true);
- PageManager.showPageByName('addLanguage', true);
- var self = this;
-
- // Go back twice, then forward twice.
- self.verifyOpenPages_(['settings', 'languages', 'addLanguage']);
- self.verifyHistory_(['', 'languages', 'addLanguage'], function() {
- window.history.back();
- waitForPopstate(function() {
- self.verifyOpenPages_(['settings', 'languages']);
- self.verifyHistory_(['', 'languages'], function() {
- window.history.back();
- waitForPopstate(function() {
- self.verifyOpenPages_(['settings'], '');
- self.verifyHistory_([''], function() {
- window.history.forward();
- waitForPopstate(function() {
- self.verifyOpenPages_(['settings', 'languages']);
- self.verifyHistory_(['', 'languages'], function() {
- window.history.forward();
- waitForPopstate(function() {
- self.verifyOpenPages_(
- ['settings', 'languages', 'addLanguage']);
- self.verifyHistory_(
- ['', 'languages', 'addLanguage'], testDone);
- });
- });
- });
- });
- });
- });
- });
- });
-});
-
-// Going "back" to an overlay that's a child of the current overlay shouldn't
-// close the current one.
-TEST_F('OptionsWebUIExtendedTest', 'OverlayBackToChild', function() {
- // Open a layer-1 overlay, then a layer-2 overlay on top of it.
- PageManager.showPageByName('languages', true);
- PageManager.showPageByName('addLanguage', true);
- var self = this;
-
- self.verifyOpenPages_(['settings', 'languages', 'addLanguage']);
- self.verifyHistory_(['', 'languages', 'addLanguage'], function() {
- // Close the top overlay, then go back to it.
- PageManager.closeOverlay();
- self.verifyOpenPages_(['settings', 'languages']);
- self.verifyHistory_(
- ['', 'languages', 'addLanguage', 'languages'],
- function() {
- // Going back to the 'addLanguage' page should not close 'languages'.
- self.prohibitChangesToOverlay_(options.LanguageOptions.getInstance());
- window.history.back();
- waitForPopstate(function() {
- self.verifyOpenPages_(['settings', 'languages', 'addLanguage']);
- self.verifyHistory_(['', 'languages', 'addLanguage'],
- testDone);
- });
- });
- });
-});
-
-// Going back to an unrelated overlay should close the overlay and its parent.
-TEST_F('OptionsWebUIExtendedTest', 'OverlayBackToUnrelated', function() {
- // Open a layer-1 overlay, then an unrelated layer-2 overlay.
- PageManager.showPageByName('languages', true);
- PageManager.showPageByName('cookies', true);
- var self = this;
- self.verifyOpenPages_(['settings', 'content', 'cookies']);
- self.verifyHistory_(['', 'languages', 'cookies'], function() {
- window.history.back();
- waitForPopstate(function() {
- self.verifyOpenPages_(['settings', 'languages']);
- testDone();
- });
- });
-});
-
-// Verify history changes properly while the page is loading.
-TEST_F('OptionsWebUIExtendedTest', 'HistoryUpdatedAfterLoading', function() {
- var loc = location.href;
-
- document.documentElement.classList.add('loading');
- assertTrue(PageManager.isLoading());
- PageManager.showPageByName('searchEngines');
- expectNotEquals(loc, location.href);
-
- document.documentElement.classList.remove('loading');
- assertFalse(PageManager.isLoading());
- PageManager.showDefaultPage();
- expectEquals(loc, location.href);
-
- testDone();
-});
-
-// A tip should be shown or hidden depending on whether this profile manages any
-// supervised users.
-TEST_F('OptionsWebUIExtendedTest', 'SupervisingUsers', function() {
- // We start managing no supervised users.
- assertTrue($('profiles-supervised-dashboard-tip').hidden);
-
- // Remove all supervised users, then add some, watching for the pref change
- // notifications and UI updates in each case. Any non-empty pref dictionary
- // is interpreted as having supervised users.
- chrome.send('optionsTestSetPref', [SUPERVISED_USERS_PREF, {key: 'value'}]);
- waitForResponse(BrowserOptions, 'updateManagesSupervisedUsers', function() {
- assertFalse($('profiles-supervised-dashboard-tip').hidden);
- chrome.send('optionsTestSetPref', [SUPERVISED_USERS_PREF, {}]);
- waitForResponse(BrowserOptions, 'updateManagesSupervisedUsers', function() {
- assertTrue($('profiles-supervised-dashboard-tip').hidden);
- testDone();
- });
- });
-});
-
-/**
- * TestFixture that loads the options page at a bogus URL.
- * @extends {OptionsWebUIExtendedTest}
- * @constructor
- */
-function OptionsWebUIRedirectTest() {
- OptionsWebUIExtendedTest.call(this);
-}
-
-OptionsWebUIRedirectTest.prototype = {
- __proto__: OptionsWebUIExtendedTest.prototype,
-
- /** @override */
- browsePreload: 'chrome://settings-frame/nonexistantPage',
-};
-
-TEST_F('OptionsWebUIRedirectTest', 'TestURL', function() {
- assertEquals('chrome://settings-frame/', document.location.href);
- this.verifyHistory_([''], testDone);
-});
« no previous file with comments | « chrome/browser/ui/webui/options/options_browsertest.cc ('k') | chrome/browser/ui/webui/options/options_browsertest_base.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698