Index: chrome/browser/sync/sync_setup_wizard_unittest.cc |
diff --git a/chrome/browser/sync/sync_setup_wizard_unittest.cc b/chrome/browser/sync/sync_setup_wizard_unittest.cc |
index ca63f9746d16ed88d0840d6d656b8361d06e3b3d..a80c6c5cbce9c76ce00b2f05b301587ca843e1c3 100644 |
--- a/chrome/browser/sync/sync_setup_wizard_unittest.cc |
+++ b/chrome/browser/sync/sync_setup_wizard_unittest.cc |
@@ -38,6 +38,7 @@ class ProfileSyncServiceForWizardTest : public ProfileSyncService { |
user_accepted_merge_and_sync_(false), |
user_cancelled_dialog_(false) { |
RegisterPreferences(); |
+ ResetTestStats(); |
} |
virtual ~ProfileSyncServiceForWizardTest() { } |
@@ -49,6 +50,13 @@ class ProfileSyncServiceForWizardTest : public ProfileSyncService { |
password_ = password; |
captcha_ = captcha; |
} |
+ |
+ virtual void OnUserChoseDatatypes(bool sync_everything, |
+ const syncable::ModelTypeSet& chosen_types) { |
+ user_chose_data_types_ = true; |
+ chosen_data_types_ = chosen_types; |
+ } |
+ |
virtual void OnUserAcceptedMergeAndSync() { |
user_accepted_merge_and_sync_ = true; |
} |
@@ -72,6 +80,9 @@ class ProfileSyncServiceForWizardTest : public ProfileSyncService { |
captcha_.clear(); |
user_accepted_merge_and_sync_ = false; |
user_cancelled_dialog_ = false; |
+ user_chose_data_types_ = false; |
+ keep_everything_synced_ = false; |
+ chosen_data_types_.clear(); |
} |
std::string username_; |
@@ -79,6 +90,9 @@ class ProfileSyncServiceForWizardTest : public ProfileSyncService { |
std::string captcha_; |
bool user_accepted_merge_and_sync_; |
bool user_cancelled_dialog_; |
+ bool user_chose_data_types_; |
+ bool keep_everything_synced_; |
+ syncable::ModelTypeSet chosen_data_types_; |
private: |
chrome_common_net::FakeNetworkChangeNotifierThread |
@@ -249,7 +263,10 @@ TEST_F(SyncSetupWizardTest, InitialStepLogin) { |
EXPECT_EQ(SyncSetupWizard::GAIA_LOGIN, test_window_->flow()->current_state_); |
dialog_args.Clear(); |
SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); |
- EXPECT_EQ(4U, dialog_args.size()); |
+ EXPECT_EQ(5U, dialog_args.size()); |
+ std::string iframe_to_show; |
+ dialog_args.GetString(L"iframeToShow", &iframe_to_show); |
+ EXPECT_EQ("login", iframe_to_show); |
std::string actual_user; |
dialog_args.GetString(L"user", &actual_user); |
EXPECT_EQ(kTestUser, actual_user); |
@@ -264,7 +281,9 @@ TEST_F(SyncSetupWizardTest, InitialStepLogin) { |
service_->set_auth_state(kTestUser, captcha_error); |
wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); |
- EXPECT_EQ(4U, dialog_args.size()); |
+ EXPECT_EQ(5U, dialog_args.size()); |
+ dialog_args.GetString(L"iframeToShow", &iframe_to_show); |
+ EXPECT_EQ("login", iframe_to_show); |
std::string captcha_url; |
dialog_args.GetString(L"captchaUrl", &captcha_url); |
EXPECT_EQ(kTestCaptchaUrl, GURL(captcha_url).spec()); |
@@ -277,15 +296,50 @@ TEST_F(SyncSetupWizardTest, InitialStepLogin) { |
wizard_->Step(SyncSetupWizard::GAIA_SUCCESS); |
EXPECT_TRUE(wizard_->IsVisible()); |
EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); |
- EXPECT_EQ(SyncSetupWizard::GAIA_SUCCESS, |
+ // In a non-discrete run, GAIA_SUCCESS immediately transitions you to |
+ // CHOOSE_DATA_TYPES. |
+ EXPECT_EQ(SyncSetupWizard::CHOOSE_DATA_TYPES, |
test_window_->flow()->current_state_); |
+ // That's all we're testing here, just move on to DONE. We'll test the |
+ // "choose data types" scenarios elsewhere. |
wizard_->Step(SyncSetupWizard::DONE); // No merge and sync. |
EXPECT_TRUE(wizard_->IsVisible()); |
EXPECT_FALSE(test_window_->TestAndResetWasShowHTMLDialogCalled()); |
EXPECT_EQ(SyncSetupWizard::DONE, test_window_->flow()->current_state_); |
} |
+TEST_F(SyncSetupWizardTest, ChooseDataTypesSetsPrefs) { |
+ SKIP_TEST_ON_MACOSX(); |
+ wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
+ wizard_->Step(SyncSetupWizard::CHOOSE_DATA_TYPES); |
+ |
+ ListValue data_type_choices_value; |
+ std::string data_type_choices = "{\"keepEverythingSynced\":false,"; |
+ data_type_choices += "\"syncBookmarks\":true,\"syncPreferences\":true,"; |
+ data_type_choices += "\"syncThemes\":false,\"syncPasswords\":false,"; |
+ data_type_choices += "\"syncAutofill\":false,\"syncExtensions\":false,"; |
+ data_type_choices += "\"syncTypedUrls\":true}"; |
+ data_type_choices_value.Append(new StringValue(data_type_choices)); |
+ |
+ // Simulate the user choosing data types; bookmarks and prefs are on, the rest |
+ // are off. |
+ test_window_->flow()->flow_handler_->HandleChooseDataTypes( |
+ &data_type_choices_value); |
+ EXPECT_TRUE(wizard_->IsVisible()); |
+ EXPECT_TRUE(test_window_->TestAndResetWasShowHTMLDialogCalled()); |
+ EXPECT_FALSE(service_->keep_everything_synced_); |
+ EXPECT_EQ(service_->chosen_data_types_.count(syncable::BOOKMARKS), 1U); |
+ EXPECT_EQ(service_->chosen_data_types_.count(syncable::PREFERENCES), 1U); |
+ EXPECT_EQ(service_->chosen_data_types_.count(syncable::THEMES), 0U); |
+ EXPECT_EQ(service_->chosen_data_types_.count(syncable::PASSWORDS), 0U); |
+ EXPECT_EQ(service_->chosen_data_types_.count(syncable::AUTOFILL), 0U); |
+ EXPECT_EQ(service_->chosen_data_types_.count(syncable::EXTENSIONS), 0U); |
+ EXPECT_EQ(service_->chosen_data_types_.count(syncable::TYPED_URLS), 1U); |
+ |
+ test_window_->CloseDialog(); |
+} |
+ |
TEST_F(SyncSetupWizardTest, DialogCancelled) { |
SKIP_TEST_ON_MACOSX(); |
wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
@@ -378,7 +432,10 @@ TEST_F(SyncSetupWizardTest, DiscreteRun) { |
wizard_->Step(SyncSetupWizard::GAIA_LOGIN); |
EXPECT_TRUE(wizard_->IsVisible()); |
SyncSetupFlow::GetArgsForGaiaLogin(service_, &dialog_args); |
- EXPECT_EQ(4U, dialog_args.size()); |
+ EXPECT_EQ(5U, dialog_args.size()); |
+ std::string iframe_to_show; |
+ dialog_args.GetString(L"iframeToShow", &iframe_to_show); |
+ EXPECT_EQ("login", iframe_to_show); |
std::string actual_user; |
dialog_args.GetString(L"user", &actual_user); |
EXPECT_EQ(kTestUser, actual_user); |