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