15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochGEN('#if !defined(OS_CHROMEOS)');
67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Test fixture for sync setup WebUI testing.
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @extends {testing.Test}
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function SyncSetupWebUITest() {}
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SyncSetupWebUITest.prototype = {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  __proto__: testing.Test.prototype,
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch   * Browse to the settings sub-frame.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  browsePreload: 'chrome://settings-frame',
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /** @inheritDoc */
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  preLoad: function() {
24558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch    this.makeAndRegisterMockHandler(['SyncSetupConfigure',
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     'SyncSetupShowSetupUI',
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                     'SyncSetupStartSignIn',
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    ]);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  },
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Verifies starting point is not synced.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  verifyUnsynced: function() {
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    assertFalse(BrowserOptions.getInstance().signedIn_);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  },
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Clicks the "Sign in to Chrome" button.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  startSyncing: function() {
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var startStopSyncButton = BrowserOptions.getStartStopSyncButton();
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assertNotEquals(null, startStopSyncButton);
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    startStopSyncButton.click();
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  },
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Async version of SyncSetupWebUITest.
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @extends {SyncSetupWebUITest}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function SyncSetupWebUITestAsync() {}
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SyncSetupWebUITestAsync.prototype = {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  __proto__: SyncSetupWebUITest.prototype,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /** @inheritDoc */
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  isAsync: true,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Verify that initial state is unsynced, click the sign in button, verify
627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// that the sync setup dialog appears, and dismiss it.
637dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F('SyncSetupWebUITestAsync', 'VerifySignIn', function() {
647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Make sure the user is not starting off in the signed in or syncing state.
657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  this.verifyUnsynced();
667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Handle SyncSetupShowSetupUI by navigating to chrome://settings/syncSetup.
687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  this.mockHandler.expects(once()).SyncSetupShowSetupUI().
697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      will(callFunction(function() {
707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                          OptionsPage.navigateToPage('syncSetup');
717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                        }));
727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Handle SyncSetupStartSignIn by displaying the sync setup dialog, verifying
747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // that a confirmation dialog appears, and clicking OK to dismiss the dialog.
757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Note that this test doesn't actually do a gaia sign in.
767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  this.mockHandler.expects(once()).SyncSetupStartSignIn().
777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      will(callFunction(function() {
787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                          SyncSetupOverlay.showSyncSetupPage('configure');
797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                          var okButton = $('confirm-everything-ok');
807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                          assertNotEquals(null, okButton);
817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                          okButton.click();
827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                        }));
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  // The test completes after the sync config is sent out.
85558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  this.mockHandler.expects(once()).SyncSetupConfigure(ANYTHING).
867dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      will(callFunction(testDone));
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // For testing, don't wait to execute timeouts.
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  var oldSetTimeout = setTimeout;
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  setTimeout = function(fn, timeout) {
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    oldSetTimeout(fn, 0);
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Kick off the test by clicking the "Sign in to Chrome..." button.
957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  this.startSyncing();
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
987dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochGEN('#endif  // OS_CHROMEOS');
99