two_client_preferences_sync_test.cc revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
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#include "base/values.h"
6#include "chrome/browser/sync/test/integration/preferences_helper.h"
7#include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
8#include "chrome/browser/sync/test/integration/sync_integration_test_util.h"
9#include "chrome/browser/sync/test/integration/sync_test.h"
10#include "chrome/browser/translate/translate_tab_helper.h"
11#include "chrome/common/pref_names.h"
12#include "components/password_manager/core/common/password_manager_pref_names.h"
13#include "components/sync_driver/pref_names.h"
14#include "components/translate/core/browser/translate_prefs.h"
15#include "components/translate/core/common/translate_pref_names.h"
16
17using preferences_helper::AppendStringPref;
18using preferences_helper::BooleanPrefMatches;
19using preferences_helper::ChangeBooleanPref;
20using preferences_helper::ChangeIntegerPref;
21using preferences_helper::ChangeInt64Pref;
22using preferences_helper::ChangeListPref;
23using preferences_helper::ChangeStringPref;
24using preferences_helper::GetPrefs;
25using preferences_helper::IntegerPrefMatches;
26using preferences_helper::Int64PrefMatches;
27using preferences_helper::ListPrefMatches;
28using preferences_helper::StringPrefMatches;
29using sync_integration_test_util::AwaitCommitActivityCompletion;
30
31class TwoClientPreferencesSyncTest : public SyncTest {
32 public:
33  TwoClientPreferencesSyncTest() : SyncTest(TWO_CLIENT) {}
34  virtual ~TwoClientPreferencesSyncTest() {}
35
36 private:
37  DISALLOW_COPY_AND_ASSIGN(TwoClientPreferencesSyncTest);
38};
39
40class LegacyTwoClientPreferencesSyncTest : public SyncTest {
41 public:
42  LegacyTwoClientPreferencesSyncTest() : SyncTest(TWO_CLIENT_LEGACY) {}
43  virtual ~LegacyTwoClientPreferencesSyncTest() {}
44
45 private:
46  DISALLOW_COPY_AND_ASSIGN(LegacyTwoClientPreferencesSyncTest);
47};
48
49// TCM ID - 7306186.
50IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
51                       kHomePageIsNewTabPage) {
52  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
53  ASSERT_TRUE(BooleanPrefMatches(prefs::kHomePageIsNewTabPage));
54
55  ChangeBooleanPref(0, prefs::kHomePageIsNewTabPage);
56  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
57  ASSERT_TRUE(BooleanPrefMatches(prefs::kHomePageIsNewTabPage));
58}
59
60// TCM ID - 7260488.
61IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, Race) {
62  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
63  DisableVerifier();
64
65  ASSERT_TRUE(StringPrefMatches(prefs::kHomePage));
66
67  ChangeStringPref(0, prefs::kHomePage, "http://www.google.com/0");
68  ChangeStringPref(1, prefs::kHomePage,"http://www.google.com/1");
69  ASSERT_TRUE(AwaitQuiescence());
70  ASSERT_TRUE(StringPrefMatches(prefs::kHomePage));
71}
72
73// TCM ID - 3649278.
74IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
75                       kPasswordManagerEnabled) {
76  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
77  ASSERT_TRUE(
78      BooleanPrefMatches(password_manager::prefs::kPasswordManagerEnabled));
79
80  ChangeBooleanPref(0, password_manager::prefs::kPasswordManagerEnabled);
81  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
82  ASSERT_TRUE(
83      BooleanPrefMatches(password_manager::prefs::kPasswordManagerEnabled));
84}
85
86// TCM ID - 3699293.
87IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
88                       kSyncKeepEverythingSynced) {
89  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
90  DisableVerifier();
91
92  ASSERT_TRUE(
93      BooleanPrefMatches(sync_driver::prefs::kSyncKeepEverythingSynced));
94  ASSERT_TRUE(BooleanPrefMatches(sync_driver::prefs::kSyncThemes));
95
96  GetClient(0)->DisableSyncForDatatype(syncer::THEMES);
97  ASSERT_FALSE(
98      BooleanPrefMatches(sync_driver::prefs::kSyncKeepEverythingSynced));
99}
100
101// TCM ID - 3661290.
102IN_PROC_BROWSER_TEST_F(LegacyTwoClientPreferencesSyncTest, DisablePreferences) {
103  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
104  DisableVerifier();
105
106  ASSERT_TRUE(BooleanPrefMatches(sync_driver::prefs::kSyncPreferences));
107  ASSERT_TRUE(
108      BooleanPrefMatches(password_manager::prefs::kPasswordManagerEnabled));
109
110  GetClient(1)->DisableSyncForDatatype(syncer::PREFERENCES);
111  ChangeBooleanPref(0, password_manager::prefs::kPasswordManagerEnabled);
112  ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
113  ASSERT_FALSE(
114      BooleanPrefMatches(password_manager::prefs::kPasswordManagerEnabled));
115
116  GetClient(1)->EnableSyncForDatatype(syncer::PREFERENCES);
117  ASSERT_TRUE(AwaitQuiescence());
118  ASSERT_TRUE(
119      BooleanPrefMatches(password_manager::prefs::kPasswordManagerEnabled));
120}
121
122// TCM ID - 3664292.
123IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, DisableSync) {
124  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
125  DisableVerifier();
126
127  ASSERT_TRUE(BooleanPrefMatches(sync_driver::prefs::kSyncPreferences));
128  ASSERT_TRUE(
129      BooleanPrefMatches(password_manager::prefs::kPasswordManagerEnabled));
130  ASSERT_TRUE(BooleanPrefMatches(prefs::kShowHomeButton));
131
132  GetClient(1)->DisableSyncForAllDatatypes();
133  ChangeBooleanPref(0, password_manager::prefs::kPasswordManagerEnabled);
134  ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
135  ASSERT_FALSE(
136      BooleanPrefMatches(password_manager::prefs::kPasswordManagerEnabled));
137
138  ChangeBooleanPref(1, prefs::kShowHomeButton);
139  ASSERT_FALSE(BooleanPrefMatches(prefs::kShowHomeButton));
140
141  GetClient(1)->EnableSyncForAllDatatypes();
142  ASSERT_TRUE(AwaitQuiescence());
143  ASSERT_TRUE(
144      BooleanPrefMatches(password_manager::prefs::kPasswordManagerEnabled));
145  ASSERT_TRUE(BooleanPrefMatches(prefs::kShowHomeButton));
146}
147
148// TCM ID - 3604297.
149IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, SignInDialog) {
150  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
151  DisableVerifier();
152
153  ASSERT_TRUE(BooleanPrefMatches(sync_driver::prefs::kSyncPreferences));
154  ASSERT_TRUE(BooleanPrefMatches(sync_driver::prefs::kSyncBookmarks));
155  ASSERT_TRUE(BooleanPrefMatches(sync_driver::prefs::kSyncThemes));
156  ASSERT_TRUE(BooleanPrefMatches(sync_driver::prefs::kSyncExtensions));
157  ASSERT_TRUE(BooleanPrefMatches(sync_driver::prefs::kSyncAutofill));
158  ASSERT_TRUE(
159      BooleanPrefMatches(sync_driver::prefs::kSyncKeepEverythingSynced));
160
161  GetClient(0)->DisableSyncForDatatype(syncer::PREFERENCES);
162  GetClient(1)->EnableSyncForDatatype(syncer::PREFERENCES);
163  GetClient(0)->DisableSyncForDatatype(syncer::AUTOFILL);
164  GetClient(1)->EnableSyncForDatatype(syncer::AUTOFILL);
165  GetClient(0)->DisableSyncForDatatype(syncer::BOOKMARKS);
166  GetClient(1)->EnableSyncForDatatype(syncer::BOOKMARKS);
167  GetClient(0)->DisableSyncForDatatype(syncer::EXTENSIONS);
168  GetClient(1)->EnableSyncForDatatype(syncer::EXTENSIONS);
169  GetClient(0)->DisableSyncForDatatype(syncer::THEMES);
170  GetClient(1)->EnableSyncForDatatype(syncer::THEMES);
171
172  ASSERT_TRUE(AwaitQuiescence());
173
174  ASSERT_FALSE(BooleanPrefMatches(sync_driver::prefs::kSyncPreferences));
175  ASSERT_FALSE(BooleanPrefMatches(sync_driver::prefs::kSyncBookmarks));
176  ASSERT_FALSE(BooleanPrefMatches(sync_driver::prefs::kSyncThemes));
177  ASSERT_FALSE(BooleanPrefMatches(sync_driver::prefs::kSyncExtensions));
178  ASSERT_FALSE(BooleanPrefMatches(sync_driver::prefs::kSyncAutofill));
179  ASSERT_FALSE(
180      BooleanPrefMatches(sync_driver::prefs::kSyncKeepEverythingSynced));
181}
182
183// TCM ID - 3666296.
184IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kShowBookmarkBar) {
185  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
186  ASSERT_TRUE(BooleanPrefMatches(prefs::kShowBookmarkBar));
187
188  ChangeBooleanPref(0, prefs::kShowBookmarkBar);
189  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
190  ASSERT_TRUE(BooleanPrefMatches(prefs::kShowBookmarkBar));
191}
192
193// TCM ID - 3611311.
194IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kCheckDefaultBrowser) {
195  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
196  DisableVerifier();
197
198  ASSERT_TRUE(BooleanPrefMatches(prefs::kCheckDefaultBrowser));
199
200  ChangeBooleanPref(0, prefs::kCheckDefaultBrowser);
201  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
202  ASSERT_FALSE(BooleanPrefMatches(prefs::kCheckDefaultBrowser));
203}
204
205// TCM ID - 3628298.
206IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kHomePage) {
207  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
208  ASSERT_TRUE(StringPrefMatches(prefs::kHomePage));
209
210  ChangeStringPref(0, prefs::kHomePage, "http://news.google.com");
211  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
212  ASSERT_TRUE(StringPrefMatches(prefs::kHomePage));
213}
214
215// TCM ID - 7297269.
216IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kShowHomeButton) {
217  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
218  ASSERT_TRUE(BooleanPrefMatches(prefs::kShowHomeButton));
219
220  ChangeBooleanPref(0, prefs::kShowHomeButton);
221  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
222  ASSERT_TRUE(BooleanPrefMatches(prefs::kShowHomeButton));
223}
224
225// TCM ID - 3710285.
226IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kEnableTranslate) {
227  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
228  ASSERT_TRUE(BooleanPrefMatches(prefs::kEnableTranslate));
229
230  ChangeBooleanPref(0, prefs::kEnableTranslate);
231  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
232  ASSERT_TRUE(BooleanPrefMatches(prefs::kEnableTranslate));
233}
234
235// TCM ID - 3664293.
236IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kAutofillEnabled) {
237  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
238  ASSERT_TRUE(BooleanPrefMatches(autofill::prefs::kAutofillEnabled));
239
240  ChangeBooleanPref(0, autofill::prefs::kAutofillEnabled);
241  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
242  ASSERT_TRUE(BooleanPrefMatches(autofill::prefs::kAutofillEnabled));
243}
244
245// TCM ID - 3632259.
246IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
247                       kURLsToRestoreOnStartup) {
248  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
249  ASSERT_TRUE(IntegerPrefMatches(prefs::kRestoreOnStartup));
250  ASSERT_TRUE(ListPrefMatches(prefs::kURLsToRestoreOnStartup));
251
252  ChangeIntegerPref(0, prefs::kRestoreOnStartup, 0);
253  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
254  ASSERT_TRUE(IntegerPrefMatches(prefs::kRestoreOnStartup));
255
256  base::ListValue urls;
257  urls.Append(base::Value::CreateStringValue("http://www.google.com/"));
258  urls.Append(base::Value::CreateStringValue("http://www.flickr.com/"));
259  ChangeIntegerPref(0, prefs::kRestoreOnStartup, 4);
260  ChangeListPref(0, prefs::kURLsToRestoreOnStartup, urls);
261  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
262  ASSERT_TRUE(IntegerPrefMatches(prefs::kRestoreOnStartup));
263  ASSERT_TRUE(ListPrefMatches(prefs::kURLsToRestoreOnStartup));
264}
265
266// TCM ID - 3684287.
267IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kRestoreOnStartup) {
268  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
269  ASSERT_TRUE(IntegerPrefMatches(prefs::kRestoreOnStartup));
270
271  ChangeIntegerPref(0, prefs::kRestoreOnStartup, 1);
272  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
273  ASSERT_TRUE(IntegerPrefMatches(prefs::kRestoreOnStartup));
274}
275
276// TCM ID - 3703314.
277IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, Privacy) {
278  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
279  DisableVerifier();
280
281  ASSERT_TRUE(BooleanPrefMatches(prefs::kAlternateErrorPagesEnabled));
282  ASSERT_TRUE(BooleanPrefMatches(prefs::kSearchSuggestEnabled));
283  ASSERT_TRUE(BooleanPrefMatches(prefs::kNetworkPredictionEnabled));
284  ASSERT_TRUE(BooleanPrefMatches(prefs::kSafeBrowsingEnabled));
285
286  ChangeBooleanPref(0, prefs::kAlternateErrorPagesEnabled);
287  ChangeBooleanPref(0, prefs::kSearchSuggestEnabled);
288  ChangeBooleanPref(0, prefs::kNetworkPredictionEnabled);
289  ChangeBooleanPref(0, prefs::kSafeBrowsingEnabled);
290  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
291  ASSERT_TRUE(BooleanPrefMatches(prefs::kAlternateErrorPagesEnabled));
292  ASSERT_TRUE(BooleanPrefMatches(prefs::kSearchSuggestEnabled));
293  ASSERT_TRUE(BooleanPrefMatches(prefs::kNetworkPredictionEnabled));
294  ASSERT_TRUE(BooleanPrefMatches(prefs::kSafeBrowsingEnabled));
295}
296
297// TCM ID - 3649279.
298IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, ClearData) {
299  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
300  DisableVerifier();
301
302  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteBrowsingHistory));
303  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteDownloadHistory));
304  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteCache));
305  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteCookies));
306  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeletePasswords));
307  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteFormData));
308  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteHostedAppsData));
309
310  ChangeBooleanPref(0, prefs::kDeleteBrowsingHistory);
311  ChangeBooleanPref(0, prefs::kDeleteDownloadHistory);
312  ChangeBooleanPref(0, prefs::kDeleteCache);
313  ChangeBooleanPref(0, prefs::kDeleteCookies);
314  ChangeBooleanPref(0, prefs::kDeletePasswords);
315  ChangeBooleanPref(0, prefs::kDeleteFormData);
316  ChangeBooleanPref(0, prefs::kDeleteHostedAppsData);
317  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
318  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteBrowsingHistory));
319  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteDownloadHistory));
320  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteCache));
321  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteCookies));
322  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeletePasswords));
323  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteFormData));
324  ASSERT_TRUE(BooleanPrefMatches(prefs::kDeleteHostedAppsData));
325}
326
327// TCM ID - 3686300.
328IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
329                       kWebKitUsesUniversalDetector) {
330  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
331  ASSERT_TRUE(BooleanPrefMatches(prefs::kWebKitUsesUniversalDetector));
332
333  ChangeBooleanPref(0, prefs::kWebKitUsesUniversalDetector);
334  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
335  ASSERT_TRUE(BooleanPrefMatches(prefs::kWebKitUsesUniversalDetector));
336}
337
338// TCM ID - 3673298.
339IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kDefaultCharset) {
340  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
341  ASSERT_TRUE(StringPrefMatches(prefs::kDefaultCharset));
342
343  ChangeStringPref(0, prefs::kDefaultCharset, "Thai");
344  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
345  ASSERT_TRUE(StringPrefMatches(prefs::kDefaultCharset));
346}
347
348// TCM ID - 3653296.
349IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
350                       kBlockThirdPartyCookies) {
351  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
352  ASSERT_TRUE(BooleanPrefMatches(prefs::kBlockThirdPartyCookies));
353
354  ChangeBooleanPref(0, prefs::kBlockThirdPartyCookies);
355  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
356  ASSERT_TRUE(BooleanPrefMatches(prefs::kBlockThirdPartyCookies));
357}
358
359// TCM ID - 7297279.
360IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
361                       kClearSiteDataOnExit) {
362  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
363  ASSERT_TRUE(BooleanPrefMatches(prefs::kClearSiteDataOnExit));
364
365  ChangeBooleanPref(0, prefs::kClearSiteDataOnExit);
366  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
367  ASSERT_TRUE(BooleanPrefMatches(prefs::kClearSiteDataOnExit));
368}
369
370// TCM ID - 7306184.
371IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
372                       kSafeBrowsingEnabled) {
373  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
374  ASSERT_TRUE(BooleanPrefMatches(prefs::kSafeBrowsingEnabled));
375
376  ChangeBooleanPref(0, prefs::kSafeBrowsingEnabled);
377  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
378  ASSERT_TRUE(BooleanPrefMatches(prefs::kSafeBrowsingEnabled));
379}
380
381// TCM ID - 3624302.
382IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
383                       kAutofillAuxiliaryProfilesEnabled) {
384  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
385  DisableVerifier();
386
387  ASSERT_TRUE(
388      BooleanPrefMatches(autofill::prefs::kAutofillAuxiliaryProfilesEnabled));
389
390  ChangeBooleanPref(0, autofill::prefs::kAutofillAuxiliaryProfilesEnabled);
391  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
392
393  // kAutofillAuxiliaryProfilesEnabled is only synced on Mac.
394#if defined(OS_MACOSX)
395  ASSERT_TRUE(
396      BooleanPrefMatches(autofill::prefs::kAutofillAuxiliaryProfilesEnabled));
397#else
398  ASSERT_FALSE(
399      BooleanPrefMatches(autofill::prefs::kAutofillAuxiliaryProfilesEnabled));
400#endif  // OS_MACOSX
401}
402
403// TCM ID - 3717298.
404IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kPromptForDownload) {
405  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
406  ASSERT_TRUE(BooleanPrefMatches(prefs::kPromptForDownload));
407
408  ChangeBooleanPref(0, prefs::kPromptForDownload);
409  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
410  ASSERT_TRUE(BooleanPrefMatches(prefs::kPromptForDownload));
411}
412
413// TCM ID - 3729263.
414IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
415                       kPrefTranslateLanguageBlacklist) {
416  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
417  ASSERT_TRUE(BooleanPrefMatches(prefs::kEnableTranslate));
418
419  scoped_ptr<TranslatePrefs> translate_client0_prefs(
420      TranslateTabHelper::CreateTranslatePrefs(GetPrefs(0)));
421  scoped_ptr<TranslatePrefs> translate_client1_prefs(
422      TranslateTabHelper::CreateTranslatePrefs(GetPrefs(1)));
423  ASSERT_FALSE(translate_client0_prefs->IsBlockedLanguage("fr"));
424  translate_client0_prefs->BlockLanguage("fr");
425  ASSERT_TRUE(translate_client0_prefs->IsBlockedLanguage("fr"));
426
427  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
428  ASSERT_TRUE(translate_client1_prefs->IsBlockedLanguage("fr"));
429
430  translate_client0_prefs->UnblockLanguage("fr");
431  ASSERT_FALSE(translate_client0_prefs->IsBlockedLanguage("fr"));
432
433  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
434  ASSERT_FALSE(translate_client1_prefs->IsBlockedLanguage("fr"));
435}
436
437// TCM ID - 7307195.
438IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
439                       kPrefTranslateWhitelists) {
440  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
441  ASSERT_TRUE(BooleanPrefMatches(prefs::kEnableTranslate));
442
443  scoped_ptr<TranslatePrefs> translate_client0_prefs(
444      TranslateTabHelper::CreateTranslatePrefs(GetPrefs(0)));
445  scoped_ptr<TranslatePrefs> translate_client1_prefs(
446      TranslateTabHelper::CreateTranslatePrefs(GetPrefs(1)));
447  ASSERT_FALSE(translate_client0_prefs->IsLanguagePairWhitelisted("en", "bg"));
448  translate_client0_prefs->WhitelistLanguagePair("en", "bg");
449  ASSERT_TRUE(translate_client0_prefs->IsLanguagePairWhitelisted("en", "bg"));
450
451  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
452  ASSERT_TRUE(translate_client1_prefs->IsLanguagePairWhitelisted("en", "bg"));
453
454  translate_client0_prefs->RemoveLanguagePairFromWhitelist("en", "bg");
455  ASSERT_FALSE(translate_client0_prefs->IsLanguagePairWhitelisted("en", "bg"));
456
457  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
458  ASSERT_FALSE(translate_client1_prefs->IsLanguagePairWhitelisted("en", "bg"));
459}
460
461// TCM ID - 3625298.
462IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
463                       kPrefTranslateSiteBlacklist) {
464  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
465  ASSERT_TRUE(BooleanPrefMatches(prefs::kEnableTranslate));
466
467  GURL url("http://www.google.com");
468  std::string host(url.host());
469  scoped_ptr<TranslatePrefs> translate_client0_prefs(
470      TranslateTabHelper::CreateTranslatePrefs(GetPrefs(0)));
471  scoped_ptr<TranslatePrefs> translate_client1_prefs(
472      TranslateTabHelper::CreateTranslatePrefs(GetPrefs(1)));
473  ASSERT_FALSE(translate_client0_prefs->IsSiteBlacklisted(host));
474  translate_client0_prefs->BlacklistSite(host);
475  ASSERT_TRUE(translate_client0_prefs->IsSiteBlacklisted(host));
476
477  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
478  ASSERT_TRUE(translate_client1_prefs->IsSiteBlacklisted(host));
479
480  translate_client0_prefs->RemoveSiteFromBlacklist(host);
481  ASSERT_FALSE(translate_client0_prefs->IsSiteBlacklisted(host));
482
483  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
484  ASSERT_FALSE(translate_client1_prefs->IsSiteBlacklisted(host));
485}
486
487// TCM ID - 6515252.
488IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
489                       kExtensionsUIDeveloperMode) {
490  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
491  ASSERT_TRUE(BooleanPrefMatches(prefs::kExtensionsUIDeveloperMode));
492
493  ChangeBooleanPref(0, prefs::kExtensionsUIDeveloperMode);
494  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
495  ASSERT_TRUE(BooleanPrefMatches(prefs::kExtensionsUIDeveloperMode));
496}
497
498// TCM ID - 7583816
499IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kAcceptLanguages) {
500  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
501  DisableVerifier();
502  ASSERT_TRUE(StringPrefMatches(prefs::kAcceptLanguages));
503
504  AppendStringPref(0, prefs::kAcceptLanguages, ",ar");
505  AppendStringPref(1, prefs::kAcceptLanguages, ",fr");
506  ASSERT_TRUE(AwaitQuiescence());
507  ASSERT_TRUE(StringPrefMatches(prefs::kAcceptLanguages));
508
509  ChangeStringPref(0, prefs::kAcceptLanguages, "en-US");
510  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
511  ASSERT_TRUE(StringPrefMatches(prefs::kAcceptLanguages));
512
513  ChangeStringPref(0, prefs::kAcceptLanguages, "ar,en-US");
514  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
515  ASSERT_TRUE(StringPrefMatches(prefs::kAcceptLanguages));
516}
517
518// TCM ID - 7590682
519#if defined(TOOLKIT_GTK)
520IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kUsesSystemTheme) {
521  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
522  ASSERT_TRUE(BooleanPrefMatches(prefs::kUsesSystemTheme));
523
524  ChangeBooleanPref(0, prefs::kUsesSystemTheme);
525  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
526  ASSERT_FALSE(BooleanPrefMatches(prefs::kUsesSystemTheme));
527}
528#endif  // TOOLKIT_GTK
529
530// TCM ID - 6473347.
531#if defined(OS_CHROMEOS)
532// Disabled, http://crbug.com/351159 .
533IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, DISABLED_kTapToClickEnabled) {
534  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
535  ASSERT_TRUE(BooleanPrefMatches(prefs::kTapToClickEnabled));
536
537  ChangeBooleanPref(0, prefs::kTapToClickEnabled);
538  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
539  ASSERT_TRUE(BooleanPrefMatches(prefs::kTapToClickEnabled));
540
541  ChangeBooleanPref(1, prefs::kTapToClickEnabled);
542  ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
543  ASSERT_TRUE(BooleanPrefMatches(prefs::kTapToClickEnabled));
544}
545#endif  // OS_CHROMEOS
546
547// TCM ID - 6458824.
548#if defined(OS_CHROMEOS)
549IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest, kEnableAutoScreenLock) {
550  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
551  ASSERT_TRUE(BooleanPrefMatches(prefs::kEnableAutoScreenLock));
552
553  ChangeBooleanPref(0, prefs::kEnableAutoScreenLock);
554  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
555  ASSERT_TRUE(BooleanPrefMatches(prefs::kEnableAutoScreenLock));
556
557  ChangeBooleanPref(1, prefs::kEnableAutoScreenLock);
558  ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
559  ASSERT_TRUE(BooleanPrefMatches(prefs::kEnableAutoScreenLock));
560}
561#endif  // OS_CHROMEOS
562
563IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
564                       SingleClientEnabledEncryption) {
565  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
566
567  ASSERT_TRUE(EnableEncryption(0));
568  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
569  ASSERT_TRUE(IsEncryptionComplete(0));
570  ASSERT_TRUE(IsEncryptionComplete(1));
571}
572
573IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
574                       SingleClientEnabledEncryptionAndChanged) {
575  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
576  ASSERT_TRUE(BooleanPrefMatches(prefs::kHomePageIsNewTabPage));
577
578  ChangeBooleanPref(0, prefs::kHomePageIsNewTabPage);
579  ASSERT_TRUE(EnableEncryption(0));
580  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
581  ASSERT_TRUE(IsEncryptionComplete(0));
582  ASSERT_TRUE(IsEncryptionComplete(1));
583  ASSERT_TRUE(BooleanPrefMatches(prefs::kHomePageIsNewTabPage));
584}
585
586IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
587                       BothClientsEnabledEncryption) {
588  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
589
590  ASSERT_TRUE(EnableEncryption(0));
591  ASSERT_TRUE(EnableEncryption(1));
592  ASSERT_TRUE(AwaitQuiescence());
593  ASSERT_TRUE(IsEncryptionComplete(0));
594  ASSERT_TRUE(IsEncryptionComplete(1));
595}
596
597IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
598                       SingleClientEnabledEncryptionBothChanged) {
599  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
600  ASSERT_TRUE(BooleanPrefMatches(prefs::kHomePageIsNewTabPage));
601  ASSERT_TRUE(StringPrefMatches(prefs::kHomePage));
602
603  ASSERT_TRUE(EnableEncryption(0));
604  ChangeBooleanPref(0, prefs::kHomePageIsNewTabPage);
605  ChangeStringPref(1, prefs::kHomePage, "http://www.google.com/1");
606  ASSERT_TRUE(AwaitQuiescence());
607  ASSERT_TRUE(IsEncryptionComplete(0));
608  ASSERT_TRUE(IsEncryptionComplete(1));
609  ASSERT_TRUE(BooleanPrefMatches(
610      prefs::kHomePageIsNewTabPage));
611  ASSERT_TRUE(StringPrefMatches(prefs::kHomePage));
612}
613
614IN_PROC_BROWSER_TEST_F(TwoClientPreferencesSyncTest,
615                       SingleClientEnabledEncryptionAndChangedMultipleTimes) {
616  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
617  ASSERT_TRUE(BooleanPrefMatches(prefs::kHomePageIsNewTabPage));
618
619  ChangeBooleanPref(0, prefs::kHomePageIsNewTabPage);
620  ASSERT_TRUE(EnableEncryption(0));
621  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
622  ASSERT_TRUE(IsEncryptionComplete(0));
623  ASSERT_TRUE(IsEncryptionComplete(1));
624  ASSERT_TRUE(BooleanPrefMatches(prefs::kHomePageIsNewTabPage));
625
626  ASSERT_TRUE(BooleanPrefMatches(prefs::kShowHomeButton));
627  ChangeBooleanPref(0, prefs::kShowHomeButton);
628  ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
629  ASSERT_TRUE(BooleanPrefMatches(prefs::kShowHomeButton));
630}
631