Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / browser / ui / webui / sync_setup_browsertest.js
blobe65c4026e26595716324876aa4242f40b592fdde
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
3 // found in the LICENSE file.
5 GEN('#if !defined(OS_CHROMEOS)');
7 /**
8  * Test fixture for sync setup WebUI testing.
9  * @constructor
10  * @extends {testing.Test}
11  */
12 function SyncSetupWebUITest() {}
14 SyncSetupWebUITest.prototype = {
15   __proto__: testing.Test.prototype,
17   /**
18    * Browse to the settings sub-frame.
19    */
20   browsePreload: 'chrome://settings-frame',
22   /** @override */
23   preLoad: function() {
24     this.makeAndRegisterMockHandler(['SyncSetupConfigure',
25                                      'SyncSetupShowSetupUI',
26                                      'SyncSetupStartSignIn',
27                                     ]);
28   },
30   /**
31    * Verifies starting point is not synced.
32    */
33   verifyUnsynced: function() {
34     assertFalse(BrowserOptions.getInstance().signedIn_);
35   },
37   /**
38    * Clicks the "Sign in to Chrome" button.
39    */
40   startSyncing: function() {
41     var startStopSyncButton = BrowserOptions.getStartStopSyncButton();
42     assertNotEquals(null, startStopSyncButton);
43     startStopSyncButton.click();
44   },
47 /**
48  * Async version of SyncSetupWebUITest.
49  * @extends {SyncSetupWebUITest}
50  * @constructor
51  */
52 function SyncSetupWebUITestAsync() {}
54 SyncSetupWebUITestAsync.prototype = {
55   __proto__: SyncSetupWebUITest.prototype,
57   /** @override */
58   isAsync: true,
60   /**
61    * Verifies that initial state is unsynced and simulates signing in.
62    * @override
63    */
64   setUp: function() {
65     SyncSetupWebUITest.prototype.setUp.call(this);
67     // For testing, don't wait to execute timeouts.
68     var oldSetTimeout = setTimeout;
69     setTimeout = function(fn, timeout) {
70       oldSetTimeout(fn, 0);
71     };
73     // Make sure the user is not starting off in the signed in or syncing state.
74     this.verifyUnsynced();
76     // Handle SyncSetupShowSetupUI by navigating to chrome://settings/syncSetup.
77     this.mockHandler.expects(once()).SyncSetupShowSetupUI().will(callFunction(
78         function() {
79       PageManager.showPageByName('syncSetup');
80     }));
81   },
84 TEST_F('SyncSetupWebUITestAsync', 'VerifySignIn', function() {
85   // Handle SyncSetupStartSignIn by displaying the sync setup dialog, verifying
86   // that a confirmation dialog appears, and clicking OK to dismiss the dialog.
87   // Note that this test doesn't actually do a gaia sign in.
88   this.mockHandler.expects(once()).SyncSetupStartSignIn().will(callFunction(
89       function() {
90     SyncSetupOverlay.showSyncSetupPage('configure');
91     var okButton = $('confirm-everything-ok');
92     assertNotEquals(null, okButton);
93     okButton.click();
94   }));
96   // The test completes after the sync config is sent out.
97   this.mockHandler.expects(once()).SyncSetupConfigure(ANYTHING).
98       will(callFunction(testDone));
100   // Click the "Sign in to Chrome..." button.
101   this.startSyncing();
104 // Test that switching to and from "Sync everything" saves and restores types.
105 TEST_F('SyncSetupWebUITestAsync', 'RestoreSyncDataTypes', function() {
106   this.mockHandler.expects(once()).SyncSetupStartSignIn().will(callFunction(
107       function() {
108     SyncSetupOverlay.showSyncSetupPage('configure', {});
110     $('sync-select-datatypes').selectedIndex = 1;
111     cr.dispatchSimpleEvent($('sync-select-datatypes'), 'change', true);
113     $('bookmarks-checkbox').checked = false;
114     cr.dispatchSimpleEvent($('bookmarks-checkbox'), 'change', true);
116     $('sync-select-datatypes').selectedIndex = 0;
117     cr.dispatchSimpleEvent($('sync-select-datatypes'), 'change', true);
118     assertTrue($('bookmarks-checkbox').checked);
120     $('sync-select-datatypes').selectedIndex = 1;
121     cr.dispatchSimpleEvent($('sync-select-datatypes'), 'change', true);
122     assertFalse($('bookmarks-checkbox').checked);
124     testDone();
125   }));
127   this.startSyncing();
130 GEN('#endif  // OS_CHROMEOS');