Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 GEN('#include "chrome/browser/ui/webui/options/options_browsertest.h"'); | 5 GEN('#include "chrome/browser/ui/webui/options/options_browsertest.h"'); |
| 6 | 6 |
| 7 /** @const */ var MANAGED_USERS_PREF = 'profile.managed_users'; | 7 /** @const */ var MANAGED_USERS_PREF = 'profile.managed_users'; |
| 8 | 8 |
| 9 /** | 9 /** |
| 10 * Wait for the method specified by |methodName|, on the |object| object, to be | 10 * Wait for the method specified by |methodName|, on the |object| object, to be |
| (...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 374 | 374 |
| 375 for (var i = 0; i < expectedSorted.length; ++i) { | 375 for (var i = 0; i < expectedSorted.length; ++i) { |
| 376 assertEquals(expectedSorted[i], resultSorted[i], errorMessage); | 376 assertEquals(expectedSorted[i], resultSorted[i], errorMessage); |
| 377 } | 377 } |
| 378 }, | 378 }, |
| 379 | 379 |
| 380 /** | 380 /** |
| 381 * Verifies that the correct pages are currently open/visible. | 381 * Verifies that the correct pages are currently open/visible. |
| 382 * @param {!Array.<string>} expectedPages An array of page names expected to | 382 * @param {!Array.<string>} expectedPages An array of page names expected to |
| 383 * be open, with the topmost listed last. | 383 * be open, with the topmost listed last. |
| 384 * @param {string=} expectedUrl The URL path, including hash, expected to be | 384 * @param {string=} opt_expectedUrl The URL path, including hash, expected to |
| 385 * open. If undefined, the topmost (last) page name in |expectedPages| | 385 * be open. If undefined, the topmost (last) page name in |expectedPages| |
| 386 * will be used. In either case, 'chrome://settings-frame/' will be | 386 * will be used. In either case, 'chrome://settings-frame/' will be |
| 387 * prepended. | 387 * prepended. |
| 388 * @private | 388 * @private |
| 389 */ | 389 */ |
| 390 verifyOpenPages_: function(expectedPages, expectedUrl) { | 390 verifyOpenPages_: function(expectedPages, opt_expectedUrl) { |
| 391 // Check the topmost page. | 391 // Check the topmost page. |
| 392 assertEquals(null, OptionsPage.getVisibleBubble()); | 392 expectEquals(null, OptionsPage.getVisibleBubble()); |
| 393 var currentPage = OptionsPage.getTopmostVisiblePage(); | 393 var currentPage = OptionsPage.getTopmostVisiblePage(); |
| 394 | 394 |
| 395 var lastExpected = expectedPages[expectedPages.length - 1]; | 395 var lastExpected = expectedPages[expectedPages.length - 1]; |
| 396 assertEquals(lastExpected, currentPage.name); | 396 expectEquals(lastExpected, currentPage.name); |
| 397 // We'd like to check the title too, but we have to load the settings-frame | 397 // We'd like to check the title too, but we have to load the settings-frame |
| 398 // instead of the outer settings page in order to have access to | 398 // instead of the outer settings page in order to have access to |
| 399 // OptionsPage, and setting the title from within the settings-frame fails | 399 // OptionsPage, and setting the title from within the settings-frame fails |
| 400 // because of cross-origin access restrictions. | 400 // because of cross-origin access restrictions. |
| 401 // TODO(pamg): Add a test fixture that loads chrome://settings and uses | 401 // TODO(pamg): Add a test fixture that loads chrome://settings and uses |
| 402 // UI elements to access sub-pages, so we can test the titles and | 402 // UI elements to access sub-pages, so we can test the titles and |
| 403 // search-page URLs. | 403 // search-page URLs. |
| 404 var fullExpectedUrl = 'chrome://settings-frame/' + | 404 opt_expectedUrl = |
| 405 (expectedUrl ? expectedUrl : lastExpected); | 405 (opt_expectedUrl == undefined) ? lastExpected : opt_expectedUrl; |
|
Dan Beam
2014/05/19 23:49:10
nit: rather than re-use this opt_ variable here, d
davidben
2014/05/20 00:12:55
Done.
| |
| 406 assertEquals(fullExpectedUrl, window.location.href); | 406 var fullExpectedUrl = 'chrome://settings-frame/' + opt_expectedUrl; |
| 407 expectEquals(fullExpectedUrl, window.location.href); | |
| 407 | 408 |
| 408 // Collect open pages. | 409 // Collect open pages. |
| 409 var allPageNames = Object.keys(OptionsPage.registeredPages).concat( | 410 var allPageNames = Object.keys(OptionsPage.registeredPages).concat( |
| 410 Object.keys(OptionsPage.registeredOverlayPages)); | 411 Object.keys(OptionsPage.registeredOverlayPages)); |
| 411 var openPages = []; | 412 var openPages = []; |
| 412 for (var i = 0; i < allPageNames.length; ++i) { | 413 for (var i = 0; i < allPageNames.length; ++i) { |
| 413 var name = allPageNames[i]; | 414 var name = allPageNames[i]; |
| 414 var page = OptionsPage.registeredPages[name] || | 415 var page = OptionsPage.registeredPages[name] || |
| 415 OptionsPage.registeredOverlayPages[name]; | 416 OptionsPage.registeredOverlayPages[name]; |
| 416 if (page.visible) | 417 if (page.visible) |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 476 // Test disabled because it's flaky. crbug.com/303841 | 477 // Test disabled because it's flaky. crbug.com/303841 |
| 477 TEST_F('OptionsWebUIExtendedTest', 'DISABLED_ShowSearchPageNoQuery', | 478 TEST_F('OptionsWebUIExtendedTest', 'DISABLED_ShowSearchPageNoQuery', |
| 478 function() { | 479 function() { |
| 479 OptionsPage.showPageByName('search'); | 480 OptionsPage.showPageByName('search'); |
| 480 this.verifyOpenPages_(['settings']); | 481 this.verifyOpenPages_(['settings']); |
| 481 this.verifyHistory_(['settings'], testDone); | 482 this.verifyHistory_(['settings'], testDone); |
| 482 }); | 483 }); |
| 483 | 484 |
| 484 // Show a page without updating history. | 485 // Show a page without updating history. |
| 485 TEST_F('OptionsWebUIExtendedTest', 'ShowPageNoHistory', function() { | 486 TEST_F('OptionsWebUIExtendedTest', 'ShowPageNoHistory', function() { |
| 486 this.verifyOpenPages_(['settings']); | 487 this.verifyOpenPages_(['settings'], ''); |
| 487 // There are only two main pages, 'settings' and 'search'. It's not possible | 488 // There are only two main pages, 'settings' and 'search'. It's not possible |
| 488 // to show the search page using OptionsPage.showPageByName, because it | 489 // to show the search page using OptionsPage.showPageByName, because it |
| 489 // reverts to the settings page if it has no search text set. So we show the | 490 // reverts to the settings page if it has no search text set. So we show the |
| 490 // search page by performing a search, then test showPageByName. | 491 // search page by performing a search, then test showPageByName. |
| 491 $('search-field').onsearch({currentTarget: {value: 'query'}}); | 492 $('search-field').onsearch({currentTarget: {value: 'query'}}); |
| 492 | 493 |
| 493 // The settings page is also still "open" (i.e., visible), in order to show | 494 // The settings page is also still "open" (i.e., visible), in order to show |
| 494 // the search results. Furthermore, the URL hasn't been updated in the parent | 495 // the search results. Furthermore, the URL hasn't been updated in the parent |
| 495 // page, because we've loaded the chrome-settings frame instead of the whole | 496 // page, because we've loaded the chrome-settings frame instead of the whole |
| 496 // settings page, so the cross-origin call to set the URL fails. | 497 // settings page, so the cross-origin call to set the URL fails. |
| 497 this.verifyOpenPages_(['settings', 'search'], 'settings#query'); | 498 this.verifyOpenPages_(['settings', 'search'], 'search#query'); |
| 498 var self = this; | 499 var self = this; |
| 499 this.verifyHistory_(['settings', 'settings#query'], function() { | 500 this.verifyHistory_(['', 'search#query'], function() { |
| 500 OptionsPage.showPageByName('settings', false); | 501 OptionsPage.showPageByName('settings', false); |
| 501 self.verifyOpenPages_(['settings'], 'settings#query'); | 502 self.verifyOpenPages_(['settings'], 'search#query'); |
| 502 self.verifyHistory_(['settings', 'settings#query'], testDone); | 503 self.verifyHistory_(['', 'search#query'], testDone); |
| 503 }); | 504 }); |
| 504 }); | 505 }); |
| 505 | 506 |
| 506 TEST_F('OptionsWebUIExtendedTest', 'ShowPageWithHistory', function() { | 507 TEST_F('OptionsWebUIExtendedTest', 'ShowPageWithHistory', function() { |
| 507 // See comments for ShowPageNoHistory. | 508 // See comments for ShowPageNoHistory. |
| 508 $('search-field').onsearch({currentTarget: {value: 'query'}}); | 509 $('search-field').onsearch({currentTarget: {value: 'query'}}); |
| 509 var self = this; | 510 var self = this; |
| 510 this.verifyHistory_(['settings', 'settings#query'], function() { | 511 this.verifyHistory_(['', 'search#query'], function() { |
| 511 OptionsPage.showPageByName('settings', true); | 512 OptionsPage.showPageByName('settings', true); |
| 512 self.verifyOpenPages_(['settings'], 'settings#query'); | 513 self.verifyOpenPages_(['settings'], '#query'); |
| 513 self.verifyHistory_(['settings', 'settings#query', 'settings#query'], | 514 self.verifyHistory_(['', 'search#query', '#query'], |
| 514 testDone); | 515 testDone); |
| 515 }); | 516 }); |
| 516 }); | 517 }); |
| 517 | 518 |
| 518 TEST_F('OptionsWebUIExtendedTest', 'ShowPageReplaceHistory', function() { | 519 TEST_F('OptionsWebUIExtendedTest', 'ShowPageReplaceHistory', function() { |
| 519 // See comments for ShowPageNoHistory. | 520 // See comments for ShowPageNoHistory. |
| 520 $('search-field').onsearch({currentTarget: {value: 'query'}}); | 521 $('search-field').onsearch({currentTarget: {value: 'query'}}); |
| 521 var self = this; | 522 var self = this; |
| 522 this.verifyHistory_(['settings', 'settings#query'], function() { | 523 this.verifyHistory_(['', 'search#query'], function() { |
| 523 OptionsPage.showPageByName('settings', true, {'replaceState': true}); | 524 OptionsPage.showPageByName('settings', true, {'replaceState': true}); |
| 524 self.verifyOpenPages_(['settings'], 'settings#query'); | 525 self.verifyOpenPages_(['settings'], '#query'); |
| 525 self.verifyHistory_(['settings', 'settings#query'], testDone); | 526 self.verifyHistory_(['', '#query'], testDone); |
| 526 }); | 527 }); |
| 527 }); | 528 }); |
| 528 | 529 |
| 529 // This should be identical to ShowPageWithHisory. | 530 // This should be identical to ShowPageWithHisory. |
| 530 TEST_F('OptionsWebUIExtendedTest', 'NavigateToPage', function() { | 531 TEST_F('OptionsWebUIExtendedTest', 'NavigateToPage', function() { |
| 531 // See comments for ShowPageNoHistory. | 532 // See comments for ShowPageNoHistory. |
| 532 $('search-field').onsearch({currentTarget: {value: 'query'}}); | 533 $('search-field').onsearch({currentTarget: {value: 'query'}}); |
| 533 var self = this; | 534 var self = this; |
| 534 this.verifyHistory_(['settings', 'settings#query'], function() { | 535 this.verifyHistory_(['', 'search#query'], function() { |
| 535 OptionsPage.navigateToPage('settings'); | 536 OptionsPage.navigateToPage('settings'); |
| 536 self.verifyOpenPages_(['settings'], 'settings#query'); | 537 self.verifyOpenPages_(['settings'], '#query'); |
| 537 self.verifyHistory_(['settings', 'settings#query', 'settings#query'], | 538 self.verifyHistory_(['', 'search#query', '#query'], |
| 538 testDone); | 539 testDone); |
| 539 }); | 540 }); |
| 540 }); | 541 }); |
| 541 | 542 |
| 542 // Settings overlays are much more straightforward than settings pages, opening | 543 // Settings overlays are much more straightforward than settings pages, opening |
| 543 // normally with none of the latter's quirks in the expected history or URL. | 544 // normally with none of the latter's quirks in the expected history or URL. |
| 544 TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayNoHistory', function() { | 545 TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayNoHistory', function() { |
| 545 // Open a layer-1 overlay, not updating history. | 546 // Open a layer-1 overlay, not updating history. |
| 546 OptionsPage.showPageByName('languages', false); | 547 OptionsPage.showPageByName('languages', false); |
| 547 this.verifyOpenPages_(['settings', 'languages'], 'settings'); | 548 this.verifyOpenPages_(['settings', 'languages'], ''); |
| 548 | 549 |
| 549 var self = this; | 550 var self = this; |
| 550 this.verifyHistory_(['settings'], function() { | 551 this.verifyHistory_([''], function() { |
| 551 // Open a layer-2 overlay for which the layer-1 is a parent, not updating | 552 // Open a layer-2 overlay for which the layer-1 is a parent, not updating |
| 552 // history. | 553 // history. |
| 553 OptionsPage.showPageByName('addLanguage', false); | 554 OptionsPage.showPageByName('addLanguage', false); |
| 554 self.verifyOpenPages_(['settings', 'languages', 'addLanguage'], | 555 self.verifyOpenPages_(['settings', 'languages', 'addLanguage'], |
| 555 'settings'); | 556 ''); |
| 556 self.verifyHistory_(['settings'], testDone); | 557 self.verifyHistory_([''], testDone); |
| 557 }); | 558 }); |
| 558 }); | 559 }); |
| 559 | 560 |
| 560 TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayWithHistory', function() { | 561 TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayWithHistory', function() { |
| 561 // Open a layer-1 overlay, updating history. | 562 // Open a layer-1 overlay, updating history. |
| 562 OptionsPage.showPageByName('languages', true); | 563 OptionsPage.showPageByName('languages', true); |
| 563 this.verifyOpenPages_(['settings', 'languages']); | 564 this.verifyOpenPages_(['settings', 'languages']); |
| 564 | 565 |
| 565 var self = this; | 566 var self = this; |
| 566 this.verifyHistory_(['settings', 'languages'], function() { | 567 this.verifyHistory_(['', 'languages'], function() { |
| 567 // Open a layer-2 overlay, updating history. | 568 // Open a layer-2 overlay, updating history. |
| 568 OptionsPage.showPageByName('addLanguage', true); | 569 OptionsPage.showPageByName('addLanguage', true); |
| 569 self.verifyOpenPages_(['settings', 'languages', 'addLanguage']); | 570 self.verifyOpenPages_(['settings', 'languages', 'addLanguage']); |
| 570 self.verifyHistory_(['settings', 'languages', 'addLanguage'], testDone); | 571 self.verifyHistory_(['', 'languages', 'addLanguage'], testDone); |
| 571 }); | 572 }); |
| 572 }); | 573 }); |
| 573 | 574 |
| 574 TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayReplaceHistory', function() { | 575 TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayReplaceHistory', function() { |
| 575 // Open a layer-1 overlay, updating history. | 576 // Open a layer-1 overlay, updating history. |
| 576 OptionsPage.showPageByName('languages', true); | 577 OptionsPage.showPageByName('languages', true); |
| 577 var self = this; | 578 var self = this; |
| 578 this.verifyHistory_(['settings', 'languages'], function() { | 579 this.verifyHistory_(['', 'languages'], function() { |
| 579 // Open a layer-2 overlay, replacing history. | 580 // Open a layer-2 overlay, replacing history. |
| 580 OptionsPage.showPageByName('addLanguage', true, {'replaceState': true}); | 581 OptionsPage.showPageByName('addLanguage', true, {'replaceState': true}); |
| 581 self.verifyOpenPages_(['settings', 'languages', 'addLanguage']); | 582 self.verifyOpenPages_(['settings', 'languages', 'addLanguage']); |
| 582 self.verifyHistory_(['settings', 'addLanguage'], testDone); | 583 self.verifyHistory_(['', 'addLanguage'], testDone); |
| 583 }); | 584 }); |
| 584 }); | 585 }); |
| 585 | 586 |
| 586 // Directly show an overlay further above this page, i.e. one for which the | 587 // Directly show an overlay further above this page, i.e. one for which the |
| 587 // current page is an ancestor but not a parent. | 588 // current page is an ancestor but not a parent. |
| 588 TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayFurtherAbove', function() { | 589 TEST_F('OptionsWebUIExtendedTest', 'ShowOverlayFurtherAbove', function() { |
| 589 // Open a layer-2 overlay directly. | 590 // Open a layer-2 overlay directly. |
| 590 OptionsPage.showPageByName('addLanguage', true); | 591 OptionsPage.showPageByName('addLanguage', true); |
| 591 this.verifyOpenPages_(['settings', 'languages', 'addLanguage']); | 592 this.verifyOpenPages_(['settings', 'languages', 'addLanguage']); |
| 592 var self = this; | 593 var self = this; |
| 593 this.verifyHistory_(['settings', 'addLanguage'], testDone); | 594 this.verifyHistory_(['', 'addLanguage'], testDone); |
| 594 }); | 595 }); |
| 595 | 596 |
| 596 // Directly show a layer-2 overlay for which the layer-1 overlay is not a | 597 // Directly show a layer-2 overlay for which the layer-1 overlay is not a |
| 597 // parent. | 598 // parent. |
| 598 TEST_F('OptionsWebUIExtendedTest', 'ShowUnrelatedOverlay', function() { | 599 TEST_F('OptionsWebUIExtendedTest', 'ShowUnrelatedOverlay', function() { |
| 599 // Open a layer-1 overlay. | 600 // Open a layer-1 overlay. |
| 600 OptionsPage.showPageByName('languages', true); | 601 OptionsPage.showPageByName('languages', true); |
| 601 this.verifyOpenPages_(['settings', 'languages']); | 602 this.verifyOpenPages_(['settings', 'languages']); |
| 602 | 603 |
| 603 var self = this; | 604 var self = this; |
| 604 this.verifyHistory_(['settings', 'languages'], function() { | 605 this.verifyHistory_(['', 'languages'], function() { |
| 605 // Open an unrelated layer-2 overlay. | 606 // Open an unrelated layer-2 overlay. |
| 606 OptionsPage.showPageByName('cookies', true); | 607 OptionsPage.showPageByName('cookies', true); |
| 607 self.verifyOpenPages_(['settings', 'content', 'cookies']); | 608 self.verifyOpenPages_(['settings', 'content', 'cookies']); |
| 608 self.verifyHistory_(['settings', 'languages', 'cookies'], testDone); | 609 self.verifyHistory_(['', 'languages', 'cookies'], testDone); |
| 609 }); | 610 }); |
| 610 }); | 611 }); |
| 611 | 612 |
| 612 // Close an overlay. | 613 // Close an overlay. |
| 613 TEST_F('OptionsWebUIExtendedTest', 'CloseOverlay', function() { | 614 TEST_F('OptionsWebUIExtendedTest', 'CloseOverlay', function() { |
| 614 // Open a layer-1 overlay, then a layer-2 overlay on top of it. | 615 // Open a layer-1 overlay, then a layer-2 overlay on top of it. |
| 615 OptionsPage.showPageByName('languages', true); | 616 OptionsPage.showPageByName('languages', true); |
| 616 this.verifyOpenPages_(['settings', 'languages']); | 617 this.verifyOpenPages_(['settings', 'languages']); |
| 617 OptionsPage.showPageByName('addLanguage', true); | 618 OptionsPage.showPageByName('addLanguage', true); |
| 618 this.verifyOpenPages_(['settings', 'languages', 'addLanguage']); | 619 this.verifyOpenPages_(['settings', 'languages', 'addLanguage']); |
| 619 | 620 |
| 620 var self = this; | 621 var self = this; |
| 621 this.verifyHistory_(['settings', 'languages', 'addLanguage'], function() { | 622 this.verifyHistory_(['', 'languages', 'addLanguage'], function() { |
| 622 // Close the layer-2 overlay. | 623 // Close the layer-2 overlay. |
| 623 OptionsPage.closeOverlay(); | 624 OptionsPage.closeOverlay(); |
| 624 self.verifyOpenPages_(['settings', 'languages']); | 625 self.verifyOpenPages_(['settings', 'languages']); |
| 625 self.verifyHistory_( | 626 self.verifyHistory_( |
| 626 ['settings', 'languages', 'addLanguage', 'languages'], | 627 ['', 'languages', 'addLanguage', 'languages'], |
| 627 function() { | 628 function() { |
| 628 // Close the layer-1 overlay. | 629 // Close the layer-1 overlay. |
| 629 OptionsPage.closeOverlay(); | 630 OptionsPage.closeOverlay(); |
| 630 self.verifyOpenPages_(['settings']); | 631 self.verifyOpenPages_(['settings'], ''); |
| 631 self.verifyHistory_( | 632 self.verifyHistory_( |
| 632 ['settings', 'languages', 'addLanguage', 'languages', 'settings'], | 633 ['', 'languages', 'addLanguage', 'languages', ''], |
| 633 testDone); | 634 testDone); |
| 634 }); | 635 }); |
| 635 }); | 636 }); |
| 636 }); | 637 }); |
| 637 | 638 |
| 638 // Make sure an overlay isn't closed (even temporarily) when another overlay is | 639 // Make sure an overlay isn't closed (even temporarily) when another overlay is |
| 639 // opened on top. | 640 // opened on top. |
| 640 TEST_F('OptionsWebUIExtendedTest', 'OverlayAboveNoReset', function() { | 641 TEST_F('OptionsWebUIExtendedTest', 'OverlayAboveNoReset', function() { |
| 641 // Open a layer-1 overlay. | 642 // Open a layer-1 overlay. |
| 642 OptionsPage.showPageByName('languages', true); | 643 OptionsPage.showPageByName('languages', true); |
| 643 this.verifyOpenPages_(['settings', 'languages']); | 644 this.verifyOpenPages_(['settings', 'languages']); |
| 644 | 645 |
| 645 // Open a layer-2 overlay on top. This should not close 'languages'. | 646 // Open a layer-2 overlay on top. This should not close 'languages'. |
| 646 this.prohibitChangesToOverlay_(options.LanguageOptions.getInstance()); | 647 this.prohibitChangesToOverlay_(options.LanguageOptions.getInstance()); |
| 647 OptionsPage.showPageByName('addLanguage', true); | 648 OptionsPage.showPageByName('addLanguage', true); |
| 648 this.verifyOpenPages_(['settings', 'languages', 'addLanguage']); | 649 this.verifyOpenPages_(['settings', 'languages', 'addLanguage']); |
| 649 testDone(); | 650 testDone(); |
| 650 }); | 651 }); |
| 651 | 652 |
| 652 TEST_F('OptionsWebUIExtendedTest', 'OverlayTabNavigation', function() { | 653 TEST_F('OptionsWebUIExtendedTest', 'OverlayTabNavigation', function() { |
| 653 // Open a layer-1 overlay, then a layer-2 overlay on top of it. | 654 // Open a layer-1 overlay, then a layer-2 overlay on top of it. |
| 654 OptionsPage.showPageByName('languages', true); | 655 OptionsPage.showPageByName('languages', true); |
| 655 OptionsPage.showPageByName('addLanguage', true); | 656 OptionsPage.showPageByName('addLanguage', true); |
| 656 var self = this; | 657 var self = this; |
| 657 | 658 |
| 658 // Go back twice, then forward twice. | 659 // Go back twice, then forward twice. |
| 659 self.verifyOpenPages_(['settings', 'languages', 'addLanguage']); | 660 self.verifyOpenPages_(['settings', 'languages', 'addLanguage']); |
| 660 self.verifyHistory_(['settings', 'languages', 'addLanguage'], function() { | 661 self.verifyHistory_(['', 'languages', 'addLanguage'], function() { |
| 661 window.history.back(); | 662 window.history.back(); |
| 662 waitForPopstate(function() { | 663 waitForPopstate(function() { |
| 663 self.verifyOpenPages_(['settings', 'languages']); | 664 self.verifyOpenPages_(['settings', 'languages']); |
| 664 self.verifyHistory_(['settings', 'languages'], function() { | 665 self.verifyHistory_(['', 'languages'], function() { |
| 665 window.history.back(); | 666 window.history.back(); |
| 666 waitForPopstate(function() { | 667 waitForPopstate(function() { |
| 667 self.verifyOpenPages_(['settings']); | 668 self.verifyOpenPages_(['settings'], ''); |
| 668 self.verifyHistory_(['settings'], function() { | 669 self.verifyHistory_([''], function() { |
| 669 window.history.forward(); | 670 window.history.forward(); |
| 670 waitForPopstate(function() { | 671 waitForPopstate(function() { |
| 671 self.verifyOpenPages_(['settings', 'languages']); | 672 self.verifyOpenPages_(['settings', 'languages']); |
| 672 self.verifyHistory_(['settings', 'languages'], function() { | 673 self.verifyHistory_(['', 'languages'], function() { |
| 673 window.history.forward(); | 674 window.history.forward(); |
| 674 waitForPopstate(function() { | 675 waitForPopstate(function() { |
| 675 self.verifyOpenPages_( | 676 self.verifyOpenPages_( |
| 676 ['settings', 'languages', 'addLanguage']); | 677 ['settings', 'languages', 'addLanguage']); |
| 677 self.verifyHistory_( | 678 self.verifyHistory_( |
| 678 ['settings', 'languages', 'addLanguage'], testDone); | 679 ['', 'languages', 'addLanguage'], testDone); |
| 679 }); | 680 }); |
| 680 }); | 681 }); |
| 681 }); | 682 }); |
| 682 }); | 683 }); |
| 683 }); | 684 }); |
| 684 }); | 685 }); |
| 685 }); | 686 }); |
| 686 }); | 687 }); |
| 687 }); | 688 }); |
| 688 | 689 |
| 689 // Going "back" to an overlay that's a child of the current overlay shouldn't | 690 // Going "back" to an overlay that's a child of the current overlay shouldn't |
| 690 // close the current one. | 691 // close the current one. |
| 691 TEST_F('OptionsWebUIExtendedTest', 'OverlayBackToChild', function() { | 692 TEST_F('OptionsWebUIExtendedTest', 'OverlayBackToChild', function() { |
| 692 // Open a layer-1 overlay, then a layer-2 overlay on top of it. | 693 // Open a layer-1 overlay, then a layer-2 overlay on top of it. |
| 693 OptionsPage.showPageByName('languages', true); | 694 OptionsPage.showPageByName('languages', true); |
| 694 OptionsPage.showPageByName('addLanguage', true); | 695 OptionsPage.showPageByName('addLanguage', true); |
| 695 var self = this; | 696 var self = this; |
| 696 | 697 |
| 697 self.verifyOpenPages_(['settings', 'languages', 'addLanguage']); | 698 self.verifyOpenPages_(['settings', 'languages', 'addLanguage']); |
| 698 self.verifyHistory_(['settings', 'languages', 'addLanguage'], function() { | 699 self.verifyHistory_(['', 'languages', 'addLanguage'], function() { |
| 699 // Close the top overlay, then go back to it. | 700 // Close the top overlay, then go back to it. |
| 700 OptionsPage.closeOverlay(); | 701 OptionsPage.closeOverlay(); |
| 701 self.verifyOpenPages_(['settings', 'languages']); | 702 self.verifyOpenPages_(['settings', 'languages']); |
| 702 self.verifyHistory_( | 703 self.verifyHistory_( |
| 703 ['settings', 'languages', 'addLanguage', 'languages'], | 704 ['', 'languages', 'addLanguage', 'languages'], |
| 704 function() { | 705 function() { |
| 705 // Going back to the 'addLanguage' page should not close 'languages'. | 706 // Going back to the 'addLanguage' page should not close 'languages'. |
| 706 self.prohibitChangesToOverlay_(options.LanguageOptions.getInstance()); | 707 self.prohibitChangesToOverlay_(options.LanguageOptions.getInstance()); |
| 707 window.history.back(); | 708 window.history.back(); |
| 708 waitForPopstate(function() { | 709 waitForPopstate(function() { |
| 709 self.verifyOpenPages_(['settings', 'languages', 'addLanguage']); | 710 self.verifyOpenPages_(['settings', 'languages', 'addLanguage']); |
| 710 self.verifyHistory_(['settings', 'languages', 'addLanguage'], | 711 self.verifyHistory_(['', 'languages', 'addLanguage'], |
| 711 testDone); | 712 testDone); |
| 712 }); | 713 }); |
| 713 }); | 714 }); |
| 714 }); | 715 }); |
| 715 }); | 716 }); |
| 716 | 717 |
| 717 // Going back to an unrelated overlay should close the overlay and its parent. | 718 // Going back to an unrelated overlay should close the overlay and its parent. |
| 718 TEST_F('OptionsWebUIExtendedTest', 'OverlayBackToUnrelated', function() { | 719 TEST_F('OptionsWebUIExtendedTest', 'OverlayBackToUnrelated', function() { |
| 719 // Open a layer-1 overlay, then an unrelated layer-2 overlay. | 720 // Open a layer-1 overlay, then an unrelated layer-2 overlay. |
| 720 OptionsPage.showPageByName('languages', true); | 721 OptionsPage.showPageByName('languages', true); |
| 721 OptionsPage.showPageByName('cookies', true); | 722 OptionsPage.showPageByName('cookies', true); |
| 722 var self = this; | 723 var self = this; |
| 723 self.verifyOpenPages_(['settings', 'content', 'cookies']); | 724 self.verifyOpenPages_(['settings', 'content', 'cookies']); |
| 724 self.verifyHistory_(['settings', 'languages', 'cookies'], function() { | 725 self.verifyHistory_(['', 'languages', 'cookies'], function() { |
| 725 window.history.back(); | 726 window.history.back(); |
| 726 waitForPopstate(function() { | 727 waitForPopstate(function() { |
| 727 self.verifyOpenPages_(['settings', 'languages']); | 728 self.verifyOpenPages_(['settings', 'languages']); |
| 728 testDone(); | 729 testDone(); |
| 729 }); | 730 }); |
| 730 }); | 731 }); |
| 731 }); | 732 }); |
| 732 | 733 |
| 733 // Verify history changes properly while the page is loading. | 734 // Verify history changes properly while the page is loading. |
| 734 TEST_F('OptionsWebUIExtendedTest', 'HistoryUpdatedAfterLoading', function() { | 735 TEST_F('OptionsWebUIExtendedTest', 'HistoryUpdatedAfterLoading', function() { |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 759 chrome.send('optionsTestSetPref', [MANAGED_USERS_PREF, {key: 'value'}]); | 760 chrome.send('optionsTestSetPref', [MANAGED_USERS_PREF, {key: 'value'}]); |
| 760 waitForResponse(BrowserOptions, 'updateManagesSupervisedUsers', function() { | 761 waitForResponse(BrowserOptions, 'updateManagesSupervisedUsers', function() { |
| 761 assertFalse($('profiles-supervised-dashboard-tip').hidden); | 762 assertFalse($('profiles-supervised-dashboard-tip').hidden); |
| 762 chrome.send('optionsTestSetPref', [MANAGED_USERS_PREF, {}]); | 763 chrome.send('optionsTestSetPref', [MANAGED_USERS_PREF, {}]); |
| 763 waitForResponse(BrowserOptions, 'updateManagesSupervisedUsers', function() { | 764 waitForResponse(BrowserOptions, 'updateManagesSupervisedUsers', function() { |
| 764 assertTrue($('profiles-supervised-dashboard-tip').hidden); | 765 assertTrue($('profiles-supervised-dashboard-tip').hidden); |
| 765 testDone(); | 766 testDone(); |
| 766 }); | 767 }); |
| 767 }); | 768 }); |
| 768 }); | 769 }); |
| OLD | NEW |