| // 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('#if !defined(OS_CHROMEOS)'); |
| |
| /** |
| * Test fixture for sync setup WebUI testing. |
| * @constructor |
| * @extends {testing.Test} |
| */ |
| function SyncSetupWebUITest() {} |
| |
| SyncSetupWebUITest.prototype = { |
| __proto__: testing.Test.prototype, |
| |
| /** |
| * Browse to the settings sub-frame. |
| */ |
| browsePreload: 'chrome://settings-frame', |
| |
| /** @override */ |
| preLoad: function() { |
| this.makeAndRegisterMockHandler(['SyncSetupConfigure', |
| 'SyncSetupShowSetupUI', |
| 'SyncSetupStartSignIn', |
| ]); |
| }, |
| |
| /** |
| * Verifies starting point is not synced. |
| */ |
| verifyUnsynced: function() { |
| assertFalse(BrowserOptions.getInstance().signedIn_); |
| }, |
| |
| /** |
| * Clicks the "Sign in to Chrome" button. |
| */ |
| startSyncing: function() { |
| var startStopSyncButton = BrowserOptions.getStartStopSyncButton(); |
| assertNotEquals(null, startStopSyncButton); |
| startStopSyncButton.click(); |
| }, |
| }; |
| |
| /** |
| * Async version of SyncSetupWebUITest. |
| * @extends {SyncSetupWebUITest} |
| * @constructor |
| */ |
| function SyncSetupWebUITestAsync() {} |
| |
| SyncSetupWebUITestAsync.prototype = { |
| __proto__: SyncSetupWebUITest.prototype, |
| |
| /** @override */ |
| isAsync: true, |
| }; |
| |
| // Verify that initial state is unsynced, click the sign in button, verify |
| // that the sync setup dialog appears, and dismiss it. |
| TEST_F('SyncSetupWebUITestAsync', 'VerifySignIn', function() { |
| // Make sure the user is not starting off in the signed in or syncing state. |
| this.verifyUnsynced(); |
| |
| // Handle SyncSetupShowSetupUI by navigating to chrome://settings/syncSetup. |
| this.mockHandler.expects(once()).SyncSetupShowSetupUI(). |
| will(callFunction(function() { |
| OptionsPage.navigateToPage('syncSetup'); |
| })); |
| |
| // Handle SyncSetupStartSignIn by displaying the sync setup dialog, verifying |
| // that a confirmation dialog appears, and clicking OK to dismiss the dialog. |
| // Note that this test doesn't actually do a gaia sign in. |
| this.mockHandler.expects(once()).SyncSetupStartSignIn(). |
| will(callFunction(function() { |
| SyncSetupOverlay.showSyncSetupPage('configure'); |
| var okButton = $('confirm-everything-ok'); |
| assertNotEquals(null, okButton); |
| okButton.click(); |
| })); |
| |
| // The test completes after the sync config is sent out. |
| this.mockHandler.expects(once()).SyncSetupConfigure(ANYTHING). |
| will(callFunction(testDone)); |
| |
| // For testing, don't wait to execute timeouts. |
| var oldSetTimeout = setTimeout; |
| setTimeout = function(fn, timeout) { |
| oldSetTimeout(fn, 0); |
| }; |
| |
| // Kick off the test by clicking the "Sign in to Chrome..." button. |
| this.startSyncing(); |
| }); |
| |
| GEN('#endif // OS_CHROMEOS'); |