- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / sync_setup_browsertest.js
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.
4
5 GEN('#if !defined(OS_CHROMEOS)');
6
7 /**
8  * Test fixture for sync setup WebUI testing.
9  * @constructor
10  * @extends {testing.Test}
11  */
12 function SyncSetupWebUITest() {}
13
14 SyncSetupWebUITest.prototype = {
15   __proto__: testing.Test.prototype,
16
17   /**
18    * Browse to the settings sub-frame.
19    */
20   browsePreload: 'chrome://settings-frame',
21
22   /** @inheritDoc */
23   preLoad: function() {
24     this.makeAndRegisterMockHandler(['SyncSetupConfigure',
25                                      'SyncSetupShowSetupUI',
26                                      'SyncSetupStartSignIn',
27                                     ]);
28   },
29
30   /**
31    * Verifies starting point is not synced.
32    */
33   verifyUnsynced: function() {
34     assertFalse(BrowserOptions.getInstance().signedIn_);
35   },
36
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   },
45 };
46
47 /**
48  * Async version of SyncSetupWebUITest.
49  * @extends {SyncSetupWebUITest}
50  * @constructor
51  */
52 function SyncSetupWebUITestAsync() {}
53
54 SyncSetupWebUITestAsync.prototype = {
55   __proto__: SyncSetupWebUITest.prototype,
56
57   /** @inheritDoc */
58   isAsync: true,
59 };
60
61 // Verify that initial state is unsynced, click the sign in button, verify
62 // that the sync setup dialog appears, and dismiss it.
63 TEST_F('SyncSetupWebUITestAsync', 'VerifySignIn', function() {
64   // Make sure the user is not starting off in the signed in or syncing state.
65   this.verifyUnsynced();
66
67   // Handle SyncSetupShowSetupUI by navigating to chrome://settings/syncSetup.
68   this.mockHandler.expects(once()).SyncSetupShowSetupUI().
69       will(callFunction(function() {
70                           OptionsPage.navigateToPage('syncSetup');
71                         }));
72
73   // Handle SyncSetupStartSignIn by displaying the sync setup dialog, verifying
74   // that a confirmation dialog appears, and clicking OK to dismiss the dialog.
75   // Note that this test doesn't actually do a gaia sign in.
76   this.mockHandler.expects(once()).SyncSetupStartSignIn().
77       will(callFunction(function() {
78                           SyncSetupOverlay.showSyncSetupPage('configure');
79                           var okButton = $('confirm-everything-ok');
80                           assertNotEquals(null, okButton);
81                           okButton.click();
82                         }));
83
84   // The test completes after the sync config is sent out.
85   this.mockHandler.expects(once()).SyncSetupConfigure(ANYTHING).
86       will(callFunction(testDone));
87
88   // For testing, don't wait to execute timeouts.
89   var oldSetTimeout = setTimeout;
90   setTimeout = function(fn, timeout) {
91     oldSetTimeout(fn, 0);
92   };
93
94   // Kick off the test by clicking the "Sign in to Chrome..." button.
95   this.startSyncing();
96 });
97
98 GEN('#endif  // OS_CHROMEOS');