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