- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync / test / integration / two_client_search_engines_sync_test.cc
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/strings/utf_string_conversions.h"
6 #include "chrome/browser/search_engines/template_url.h"
7 #include "chrome/browser/search_engines/template_url_service.h"
8 #include "chrome/browser/search_engines/template_url_service_factory.h"
9 #include "chrome/browser/sync/profile_sync_service_harness.h"
10 #include "chrome/browser/sync/test/integration/search_engines_helper.h"
11 #include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
12 #include "chrome/browser/sync/test/integration/sync_test.h"
13
14 class TwoClientSearchEnginesSyncTest : public SyncTest {
15  public:
16   TwoClientSearchEnginesSyncTest() : SyncTest(TWO_CLIENT) {}
17   virtual ~TwoClientSearchEnginesSyncTest() {}
18
19  private:
20   DISALLOW_COPY_AND_ASSIGN(TwoClientSearchEnginesSyncTest);
21 };
22
23 // TCM ID - 8898628.
24 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, Add) {
25   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
26   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
27
28   search_engines_helper::AddSearchEngine(0, 0);
29
30   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
31   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
32 }
33
34 // TCM ID - 8912240.
35 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, AddMultiple) {
36   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
37   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
38
39   // Add a few entries.
40   for (int i = 0; i < 3; ++i)
41     search_engines_helper::AddSearchEngine(0, i);
42
43   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
44   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
45 }
46
47 // TCM ID - 9011135.
48 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, Duplicates) {
49   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
50   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
51
52   // Add two entries with the same Name and URL (but different keywords).
53   // Note that we have to change the GUID of the duplicate.
54   search_engines_helper::AddSearchEngine(0, 0);
55   Profile* profile = sync_datatype_helper::test()->GetProfile(0);
56   TemplateURLServiceFactory::GetForProfile(profile)->Add(
57       search_engines_helper::CreateTestTemplateURL(profile, 0,
58           ASCIIToUTF16("somethingelse"), "newguid"));
59   search_engines_helper::GetVerifierService()->Add(
60       search_engines_helper::CreateTestTemplateURL(profile, 0,
61           ASCIIToUTF16("somethingelse"), "newguid"));
62   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
63   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
64 }
65
66 // TCM ID - 9004201.
67 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, UpdateKeyword) {
68   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
69   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
70
71   search_engines_helper::AddSearchEngine(0, 0);
72
73   // Change the keyword.
74   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
75   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
76
77   search_engines_helper::EditSearchEngine(0, ASCIIToUTF16("test0"),
78       ASCIIToUTF16("test0"), ASCIIToUTF16("newkeyword"),
79       "http://www.test0.com/");
80
81   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
82   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
83 }
84
85 // TCM ID - 8894859.
86 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, UpdateUrl) {
87   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
88   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
89
90   search_engines_helper::AddSearchEngine(0, 0);
91
92   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
93   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
94
95   // Change the URL.
96   search_engines_helper::EditSearchEngine(0, ASCIIToUTF16("test0"),
97       ASCIIToUTF16("test0"), ASCIIToUTF16("test0"),
98       "http://www.wikipedia.org/q=%s");
99
100   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
101   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
102 }
103
104 // TCM ID - 8910490.
105 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, UpdateName) {
106   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
107   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
108
109   search_engines_helper::AddSearchEngine(0, 0);
110
111   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
112   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
113
114   // Change the short name.
115   search_engines_helper::EditSearchEngine(0, ASCIIToUTF16("test0"),
116       ASCIIToUTF16("New Name"), ASCIIToUTF16("test0"), "http://www.test0.com/");
117
118   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
119   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
120 }
121
122 // TCM ID - 8898660.
123 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, Delete) {
124   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
125   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
126
127   search_engines_helper::AddSearchEngine(0, 0);
128
129   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
130   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
131
132   search_engines_helper::DeleteSearchEngineBySeed(0, 0);
133
134   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
135   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
136 }
137
138 // TCM ID - 9004196.
139 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, ConflictKeyword) {
140   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
141   DisableVerifier();
142   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
143
144   // Add a different search engine to each client, but make their keywords
145   // conflict.
146   search_engines_helper::AddSearchEngine(0, 0);
147   search_engines_helper::AddSearchEngine(1, 1);
148   TemplateURLService* service =
149       search_engines_helper::GetServiceForBrowserContext(1);
150   TemplateURL* turl = service->GetTemplateURLForKeyword(ASCIIToUTF16("test1"));
151   EXPECT_TRUE(turl);
152   service->ResetTemplateURL(turl, turl->short_name(), ASCIIToUTF16("test0"),
153                             turl->url());
154
155   ASSERT_TRUE(AwaitQuiescence());
156   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
157 }
158
159 // TCM ID - 9004187.
160 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, MergeMultiple) {
161   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
162   DisableVerifier();
163   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
164
165   // Set up some different search engines on each client, with some interesting
166   // conflicts.
167   // client0: { SE0, SE1, SE2 }
168   for (int i = 0; i < 3; ++i)
169     search_engines_helper::AddSearchEngine(0, i);
170
171   // client1: { SE0, SE2, SE3, SE0 + different URL }
172   search_engines_helper::AddSearchEngine(1, 0);
173   search_engines_helper::AddSearchEngine(1, 2);
174   search_engines_helper::AddSearchEngine(1, 3);
175   Profile* profile = sync_datatype_helper::test()->GetProfile(1);
176   TemplateURLServiceFactory::GetForProfile(profile)->Add(
177       search_engines_helper::CreateTestTemplateURL(profile, 0,
178           ASCIIToUTF16("somethingelse.com"), "http://www.somethingelse.com/",
179           "somethingelse"));
180
181   ASSERT_TRUE(AwaitQuiescence());
182   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
183 }
184
185 // TCM ID - 8906436.
186 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, DisableSync) {
187   ASSERT_TRUE(SetupSync());
188   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
189
190   ASSERT_TRUE(GetClient(1)->DisableSyncForAllDatatypes());
191   search_engines_helper::AddSearchEngine(0, 0);
192   ASSERT_TRUE(
193       GetClient(0)->AwaitFullSyncCompletion("Added a search engine."));
194   ASSERT_TRUE(search_engines_helper::ServiceMatchesVerifier(0));
195   ASSERT_FALSE(search_engines_helper::ServiceMatchesVerifier(1));
196
197   ASSERT_TRUE(GetClient(1)->EnableSyncForAllDatatypes());
198   ASSERT_TRUE(AwaitQuiescence());
199   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
200 }
201
202 // TCM ID - 8891809.
203 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, SyncDefault) {
204   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
205   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
206
207   search_engines_helper::AddSearchEngine(0, 0);
208   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
209
210   // Change the default to the new search engine, sync, and ensure that it
211   // changed in the second client. AllServicesMatch does a default search
212   // provider check.
213   search_engines_helper::ChangeDefaultSearchProvider(0, 0);
214   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
215
216   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
217 }
218
219 // Ensure that we can change the search engine and immediately delete it
220 // without putting the clients out of sync.
221 IN_PROC_BROWSER_TEST_F(TwoClientSearchEnginesSyncTest, DeleteSyncedDefault) {
222   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
223   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
224
225   search_engines_helper::AddSearchEngine(0, 0);
226   search_engines_helper::AddSearchEngine(0, 1);
227   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
228
229   search_engines_helper::ChangeDefaultSearchProvider(0, 0);
230   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
231   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
232
233   // Change the default on the first client and delete the old default.
234   search_engines_helper::ChangeDefaultSearchProvider(0, 1);
235   search_engines_helper::DeleteSearchEngineBySeed(0, 0);
236   ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
237
238   ASSERT_TRUE(search_engines_helper::AllServicesMatch());
239 }