Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(195)

Side by Side Diff: chrome/test/live_sync/two_client_bookmarks_sync_test.cc

Issue 7259005: Allow sync integration tests to operate on multiple datatypes: Preferences + Bookmarks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add BookmarksHelper class. (TODO: Trim lines to 80 chars) Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 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/rand_util.h"
6 #include "chrome/browser/profiles/profile.h"
7 #include "chrome/browser/sync/profile_sync_service_harness.h"
8 #include "chrome/test/live_sync/bookmarks_helper.h"
9 #include "chrome/test/live_sync/live_sync_test.h"
10
11 const std::string kGenericURL = "http://www.host.ext:1234/path/filename";
12 const std::wstring kGenericURLTitle = L"URL Title";
13 const std::wstring kGenericFolderName = L"Folder Name";
14 const std::wstring kGenericSubfolderName = L"Subfolder Name";
15 const std::wstring kGenericSubsubfolderName = L"Subsubfolder Name";
16
17 class TwoClientBookmarksSyncTest : public LiveSyncTest {
18 public:
19 TwoClientBookmarksSyncTest() : LiveSyncTest(TWO_CLIENT) {}
20 virtual ~TwoClientBookmarksSyncTest() {}
21
22 private:
23 DISALLOW_COPY_AND_ASSIGN(TwoClientBookmarksSyncTest);
24 };
25
26 const std::vector<unsigned char> GenericFavicon() {
27 return BookmarksHelper::CreateFavicon(254);
28 }
29
30 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, Sanity) {
31 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
32 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
33
34 GURL google_url("http://www.google.com");
35 ASSERT_TRUE(BookmarksHelper::AddURL(0, L"Google", google_url) != NULL);
36 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
37 ASSERT_TRUE(BookmarksHelper::AddURL(1, L"Yahoo", GURL("http://www.yahoo.com")) != NULL);
38 ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
39 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
40
41 const BookmarkNode* new_folder = BookmarksHelper::AddFolder(0, 2, L"New Folder ");
42 BookmarksHelper::Move(0, BookmarksHelper::GetUniqueNodeByURL(0, google_url), n ew_folder, 0);
43 BookmarksHelper::SetTitle(0, BookmarksHelper::GetBookmarkBarNode(0)->GetChild( 0), L"Yahoo!!");
44 ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::GetBookmarkBarNode(0), 1, L"CNN",
45 GURL("http://www.cnn.com")) != NULL);
46 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
47 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
48
49 ASSERT_TRUE(BookmarksHelper::AddURL(1, L"Facebook", GURL("http://www.facebook. com")) != NULL);
50 ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
51 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
52
53 BookmarksHelper::SortChildren(1, BookmarksHelper::GetBookmarkBarNode(1));
54 ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0)));
55 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
56
57 DisableVerifier();
58 BookmarksHelper::SetTitle(0, BookmarksHelper::GetUniqueNodeByURL(0, google_url ), L"Google++");
59 BookmarksHelper::SetTitle(1, BookmarksHelper::GetUniqueNodeByURL(1, google_url ), L"Google--");
60 ASSERT_TRUE(AwaitQuiescence());
61 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
62 }
63
64 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SimultaneousURLChanges) {
65 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
66 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
67
68 GURL initial_url("http://www.google.com");
69 GURL second_url("http://www.google.com/abc");
70 GURL third_url("http://www.google.com/def");
71 std::wstring title = L"Google";
72
73 ASSERT_TRUE(BookmarksHelper::AddURL(0, title, initial_url) != NULL);
74 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
75
76 DisableVerifier();
77 ASSERT_TRUE(
78 BookmarksHelper::SetURL(0, BookmarksHelper::GetUniqueNodeByURL(0, initial_ url), second_url) != NULL);
79 ASSERT_TRUE(
80 BookmarksHelper::SetURL(1, BookmarksHelper::GetUniqueNodeByURL(1, initial_ url), third_url) != NULL);
81 ASSERT_TRUE(AwaitQuiescence());
82 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
83
84 BookmarksHelper::SetTitle(0, BookmarksHelper::GetBookmarkBarNode(0)->GetChild( 0), L"Google1");
85 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
86 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
87 }
88
89 // Test Scribe ID - 370558.
90 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddFirstFolder) {
91 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
92 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
93
94 ASSERT_TRUE(BookmarksHelper::AddFolder(0, kGenericFolderName) != NULL);
95 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
96 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
97 }
98
99 // Test Scribe ID - 370559.
100 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
101 SC_AddFirstBMWithoutFavicon) {
102 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
103 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
104
105 ASSERT_TRUE(BookmarksHelper::AddURL(0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
106 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
107 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
108 }
109
110 // Test Scribe ID - 370489.
111 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
112 SC_AddFirstBMWithFavicon) {
113 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
114 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
115
116 const BookmarkNode* bookmark = BookmarksHelper::AddURL(0, kGenericURLTitle, GU RL(kGenericURL));
117 ASSERT_TRUE(bookmark != NULL);
118 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
119 BookmarksHelper::SetFavicon(0, bookmark, GenericFavicon());
120 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
121 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
122 }
123
124 // Test Scribe ID - 370560.
125 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_AddNonHTTPBMs) {
126 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
127 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
128
129 ASSERT_TRUE(BookmarksHelper::AddURL(
130 0, L"FTP URL", GURL("ftp://user:password@host:1234/path")) != NULL);
131 ASSERT_TRUE(BookmarksHelper::AddURL(0, L"File URL", GURL("file://host/path")) != NULL);
132 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
133 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
134 }
135
136 // Test Scribe ID - 370561.
137 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
138 SC_AddFirstBMUnderFolder) {
139 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
140 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
141
142 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, kGenericFolderName) ;
143 ASSERT_TRUE(folder != NULL);
144 ASSERT_TRUE(
145 BookmarksHelper::AddURL(0, folder, 0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
146 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
147 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
148 }
149
150 // Test Scribe ID - 370562.
151 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
152 SC_AddSeveralBMsUnderBMBarAndOtherBM) {
153 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
154 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
155
156 for (int i = 0; i < 20; ++i) {
157 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
158 GURL url = GURL(BookmarksHelper::IndexedURL(i));
159 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
160 ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::GetOtherNode(0), i, title, url) != NULL);
161 }
162 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
163 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
164 }
165
166 // Test Scribe ID - 370563.
167 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
168 SC_AddSeveralBMsAndFolders) {
169 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
170 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
171
172 for (int i = 0; i < 15; ++i) {
173 if (base::RandDouble() > 0.6) {
174 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
175 GURL url = GURL(BookmarksHelper::IndexedURL(i));
176 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
177 } else {
178 std::wstring title = BookmarksHelper::IndexedFolderName(i);
179 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, i, title);
180 ASSERT_TRUE(folder != NULL);
181 if (base::RandDouble() > 0.4) {
182 for (int i = 0; i < 20; ++i) {
183 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
184 GURL url = GURL(BookmarksHelper::IndexedURL(i));
185 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL) ;
186 }
187 }
188 }
189 }
190 for (int i = 0; i < 10; i++) {
191 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
192 GURL url = GURL(BookmarksHelper::IndexedURL(i));
193 ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::GetOtherNode(0), i, title, url) != NULL);
194 }
195 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
196 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
197 }
198
199 // Test Scribe ID - 370641.
200 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
201 SC_DuplicateBMWithDifferentURLSameName) {
202 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
203 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
204
205 GURL url0 = GURL(BookmarksHelper::IndexedURL(0));
206 GURL url1 = GURL(BookmarksHelper::IndexedURL(1));
207 ASSERT_TRUE(BookmarksHelper::AddURL(0, kGenericURLTitle, url0) != NULL);
208 ASSERT_TRUE(BookmarksHelper::AddURL(0, kGenericURLTitle, url1) != NULL);
209 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
210 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
211 }
212
213 // Test Scribe ID - 370639 - Add bookmarks with different name and same URL.
214 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
215 SC_DuplicateBookmarksWithSameURL) {
216 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
217 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
218
219 std::wstring title0 = BookmarksHelper::IndexedURLTitle(0);
220 std::wstring title1 = BookmarksHelper::IndexedURLTitle(1);
221 ASSERT_TRUE(BookmarksHelper::AddURL(0, title0, GURL(kGenericURL)) != NULL);
222 ASSERT_TRUE(BookmarksHelper::AddURL(0, title1, GURL(kGenericURL)) != NULL);
223 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
224 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
225 }
226
227 // Test Scribe ID - 371817.
228 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMName) {
229 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
230 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
231
232 std::wstring title = BookmarksHelper::IndexedURLTitle(1);
233 const BookmarkNode* bookmark = BookmarksHelper::AddURL(0, title, GURL(kGeneric URL));
234 ASSERT_TRUE(bookmark != NULL);
235 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
236 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
237
238 std::wstring new_title = BookmarksHelper::IndexedURLTitle(2);
239 BookmarksHelper::SetTitle(0, bookmark, new_title);
240 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
241 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
242 }
243
244 // Test Scribe ID - 371822.
245 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMURL) {
246 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
247 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
248
249 GURL url = GURL(BookmarksHelper::IndexedURL(1));
250 const BookmarkNode* bookmark = BookmarksHelper::AddURL(0, kGenericURLTitle, ur l);
251 ASSERT_TRUE(bookmark != NULL);
252 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
253 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
254
255 GURL new_url = GURL(BookmarksHelper::IndexedURL(2));
256 ASSERT_TRUE(BookmarksHelper::SetURL(0, bookmark, new_url) != NULL);
257 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
258 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
259 }
260
261
262 // Test Scribe ID - 371818 - Renaming the same bookmark name twice.
263 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
264 SC_TwiceRenamingBookmarkName) {
265 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
266 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
267
268 std::wstring title = BookmarksHelper::IndexedURLTitle(1);
269 const BookmarkNode* bookmark = BookmarksHelper::AddURL(0, title, GURL(kGeneric URL));
270 ASSERT_TRUE(bookmark != NULL);
271 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
272 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
273
274 std::wstring new_title = BookmarksHelper::IndexedURLTitle(2);
275 BookmarksHelper::SetTitle(0, bookmark, new_title);
276 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
277 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
278
279 BookmarksHelper::SetTitle(0, bookmark, title);
280 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
281 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
282 }
283
284 // Test Scribe ID - 371823 - Renaming the same bookmark URL twice.
285 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
286 SC_TwiceRenamingBookmarkURL) {
287 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
288 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
289
290 GURL url = GURL(BookmarksHelper::IndexedURL(1));
291 const BookmarkNode* bookmark = BookmarksHelper::AddURL(0, kGenericURLTitle, ur l);
292 ASSERT_TRUE(bookmark != NULL);
293 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
294 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
295
296 GURL new_url = GURL(BookmarksHelper::IndexedURL(2));
297 ASSERT_TRUE(BookmarksHelper::SetURL(0, bookmark, new_url) != NULL);
298 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
299 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
300
301 ASSERT_TRUE(BookmarksHelper::SetURL(0, bookmark, url) != NULL);
302 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
303 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
304 }
305
306 // Test Scribe ID - 371824.
307 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMFolder) {
308 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
309 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
310
311 std::wstring title = BookmarksHelper::IndexedFolderName(1);
312 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, title);
313 ASSERT_TRUE(
314 BookmarksHelper::AddURL(0, folder, 0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
315 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
316 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
317
318 std::wstring new_title = BookmarksHelper::IndexedFolderName(2);
319 BookmarksHelper::SetTitle(0, folder, new_title);
320 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
321 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
322 }
323
324 // Test Scribe ID - 371825.
325 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameEmptyBMFolder) {
326 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
327 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
328
329 std::wstring title = BookmarksHelper::IndexedFolderName(1);
330 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, title);
331 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
332 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
333
334 std::wstring new_title = BookmarksHelper::IndexedFolderName(2);
335 BookmarksHelper::SetTitle(0, folder, new_title);
336 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
337 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
338 }
339
340 // Test Scribe ID - 371826.
341 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
342 SC_RenameBMFolderWithLongHierarchy) {
343 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
344 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
345
346 std::wstring title = BookmarksHelper::IndexedFolderName(1);
347 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, title);
348 ASSERT_TRUE(folder != NULL);
349 for (int i = 0; i < 120; ++i) {
350 if (base::RandDouble() > 0.15) {
351 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
352 GURL url = GURL(BookmarksHelper::IndexedURL(i));
353 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
354 } else {
355 std::wstring title = BookmarksHelper::IndexedSubfolderName(i);
356 ASSERT_TRUE(BookmarksHelper::AddFolder(0, folder, i, title) != NULL);
357 }
358 }
359 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
360 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
361
362 std::wstring new_title = BookmarksHelper::IndexedFolderName(2);
363 BookmarksHelper::SetTitle(0, folder, new_title);
364 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
365 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
366 }
367
368 // Test Scribe ID - 371827.
369 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
370 SC_RenameBMFolderThatHasParentAndChildren) {
371 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
372 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
373
374 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, kGenericFolderName) ;
375 ASSERT_TRUE(folder != NULL);
376 for (int i = 1; i < 15; ++i) {
377 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
378 GURL url = GURL(BookmarksHelper::IndexedURL(i));
379 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
380 }
381 std::wstring title = BookmarksHelper::IndexedSubfolderName(1);
382 const BookmarkNode* subfolder = BookmarksHelper::AddFolder(0, folder, 0, title );
383 for (int i = 0; i < 120; ++i) {
384 if (base::RandDouble() > 0.15) {
385 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
386 GURL url = GURL(BookmarksHelper::IndexedURL(i));
387 ASSERT_TRUE(BookmarksHelper::AddURL(0, subfolder, i, title, url) != NULL);
388 } else {
389 std::wstring title = BookmarksHelper::IndexedSubsubfolderName(i);
390 ASSERT_TRUE(BookmarksHelper::AddFolder(0, subfolder, i, title) != NULL);
391 }
392 }
393 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
394 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
395
396 std::wstring new_title = BookmarksHelper::IndexedSubfolderName(2);
397 BookmarksHelper::SetTitle(0, subfolder, new_title);
398 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
399 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
400 }
401
402 // Test Scribe ID - 371828.
403 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_RenameBMNameAndURL) {
404 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
405 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
406
407 GURL url = GURL(BookmarksHelper::IndexedURL(1));
408 std::wstring title = BookmarksHelper::IndexedURLTitle(1);
409 const BookmarkNode* bookmark = BookmarksHelper::AddURL(0, title, url);
410 ASSERT_TRUE(bookmark != NULL);
411 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
412 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
413
414 GURL new_url = GURL(BookmarksHelper::IndexedURL(2));
415 std::wstring new_title = BookmarksHelper::IndexedURLTitle(2);
416 bookmark = BookmarksHelper::SetURL(0, bookmark, new_url);
417 ASSERT_TRUE(bookmark != NULL);
418 BookmarksHelper::SetTitle(0, bookmark, new_title);
419 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
420 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
421 }
422
423 // Test Scribe ID - 371832.
424 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
425 SC_DeleteBMEmptyAccountAfterwards) {
426 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
427 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
428
429 ASSERT_TRUE(BookmarksHelper::AddURL(0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
430 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
431 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
432
433 BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 0);
434 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
435 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
436 }
437
438 // Test Scribe ID - 371833.
439 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
440 SC_DelBMNonEmptyAccountAfterwards) {
441 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
442 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
443
444 for (int i = 0; i < 20; ++i) {
445 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
446 GURL url = GURL(BookmarksHelper::IndexedURL(i));
447 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
448 }
449 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
450 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
451
452 BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 0);
453 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
454 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
455 }
456
457 // Test Scribe ID - 371835.
458 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
459 SC_DelFirstBMUnderBMFoldNonEmptyFoldAfterwards) {
460 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
461 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
462
463 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, kGenericFolderName) ;
464 ASSERT_TRUE(folder != NULL);
465 for (int i = 0; i < 10; ++i) {
466 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
467 GURL url = GURL(BookmarksHelper::IndexedURL(i));
468 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
469 }
470 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
471 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
472
473 BookmarksHelper::Remove(0, folder, 0);
474 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
475 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
476 }
477
478 // Test Scribe ID - 371836.
479 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
480 SC_DelLastBMUnderBMFoldNonEmptyFoldAfterwards) {
481 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
482 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
483
484 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, kGenericFolderName) ;
485 ASSERT_TRUE(folder != NULL);
486 for (int i = 0; i < 10; ++i) {
487 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
488 GURL url = GURL(BookmarksHelper::IndexedURL(i));
489 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
490 }
491 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
492 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
493
494 BookmarksHelper::Remove(0, folder, folder->child_count() - 1);
495 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
496 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
497 }
498
499 // Test Scribe ID - 371856.
500 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
501 SC_DelMiddleBMUnderBMFoldNonEmptyFoldAfterwards) {
502 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
503 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
504
505 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, kGenericFolderName) ;
506 ASSERT_TRUE(folder != NULL);
507 for (int i = 0; i < 10; ++i) {
508 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
509 GURL url = GURL(BookmarksHelper::IndexedURL(i));
510 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
511 }
512 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
513 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
514
515 BookmarksHelper::Remove(0, folder, 4);
516 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
517 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
518 }
519
520 // Test Scribe ID - 371857.
521 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
522 SC_DelBMsUnderBMFoldEmptyFolderAfterwards) {
523 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
524 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
525
526 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, kGenericFolderName) ;
527 ASSERT_TRUE(folder != NULL);
528 for (int i = 0; i < 10; ++i) {
529 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
530 GURL url = GURL(BookmarksHelper::IndexedURL(i));
531 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
532 }
533 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
534 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
535
536 int child_count = folder->child_count();
537 for (int i = 0; i < child_count; ++i) {
538 BookmarksHelper::Remove(0, folder, 0);
539 }
540 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
541 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
542 }
543
544 // Test Scribe ID - 371858.
545 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
546 SC_DelEmptyBMFoldEmptyAccountAfterwards) {
547 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
548 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
549
550 ASSERT_TRUE(BookmarksHelper::AddFolder(0, kGenericFolderName) != NULL);
551 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
552 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
553
554 BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 0);
555 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
556 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
557 }
558
559 // Test Scribe ID - 371869.
560 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
561 SC_DelEmptyBMFoldNonEmptyAccountAfterwards) {
562 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
563 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
564
565 ASSERT_TRUE(BookmarksHelper::AddFolder(0, kGenericFolderName) != NULL);
566 for (int i = 1; i < 15; ++i) {
567 if (base::RandDouble() > 0.6) {
568 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
569 GURL url = GURL(BookmarksHelper::IndexedURL(i));
570 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
571 } else {
572 std::wstring title = BookmarksHelper::IndexedFolderName(i);
573 ASSERT_TRUE(BookmarksHelper::AddFolder(0, i, title) != NULL);
574 }
575 }
576 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
577 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
578
579 BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 0);
580 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
581 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
582 }
583
584 // Test Scribe ID - 371879.
585 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
586 SC_DelBMFoldWithBMsNonEmptyAccountAfterwards) {
587 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
588 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
589
590 ASSERT_TRUE(BookmarksHelper::AddURL(0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
591 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, 1, kGenericFolderNa me);
592 ASSERT_TRUE(folder != NULL);
593 for (int i = 2; i < 10; ++i) {
594 if (base::RandDouble() > 0.6) {
595 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
596 GURL url = GURL(BookmarksHelper::IndexedURL(i));
597 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
598 } else {
599 std::wstring title = BookmarksHelper::IndexedFolderName(i);
600 ASSERT_TRUE(BookmarksHelper::AddFolder(0, i, title) != NULL);
601 }
602 }
603 for (int i = 0; i < 15; ++i) {
604 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
605 GURL url = GURL(BookmarksHelper::IndexedURL(i));
606 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
607 }
608 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
609 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
610
611 BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 1);
612 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
613 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
614 }
615
616 // Test Scribe ID - 371880.
617 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
618 SC_DelBMFoldWithBMsAndBMFoldsNonEmptyACAfterwards) {
619 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
620 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
621
622 ASSERT_TRUE(BookmarksHelper::AddURL(0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
623 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, 1, kGenericFolderNa me);
624 ASSERT_TRUE(folder != NULL);
625 for (int i = 2; i < 10; ++i) {
626 if (base::RandDouble() > 0.6) {
627 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
628 GURL url = GURL(BookmarksHelper::IndexedURL(i));
629 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
630 } else {
631 std::wstring title = BookmarksHelper::IndexedFolderName(i);
632 ASSERT_TRUE(BookmarksHelper::AddFolder(0, i, title) != NULL);
633 }
634 }
635 for (int i = 0; i < 10; ++i) {
636 if (base::RandDouble() > 0.6) {
637 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
638 GURL url = GURL(BookmarksHelper::IndexedURL(i));
639 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
640 } else {
641 std::wstring title = BookmarksHelper::IndexedSubfolderName(i);
642 const BookmarkNode* subfolder = BookmarksHelper::AddFolder(0, folder, i, t itle);
643 ASSERT_TRUE(subfolder != NULL);
644 if (base::RandDouble() > 0.3) {
645 for (int j = 0; j < 10; ++j) {
646 if (base::RandDouble() > 0.6) {
647 std::wstring title = BookmarksHelper::IndexedURLTitle(j);
648 GURL url = GURL(BookmarksHelper::IndexedURL(j));
649 ASSERT_TRUE(BookmarksHelper::AddURL(0, subfolder, j, title, url) != NULL);
650 } else {
651 std::wstring title = BookmarksHelper::IndexedSubsubfolderName(j);
652 ASSERT_TRUE(BookmarksHelper::AddFolder(0, subfolder, j, title) != NU LL);
653 }
654 }
655 }
656 }
657 }
658 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
659 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
660
661 BookmarksHelper::Remove(0, BookmarksHelper::GetBookmarkBarNode(0), 1);
662 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
663 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
664 }
665
666 // Test Scribe ID - 371882.
667 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
668 SC_DelBMFoldWithParentAndChildrenBMsAndBMFolds) {
669 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
670 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
671
672 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, kGenericFolderName) ;
673 ASSERT_TRUE(folder != NULL);
674 for (int i = 1; i < 11; ++i) {
675 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
676 GURL url = GURL(BookmarksHelper::IndexedURL(i));
677 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
678 }
679 const BookmarkNode* subfolder =
680 BookmarksHelper::AddFolder(0, folder, 0, kGenericSubfolderName);
681 ASSERT_TRUE(subfolder != NULL);
682 for (int i = 0; i < 30; ++i) {
683 if (base::RandDouble() > 0.2) {
684 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
685 GURL url = GURL(BookmarksHelper::IndexedURL(i));
686 ASSERT_TRUE(BookmarksHelper::AddURL(0, subfolder, i, title, url) != NULL);
687 } else {
688 std::wstring title = BookmarksHelper::IndexedSubsubfolderName(i);
689 ASSERT_TRUE(BookmarksHelper::AddFolder(0, subfolder, i, title) != NULL);
690 }
691 }
692 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
693 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
694
695 BookmarksHelper::Remove(0, folder, 0);
696 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
697 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
698 }
699
700 // Test Scribe ID - 371931.
701 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
702 SC_ReverseTheOrderOfTwoBMs) {
703 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
704 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
705
706 GURL url0 = GURL(BookmarksHelper::IndexedURL(0));
707 GURL url1 = GURL(BookmarksHelper::IndexedURL(1));
708 std::wstring title0 = BookmarksHelper::IndexedURLTitle(0);
709 std::wstring title1 = BookmarksHelper::IndexedURLTitle(1);
710 const BookmarkNode* bookmark0 = BookmarksHelper::AddURL(0, 0, title0, url0);
711 const BookmarkNode* bookmark1 = BookmarksHelper::AddURL(0, 1, title1, url1);
712 ASSERT_TRUE(bookmark0 != NULL);
713 ASSERT_TRUE(bookmark1 != NULL);
714 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
715 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
716
717 BookmarksHelper::Move(0, bookmark0, BookmarksHelper::GetBookmarkBarNode(0), 2) ;
718 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
719 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
720 }
721
722 // Test Scribe ID - 371933.
723 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
724 SC_ReverseTheOrderOf10BMs) {
725 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
726 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
727
728 for (int i = 0; i < 10; ++i) {
729 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
730 GURL url = GURL(BookmarksHelper::IndexedURL(i));
731 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
732 }
733 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
734 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
735
736 BookmarksHelper::ReverseChildOrder(0, BookmarksHelper::GetBookmarkBarNode(0));
737 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
738 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
739 }
740
741 // Test Scribe ID - 371954.
742 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
743 SC_MovingBMsFromBMBarToBMFolder) {
744 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
745 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
746
747 ASSERT_TRUE(BookmarksHelper::AddURL(0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
748 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, 1, kGenericFolderNa me);
749 ASSERT_TRUE(folder != NULL);
750 for (int i = 2; i < 10; ++i) {
751 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
752 GURL url = GURL(BookmarksHelper::IndexedURL(i));
753 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
754 }
755 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
756 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
757
758 int num_bookmarks_to_move = BookmarksHelper::GetBookmarkBarNode(0)->child_coun t() - 2;
759 for (int i = 0; i < num_bookmarks_to_move; ++i) {
760 BookmarksHelper::Move(0, BookmarksHelper::GetBookmarkBarNode(0)->GetChild(2) , folder, i);
761 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
762 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
763 }
764 }
765
766 // Test Scribe ID - 371957.
767 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
768 SC_MovingBMsFromBMFoldToBMBar) {
769 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
770 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
771
772 ASSERT_TRUE(BookmarksHelper::AddURL(0, kGenericURLTitle, GURL(kGenericURL)) != NULL);
773 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, 1, kGenericFolderNa me);
774 ASSERT_TRUE(folder != NULL);
775 for (int i = 0; i < 10; ++i) {
776 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
777 GURL url = GURL(BookmarksHelper::IndexedURL(i));
778 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
779 }
780 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
781 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
782
783 int num_bookmarks_to_move = folder->child_count() - 2;
784 for (int i = 0; i < num_bookmarks_to_move; ++i) {
785 BookmarksHelper::Move(0, folder->GetChild(0), BookmarksHelper::GetBookmarkBa rNode(0), i);
786 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
787 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
788 }
789 }
790
791 // Test Scribe ID - 371961.
792 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
793 SC_MovingBMsFromParentBMFoldToChildBMFold) {
794 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
795 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
796
797 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, kGenericFolderName) ;
798 ASSERT_TRUE(folder != NULL);
799 for (int i = 0; i < 3; ++i) {
800 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
801 GURL url = GURL(BookmarksHelper::IndexedURL(i));
802 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
803 }
804 const BookmarkNode* subfolder =
805 BookmarksHelper::AddFolder(0, folder, 3, kGenericSubfolderName);
806 ASSERT_TRUE(subfolder != NULL);
807 for (int i = 0; i < 10; ++i) {
808 std::wstring title = BookmarksHelper::IndexedURLTitle(i + 3);
809 GURL url = GURL(BookmarksHelper::IndexedURL(i + 3));
810 ASSERT_TRUE(BookmarksHelper::AddURL(0, subfolder, i, title, url) != NULL);
811 }
812 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
813 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
814
815 for (int i = 0; i < 3; ++i) {
816 GURL url = GURL(BookmarksHelper::IndexedURL(i));
817 BookmarksHelper::Move(0, BookmarksHelper::GetUniqueNodeByURL(0, url), subfol der, i + 10);
818 }
819 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
820 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
821 }
822
823 // Test Scribe ID - 371964.
824 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
825 SC_MovingBMsFromChildBMFoldToParentBMFold) {
826 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
827 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
828
829 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, kGenericFolderName) ;
830 ASSERT_TRUE(folder != NULL);
831 for (int i = 0; i < 3; ++i) {
832 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
833 GURL url = GURL(BookmarksHelper::IndexedURL(i));
834 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
835 }
836 const BookmarkNode* subfolder =
837 BookmarksHelper::AddFolder(0, folder, 3, kGenericSubfolderName);
838 ASSERT_TRUE(subfolder != NULL);
839 for (int i = 0; i < 5; ++i) {
840 std::wstring title = BookmarksHelper::IndexedURLTitle(i + 3);
841 GURL url = GURL(BookmarksHelper::IndexedURL(i + 3));
842 ASSERT_TRUE(BookmarksHelper::AddURL(0, subfolder, i, title, url) != NULL);
843 }
844 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
845 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
846
847 for (int i = 0; i < 3; ++i) {
848 GURL url = GURL(BookmarksHelper::IndexedURL(i + 3));
849 BookmarksHelper::Move(0, BookmarksHelper::GetUniqueNodeByURL(0, url), folder , i + 4);
850 }
851 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
852 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
853 }
854
855 // Test Scribe ID - 371967.
856 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_HoistBMs10LevelUp) {
857 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
858 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
859
860 const BookmarkNode* folder = BookmarksHelper::GetBookmarkBarNode(0);
861 const BookmarkNode* folder_L0 = NULL;
862 const BookmarkNode* folder_L10 = NULL;
863 for (int level = 0; level < 15; ++level) {
864 int num_bookmarks = base::RandInt(0, 9);
865 for (int i = 0; i < num_bookmarks; ++i) {
866 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
867 GURL url = GURL(BookmarksHelper::IndexedURL(i));
868 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
869 }
870 std::wstring title = BookmarksHelper::IndexedFolderName(level);
871 folder = BookmarksHelper::AddFolder(0, folder, folder->child_count(), title) ;
872 ASSERT_TRUE(folder != NULL);
873 if (level == 0) folder_L0 = folder;
874 if (level == 10) folder_L10 = folder;
875 }
876 for (int i = 0; i < 3; ++i) {
877 std::wstring title = BookmarksHelper::IndexedURLTitle(i + 10);
878 GURL url = GURL(BookmarksHelper::IndexedURL(i + 10));
879 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder_L10, i, title, url) != NULL);
880 }
881 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
882 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
883
884 GURL url10 = GURL(BookmarksHelper::IndexedURL(10));
885 BookmarksHelper::Move(0, BookmarksHelper::GetUniqueNodeByURL(0, url10), folder _L0, folder_L0->child_count());
886 GURL url11 = GURL(BookmarksHelper::IndexedURL(11));
887 BookmarksHelper::Move(0, BookmarksHelper::GetUniqueNodeByURL(0, url11), folder _L0, 0);
888 GURL url12 = GURL(BookmarksHelper::IndexedURL(12));
889 BookmarksHelper::Move(0, BookmarksHelper::GetUniqueNodeByURL(0, url12), folder _L0, 1);
890 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
891 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
892 }
893
894 // Test Scribe ID - 371968.
895 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, SC_SinkBMs10LevelDown) {
896 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
897 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
898
899 const BookmarkNode* folder = BookmarksHelper::GetBookmarkBarNode(0);
900 const BookmarkNode* folder_L0 = NULL;
901 const BookmarkNode* folder_L10 = NULL;
902 for (int level = 0; level < 15; ++level) {
903 int num_bookmarks = base::RandInt(0, 9);
904 for (int i = 0; i < num_bookmarks; ++i) {
905 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
906 GURL url = GURL(BookmarksHelper::IndexedURL(i));
907 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
908 }
909 std::wstring title = BookmarksHelper::IndexedFolderName(level);
910 folder = BookmarksHelper::AddFolder(0, folder, folder->child_count(), title) ;
911 ASSERT_TRUE(folder != NULL);
912 if (level == 0) folder_L0 = folder;
913 if (level == 10) folder_L10 = folder;
914 }
915 for (int i = 0; i < 3; ++i) {
916 std::wstring title = BookmarksHelper::IndexedURLTitle(i + 10);
917 GURL url = GURL(BookmarksHelper::IndexedURL(i + 10));
918 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder_L0, 0, title, url) != NULL);
919 }
920 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
921 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
922
923 GURL url10 = GURL(BookmarksHelper::IndexedURL(10));
924 BookmarksHelper::Move(0, BookmarksHelper::GetUniqueNodeByURL(0, url10), folder _L10,
925 folder_L10->child_count());
926 GURL url11 = GURL(BookmarksHelper::IndexedURL(11));
927 BookmarksHelper::Move(0, BookmarksHelper::GetUniqueNodeByURL(0, url11), folder _L10, 0);
928 GURL url12 = GURL(BookmarksHelper::IndexedURL(12));
929 BookmarksHelper::Move(0, BookmarksHelper::GetUniqueNodeByURL(0, url12), folder _L10, 1);
930 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
931 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
932 }
933
934 // Test Scribe ID - 371980.
935 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
936 SC_SinkEmptyBMFold5LevelsDown) {
937 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
938 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
939
940 const BookmarkNode* folder = BookmarksHelper::GetBookmarkBarNode(0);
941 const BookmarkNode* folder_L5 = NULL;
942 for (int level = 0; level < 15; ++level) {
943 int num_bookmarks = base::RandInt(0, 9);
944 for (int i = 0; i < num_bookmarks; ++i) {
945 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
946 GURL url = GURL(BookmarksHelper::IndexedURL(i));
947 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
948 }
949 std::wstring title = BookmarksHelper::IndexedFolderName(level);
950 folder = BookmarksHelper::AddFolder(0, folder, folder->child_count(), title) ;
951 ASSERT_TRUE(folder != NULL);
952 if (level == 5) folder_L5 = folder;
953 }
954 folder =
955 BookmarksHelper::AddFolder(0, BookmarksHelper::GetBookmarkBarNode(0)->chil d_count(), kGenericFolderName);
956 ASSERT_TRUE(folder != NULL);
957 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
958 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
959
960 BookmarksHelper::Move(0, folder, folder_L5, folder_L5->child_count());
961 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
962 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
963 }
964
965 // Test Scribe ID - 371997.
966 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
967 SC_SinkNonEmptyBMFold5LevelsDown) {
968 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
969 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
970
971 const BookmarkNode* folder = BookmarksHelper::GetBookmarkBarNode(0);
972 const BookmarkNode* folder_L5 = NULL;
973 for (int level = 0; level < 6; ++level) {
974 int num_bookmarks = base::RandInt(0, 9);
975 for (int i = 0; i < num_bookmarks; ++i) {
976 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
977 GURL url = GURL(BookmarksHelper::IndexedURL(i));
978 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
979 }
980 std::wstring title = BookmarksHelper::IndexedFolderName(level);
981 folder = BookmarksHelper::AddFolder(0, folder, folder->child_count(), title) ;
982 ASSERT_TRUE(folder != NULL);
983 if (level == 5) folder_L5 = folder;
984 }
985 folder =
986 BookmarksHelper::AddFolder(0, BookmarksHelper::GetBookmarkBarNode(0)->chil d_count(), kGenericFolderName);
987 ASSERT_TRUE(folder != NULL);
988 for (int i = 0; i < 10; ++i) {
989 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
990 GURL url = GURL(BookmarksHelper::IndexedURL(i));
991 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
992 }
993 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
994 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
995
996 BookmarksHelper::Move(0, folder, folder_L5, folder_L5->child_count());
997 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
998 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
999 }
1000
1001 // Test Scribe ID - 372006.
1002 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1003 SC_HoistFolder5LevelsUp) {
1004 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1005 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1006
1007 const BookmarkNode* folder = BookmarksHelper::GetBookmarkBarNode(0);
1008 const BookmarkNode* folder_L5 = NULL;
1009 for (int level = 0; level < 6; ++level) {
1010 int num_bookmarks = base::RandInt(0, 9);
1011 for (int i = 0; i < num_bookmarks; ++i) {
1012 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1013 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1014 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
1015 }
1016 std::wstring title = BookmarksHelper::IndexedFolderName(level);
1017 folder = BookmarksHelper::AddFolder(0, folder, folder->child_count(), title) ;
1018 ASSERT_TRUE(folder != NULL);
1019 if (level == 5) folder_L5 = folder;
1020 }
1021 folder =
1022 BookmarksHelper::AddFolder(0, folder_L5, folder_L5->child_count(), kGeneri cFolderName);
1023 ASSERT_TRUE(folder != NULL);
1024 for (int i = 0; i < 10; ++i) {
1025 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1026 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1027 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, i, title, url) != NULL);
1028 }
1029 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1030 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1031
1032 BookmarksHelper::Move(0, folder, BookmarksHelper::GetBookmarkBarNode(0),
1033 BookmarksHelper::GetBookmarkBarNode(0)->child_count());
1034 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1035 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1036 }
1037
1038 // Test Scribe ID - 372026.
1039 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1040 SC_ReverseTheOrderOfTwoBMFolders) {
1041 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1042 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1043
1044 for (int i = 0; i < 2; ++i) {
1045 std::wstring title = BookmarksHelper::IndexedFolderName(i);
1046 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, i, title);
1047 ASSERT_TRUE(folder != NULL);
1048 for (int j = 0; j < 10; ++j) {
1049 std::wstring title = BookmarksHelper::IndexedURLTitle(j);
1050 GURL url = GURL(BookmarksHelper::IndexedURL(j));
1051 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, j, title, url) != NULL);
1052 }
1053 }
1054 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1055 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1056
1057 BookmarksHelper::ReverseChildOrder(0, BookmarksHelper::GetBookmarkBarNode(0));
1058 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1059 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1060 }
1061
1062 // Test Scribe ID - 372028.
1063 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1064 SC_ReverseTheOrderOfTenBMFolders) {
1065 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1066 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1067
1068 for (int i = 0; i < 10; ++i) {
1069 std::wstring title = BookmarksHelper::IndexedFolderName(i);
1070 const BookmarkNode* folder = BookmarksHelper::AddFolder(0, i, title);
1071 ASSERT_TRUE(folder != NULL);
1072 for (int j = 0; j < 10; ++j) {
1073 std::wstring title = BookmarksHelper::IndexedURLTitle(1000 * i + j);
1074 GURL url = GURL(BookmarksHelper::IndexedURL(j));
1075 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder, j, title, url) != NULL);
1076 }
1077 }
1078 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1079 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1080
1081 BookmarksHelper::ReverseChildOrder(0, BookmarksHelper::GetBookmarkBarNode(0));
1082 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1083 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1084 }
1085
1086 // Test Scribe ID - 373379.
1087 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1088 MC_BiDirectionalPushAddingBM) {
1089 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1090 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1091
1092 DisableVerifier();
1093 for (int i = 0; i < 2; ++i) {
1094 std::wstring title0 = BookmarksHelper::IndexedURLTitle(2*i);
1095 GURL url0 = GURL(BookmarksHelper::IndexedURL(2*i));
1096 ASSERT_TRUE(BookmarksHelper::AddURL(0, title0, url0) != NULL);
1097 std::wstring title1 = BookmarksHelper::IndexedURLTitle(2*i+1);
1098 GURL url1 = GURL(BookmarksHelper::IndexedURL(2*i+1));
1099 ASSERT_TRUE(BookmarksHelper::AddURL(1, title1, url1) != NULL);
1100 }
1101 ASSERT_TRUE(AwaitQuiescence());
1102 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1103 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1104 }
1105
1106 // Test Scribe ID - 373503.
1107 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1108 MC_BiDirectionalPush_AddingSameBMs) {
1109 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1110 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1111
1112 // Note: When a racy commit is done with identical bookmarks, it is possible
1113 // for duplicates to exist after sync completes. See http://crbug.com/19769.
1114 DisableVerifier();
1115 for (int i = 0; i < 2; ++i) {
1116 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1117 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1118 ASSERT_TRUE(BookmarksHelper::AddURL(0, title, url) != NULL);
1119 ASSERT_TRUE(BookmarksHelper::AddURL(1, title, url) != NULL);
1120 }
1121 ASSERT_TRUE(AwaitQuiescence());
1122 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1123 }
1124
1125 // Test Scribe ID - 373506.
1126 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1127 MC_BootStrapEmptyStateEverywhere) {
1128 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1129 ASSERT_TRUE(AwaitQuiescence());
1130 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1131 }
1132
1133 // Test Scribe ID - 373505.
1134 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1135 MC_Merge_CaseInsensitivity_InNames) {
1136 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1137 DisableVerifier();
1138
1139 const BookmarkNode* folder0 = BookmarksHelper::AddFolder(0, L"Folder");
1140 ASSERT_TRUE(folder0 != NULL);
1141 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, 0, L"Bookmark 0", GURL(kGeneri cURL)) != NULL);
1142 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, 1, L"Bookmark 1", GURL(kGeneri cURL)) != NULL);
1143 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, 2, L"Bookmark 2", GURL(kGeneri cURL)) != NULL);
1144
1145 const BookmarkNode* folder1 = BookmarksHelper::AddFolder(1, L"fOlDeR");
1146 ASSERT_TRUE(folder1 != NULL);
1147 ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, 0, L"bOoKmArK 0", GURL(kGeneri cURL)) != NULL);
1148 ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, 1, L"BooKMarK 1", GURL(kGeneri cURL)) != NULL);
1149 ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, 2, L"bOOKMARK 2", GURL(kGeneri cURL)) != NULL);
1150
1151 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1152 ASSERT_TRUE(AwaitQuiescence());
1153 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1154 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1155 }
1156
1157 // Test Scribe ID - 373508.
1158 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1159 MC_SimpleMergeOfDifferentBMModels) {
1160 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1161 DisableVerifier();
1162
1163 for (int i = 0; i < 3; ++i) {
1164 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1165 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1166 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
1167 ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title, url) != NULL);
1168 }
1169
1170 for (int i = 3; i < 10; ++i) {
1171 std::wstring title0 = BookmarksHelper::IndexedURLTitle(i);
1172 GURL url0 = GURL(BookmarksHelper::IndexedURL(i));
1173 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title0, url0) != NULL);
1174 std::wstring title1 = BookmarksHelper::IndexedURLTitle(i+7);
1175 GURL url1 = GURL(BookmarksHelper::IndexedURL(i+7));
1176 ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title1, url1) != NULL);
1177 }
1178
1179 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1180 ASSERT_TRUE(AwaitQuiescence());
1181 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1182 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1183 }
1184
1185 // Test Scribe ID - 386586.
1186 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1187 MC_MergeSimpleBMHierarchyUnderBMBar) {
1188 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1189 DisableVerifier();
1190
1191 for (int i = 0; i < 3; ++i) {
1192 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1193 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1194 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
1195 ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title, url) != NULL);
1196 }
1197
1198 for (int i = 3; i < 10; ++i) {
1199 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1200 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1201 ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title, url) != NULL);
1202 }
1203
1204 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1205 ASSERT_TRUE(AwaitQuiescence());
1206 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1207 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1208 }
1209
1210 // Test Scribe ID - 386589.
1211 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1212 MC_MergeSimpleBMHierarchyEqualSetsUnderBMBar) {
1213 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1214 DisableVerifier();
1215
1216 for (int i = 0; i < 3; ++i) {
1217 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1218 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1219 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
1220 ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title, url) != NULL);
1221 }
1222
1223 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1224 ASSERT_TRUE(AwaitQuiescence());
1225 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1226 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1227 }
1228
1229 // Test Scribe ID - 373504 - Merge bookmark folders with different bookmarks.
1230 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1231 MC_MergeBMFoldersWithDifferentBMs) {
1232 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1233 DisableVerifier();
1234
1235 const BookmarkNode* folder0 = BookmarksHelper::AddFolder(0, kGenericFolderName );
1236 ASSERT_TRUE(folder0 != NULL);
1237 const BookmarkNode* folder1 = BookmarksHelper::AddFolder(1, kGenericFolderName );
1238 ASSERT_TRUE(folder1 != NULL);
1239 for (int i = 0; i < 2; ++i) {
1240 std::wstring title0 = BookmarksHelper::IndexedURLTitle(2*i);
1241 GURL url0 = GURL(BookmarksHelper::IndexedURL(2*i));
1242 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, i, title0, url0) != NULL);
1243 std::wstring title1 = BookmarksHelper::IndexedURLTitle(2*i+1);
1244 GURL url1 = GURL(BookmarksHelper::IndexedURL(2*i+1));
1245 ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, i, title1, url1) != NULL);
1246 }
1247 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1248 ASSERT_TRUE(AwaitQuiescence());
1249 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1250 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1251 }
1252
1253 // Test Scribe ID - 373509 - Merge moderately complex bookmark models.
1254 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1255 MC_MergeDifferentBMModelsModeratelyComplex) {
1256 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1257 DisableVerifier();
1258
1259 for (int i = 0; i < 25; ++i) {
1260 std::wstring title0 = BookmarksHelper::IndexedURLTitle(i);
1261 GURL url0 = GURL(BookmarksHelper::IndexedURL(i));
1262 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title0, url0) != NULL);
1263 std::wstring title1 = BookmarksHelper::IndexedURLTitle(i+50);
1264 GURL url1 = GURL(BookmarksHelper::IndexedURL(i+50));
1265 ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title1, url1) != NULL);
1266 }
1267 for (int i = 25; i < 30; ++i) {
1268 std::wstring title0 = BookmarksHelper::IndexedFolderName(i);
1269 const BookmarkNode* folder0 = BookmarksHelper::AddFolder(0, i, title0);
1270 ASSERT_TRUE(folder0 != NULL);
1271 std::wstring title1 = BookmarksHelper::IndexedFolderName(i+50);
1272 const BookmarkNode* folder1 = BookmarksHelper::AddFolder(1, i, title1);
1273 ASSERT_TRUE(folder1 != NULL);
1274 for (int j = 0; j < 5; ++j) {
1275 std::wstring title0 = BookmarksHelper::IndexedURLTitle(i+5*j);
1276 GURL url0 = GURL(BookmarksHelper::IndexedURL(i+5*j));
1277 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, j, title0, url0) != NULL);
1278 std::wstring title1 = BookmarksHelper::IndexedURLTitle(i+5*j+50);
1279 GURL url1 = GURL(BookmarksHelper::IndexedURL(i+5*j+50));
1280 ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, j, title1, url1) != NULL);
1281 }
1282 }
1283 for (int i = 100; i < 125; ++i) {
1284 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1285 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1286 ASSERT_TRUE(BookmarksHelper::AddURL(0, title, url) != NULL);
1287 ASSERT_TRUE(BookmarksHelper::AddURL(1, title, url) != NULL);
1288 }
1289 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1290 ASSERT_TRUE(AwaitQuiescence());
1291 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1292 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1293 }
1294
1295 // TCM ID - 3675271 - Merge simple bookmark subset under bookmark folder.
1296 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1297 MC_MergeSimpleBMHierarchySubsetUnderBMFolder) {
1298 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1299 DisableVerifier();
1300
1301 for (int i = 0; i < 2; ++i) {
1302 const BookmarkNode* folder = BookmarksHelper::AddFolder(i, kGenericFolderNam e);
1303 ASSERT_TRUE(folder != NULL);
1304 for (int j = 0; j < 4; ++j) {
1305 if (base::RandDouble() < 0.5) {
1306 std::wstring title = BookmarksHelper::IndexedURLTitle(j);
1307 GURL url = GURL(BookmarksHelper::IndexedURL(j));
1308 ASSERT_TRUE(BookmarksHelper::AddURL(i, folder, j, title, url) != NULL);
1309 } else {
1310 std::wstring title = BookmarksHelper::IndexedFolderName(j);
1311 ASSERT_TRUE(BookmarksHelper::AddFolder(i, folder, j, title) != NULL);
1312 }
1313 }
1314 }
1315 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1316 ASSERT_TRUE(AwaitQuiescence());
1317 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1318 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1319 }
1320
1321 // TCM ID - 3727284 - Merge subsets of bookmark under bookmark bar.
1322 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1323 MC_MergeSimpleBMHierarchySubsetUnderBookmarkBar) {
1324 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1325 DisableVerifier();
1326
1327 for (int i = 0; i < 4; ++i) {
1328 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1329 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1330 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
1331 }
1332
1333 for (int j = 0; j < 2; ++j) {
1334 std::wstring title = BookmarksHelper::IndexedURLTitle(j);
1335 GURL url = GURL(BookmarksHelper::IndexedURL(j));
1336 ASSERT_TRUE(BookmarksHelper::AddURL(1, j, title, url) != NULL);
1337 }
1338
1339 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1340 ASSERT_TRUE(AwaitQuiescence());
1341 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1342 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1343 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(1));
1344 }
1345
1346 // TCM ID - 3659294 - Merge simple bookmark hierarchy under bookmark folder.
1347 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1348 MC_Merge_SimpleBMHierarchy_Under_BMFolder) {
1349 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1350 DisableVerifier();
1351
1352 const BookmarkNode* folder0 = BookmarksHelper::AddFolder(0, 0, kGenericFolderN ame);
1353 ASSERT_TRUE(folder0 != NULL);
1354 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, 0, BookmarksHelper::IndexedURL Title(1),
1355 GURL(BookmarksHelper::IndexedURL(1))) != NULL);
1356 ASSERT_TRUE(BookmarksHelper::AddFolder(0, folder0, 1, BookmarksHelper::Indexed SubfolderName(2)) != NULL);
1357 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, 2, BookmarksHelper::IndexedURL Title(3),
1358 GURL(BookmarksHelper::IndexedURL(3))) != NULL);
1359 ASSERT_TRUE(BookmarksHelper::AddFolder(0, folder0, 3, BookmarksHelper::Indexed SubfolderName(4)) != NULL);
1360
1361 const BookmarkNode* folder1 = BookmarksHelper::AddFolder(1, 0, kGenericFolderN ame);
1362 ASSERT_TRUE(folder1 != NULL);
1363 ASSERT_TRUE(BookmarksHelper::AddFolder(1, folder1, 0, BookmarksHelper::Indexed SubfolderName(0)) != NULL);
1364 ASSERT_TRUE(BookmarksHelper::AddFolder(1, folder1, 1, BookmarksHelper::Indexed SubfolderName(2)) != NULL);
1365 ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, 2, BookmarksHelper::IndexedURL Title(3),
1366 GURL(BookmarksHelper::IndexedURL(3))) != NULL);
1367 ASSERT_TRUE(BookmarksHelper::AddFolder(1, folder1, 3, BookmarksHelper::Indexed SubfolderName(5)) != NULL);
1368 ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, 4, BookmarksHelper::IndexedURL Title(1),
1369 GURL(BookmarksHelper::IndexedURL(1))) != NULL);
1370
1371 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1372 ASSERT_TRUE(AwaitQuiescence());
1373 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1374 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1375 }
1376
1377 // TCM ID - 3711273 - Merge disjoint sets of bookmark hierarchy under bookmark
1378 // folder.
1379 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1380 MC_Merge_SimpleBMHierarchy_DisjointSets_Under_BMFolder) {
1381 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1382 DisableVerifier();
1383
1384 const BookmarkNode* folder0 = BookmarksHelper::AddFolder(0, 0, kGenericFolderN ame);
1385 ASSERT_TRUE(folder0 != NULL);
1386 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, 0, BookmarksHelper::IndexedURL Title(1),
1387 GURL(BookmarksHelper::IndexedURL(1))) != NULL);
1388 ASSERT_TRUE(BookmarksHelper::AddFolder(0, folder0, 1, BookmarksHelper::Indexed SubfolderName(2)) != NULL);
1389 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, 2, BookmarksHelper::IndexedURL Title(3),
1390 GURL(BookmarksHelper::IndexedURL(3))) != NULL);
1391 ASSERT_TRUE(BookmarksHelper::AddFolder(0, folder0, 3, BookmarksHelper::Indexed SubfolderName(4)) != NULL);
1392
1393 const BookmarkNode* folder1 = BookmarksHelper::AddFolder(1, 0, kGenericFolderN ame);
1394 ASSERT_TRUE(folder1 != NULL);
1395 ASSERT_TRUE(BookmarksHelper::AddFolder(1, folder1, 0, BookmarksHelper::Indexed SubfolderName(5)) != NULL);
1396 ASSERT_TRUE(BookmarksHelper::AddFolder(1, folder1, 1, BookmarksHelper::Indexed SubfolderName(6)) != NULL);
1397 ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, 2, BookmarksHelper::IndexedURL Title(7),
1398 GURL(BookmarksHelper::IndexedURL(7))) != NULL);
1399 ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, 3, BookmarksHelper::IndexedURL Title(8),
1400 GURL(BookmarksHelper::IndexedURL(8))) != NULL);
1401
1402 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1403 ASSERT_TRUE(AwaitQuiescence());
1404 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1405 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1406 }
1407
1408 // TCM ID - 3639296 - Merge disjoint sets of bookmark hierarchy under bookmark
1409 // bar.
1410 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1411 MC_Merge_SimpleBMHierarchy_DisjointSets_Under_BookmarkBar) {
1412 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1413 DisableVerifier();
1414
1415 for (int i = 0; i < 3; ++i) {
1416 std::wstring title = BookmarksHelper::IndexedURLTitle(i+1);
1417 GURL url = GURL(BookmarksHelper::IndexedURL(i+1));
1418 ASSERT_TRUE(BookmarksHelper::AddURL(0, i, title, url) != NULL);
1419 }
1420
1421 for (int j = 0; j < 3; ++j) {
1422 std::wstring title = BookmarksHelper::IndexedURLTitle(j+4);
1423 GURL url = GURL(BookmarksHelper::IndexedURL(j+4));
1424 ASSERT_TRUE(BookmarksHelper::AddURL(0, j, title, url) != NULL);
1425 }
1426
1427 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1428 ASSERT_TRUE(AwaitQuiescence());
1429 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1430 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1431 }
1432
1433 // TCM ID - 3616282 - Merge sets of duplicate bookmarks under bookmark bar.
1434 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1435 MC_Merge_SimpleBMHierarchy_DuplicateBMs_Under_BMBar) {
1436 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1437 DisableVerifier();
1438
1439 // Let's add duplicate set of bookmark {1,2,2,3,3,3,4,4,4,4} to client0.
1440 int node_index = 0;
1441 for (int i = 1; i < 5 ; ++i) {
1442 for (int j = 0; j < i; ++j) {
1443 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1444 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1445 ASSERT_TRUE(BookmarksHelper::AddURL(0, node_index, title, url) != NULL);
1446 ++node_index;
1447 }
1448 }
1449 // Let's add a set of bookmarks {1,2,3,4} to client1.
1450 for (int i = 0; i < 4; ++i) {
1451 std::wstring title = BookmarksHelper::IndexedURLTitle(i+1);
1452 GURL url = GURL(BookmarksHelper::IndexedURL(i+1));
1453 ASSERT_TRUE(BookmarksHelper::AddURL(1, i, title, url) != NULL);
1454 }
1455
1456 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1457 ASSERT_TRUE(AwaitQuiescence());
1458 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1459
1460 for (int i = 1; i < 5 ; ++i) {
1461 ASSERT_TRUE(BookmarksHelper::CountBookmarksWithTitlesMatching(1, BookmarksHe lper::IndexedURLTitle(i)) == i);
1462 }
1463 }
1464
1465 // TCM ID - 6593872.
1466 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, DisableBookmarks) {
1467 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1468 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1469
1470 ASSERT_TRUE(GetClient(1)->DisableSyncForDatatype(syncable::BOOKMARKS));
1471 ASSERT_TRUE(BookmarksHelper::AddFolder(1, kGenericFolderName) != NULL);
1472 ASSERT_TRUE(AwaitQuiescence());
1473 ASSERT_FALSE(BookmarksHelper::AllModelsMatch());
1474
1475 ASSERT_TRUE(GetClient(1)->EnableSyncForDatatype(syncable::BOOKMARKS));
1476 ASSERT_TRUE(AwaitQuiescence());
1477 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1478 }
1479
1480 // TCM ID - 7343544.
1481 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, DisableSync) {
1482 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1483 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1484
1485 ASSERT_TRUE(GetClient(1)->DisableSyncForAllDatatypes());
1486 ASSERT_TRUE(BookmarksHelper::AddFolder(0, BookmarksHelper::IndexedFolderName(0 )) != NULL);
1487 ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion("Added a folder."));
1488 ASSERT_FALSE(BookmarksHelper::AllModelsMatch());
1489
1490 ASSERT_TRUE(BookmarksHelper::AddFolder(1, BookmarksHelper::IndexedFolderName(1 )) != NULL);
1491 ASSERT_FALSE(BookmarksHelper::AllModelsMatch());
1492
1493 ASSERT_TRUE(GetClient(1)->EnableSyncForAllDatatypes());
1494 ASSERT_TRUE(AwaitQuiescence());
1495 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1496 }
1497
1498 // TCM ID - 3662298 - Test adding duplicate folder - Both with different BMs
1499 // underneath.
1500 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest, MC_DuplicateFolders) {
1501 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1502 DisableVerifier();
1503
1504 const BookmarkNode* folder0 = BookmarksHelper::AddFolder(0, kGenericFolderName );
1505 ASSERT_TRUE(folder0 != NULL);
1506 const BookmarkNode* folder1 = BookmarksHelper::AddFolder(1, kGenericFolderName );
1507 ASSERT_TRUE(folder1 != NULL);
1508 for (int i = 0; i < 5; ++i) {
1509 std::wstring title0 = BookmarksHelper::IndexedURLTitle(i);
1510 GURL url0 = GURL(BookmarksHelper::IndexedURL(i));
1511 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, i, title0, url0) != NULL);
1512 std::wstring title1 = BookmarksHelper::IndexedURLTitle(i+5);
1513 GURL url1 = GURL(BookmarksHelper::IndexedURL(i+5));
1514 ASSERT_TRUE(BookmarksHelper::AddURL(1, folder1, i, title1, url1) != NULL);
1515 }
1516
1517 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1518 ASSERT_TRUE(AwaitQuiescence());
1519 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1520 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1521 }
1522
1523 // TCM ID - 3719307 - Test a scenario of updating the name of the same bookmark
1524 // from two clients at the same time.
1525 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1526 MC_BookmarkNameChangeConflict) {
1527 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1528
1529 const BookmarkNode* folder0 = BookmarksHelper::AddFolder(0, kGenericFolderName );
1530 ASSERT_TRUE(folder0 != NULL);
1531 for (int i = 0; i < 3; ++i) {
1532 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1533 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1534 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, i, title, url) != NULL);
1535 }
1536 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1537 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1538 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1539
1540 DisableVerifier();
1541 GURL url(BookmarksHelper::IndexedURL(0));
1542 BookmarksHelper::SetTitle(0, BookmarksHelper::GetUniqueNodeByURL(0, url), L"Ti tle++");
1543 BookmarksHelper::SetTitle(1, BookmarksHelper::GetUniqueNodeByURL(1, url), L"Ti tle--");
1544
1545 ASSERT_TRUE(AwaitQuiescence());
1546 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1547 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1548 }
1549
1550 // TCM ID - 3672299 - Test a scenario of updating the URL of the same bookmark
1551 // from two clients at the same time.
1552 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1553 MC_BookmarkURLChangeConflict) {
1554 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1555
1556 const BookmarkNode* folder0 = BookmarksHelper::AddFolder(0, kGenericFolderName );
1557 ASSERT_TRUE(folder0 != NULL);
1558 for (int i = 0; i < 3; ++i) {
1559 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1560 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1561 ASSERT_TRUE(BookmarksHelper::AddURL(0, folder0, i, title, url) != NULL);
1562 }
1563 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1564 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1565 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1566
1567 DisableVerifier();
1568 GURL url(BookmarksHelper::IndexedURL(0));
1569 ASSERT_TRUE(BookmarksHelper::SetURL(0,
1570 BookmarksHelper::GetUniqueNodeByURL(0, url),
1571 GURL("http://www.google.com/00")));
1572 ASSERT_TRUE(BookmarksHelper::SetURL(1,
1573 BookmarksHelper::GetUniqueNodeByURL(1, url),
1574 GURL("http://www.google.com/11")));
1575
1576 ASSERT_TRUE(AwaitQuiescence());
1577 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1578 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1579 }
1580
1581 // TCM ID - 3699290 - Test a scenario of updating the BM Folder name from two
1582 // clients at the same time.
1583 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1584 MC_FolderNameChangeConflict) {
1585 ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
1586 DisableVerifier();
1587
1588 const BookmarkNode* folderA[2];
1589 const BookmarkNode* folderB[2];
1590 const BookmarkNode* folderC[2];
1591
1592 // Create empty folder A on both clients.
1593 folderA[0] = BookmarksHelper::AddFolder(0, BookmarksHelper::IndexedFolderName( 0));
1594 ASSERT_TRUE(folderA[0] != NULL);
1595 folderA[1] = BookmarksHelper::AddFolder(1, BookmarksHelper::IndexedFolderName( 0));
1596 ASSERT_TRUE(folderA[1] != NULL);
1597
1598 // Create folder B with bookmarks on both clients.
1599 folderB[0] = BookmarksHelper::AddFolder(0, BookmarksHelper::IndexedFolderName( 1));
1600 ASSERT_TRUE(folderB[0] != NULL);
1601 folderB[1] = BookmarksHelper::AddFolder(1, BookmarksHelper::IndexedFolderName( 1));
1602 ASSERT_TRUE(folderB[1] != NULL);
1603 for (int i = 0; i < 3; ++i) {
1604 std::wstring title = BookmarksHelper::IndexedURLTitle(i);
1605 GURL url = GURL(BookmarksHelper::IndexedURL(i));
1606 ASSERT_TRUE(BookmarksHelper::AddURL(0, folderB[0], i, title, url) != NULL);
1607 }
1608
1609 // Create folder C with bookmarks and subfolders on both clients.
1610 folderC[0] = BookmarksHelper::AddFolder(0, BookmarksHelper::IndexedFolderName( 2));
1611 ASSERT_TRUE(folderC[0] != NULL);
1612 folderC[1] = BookmarksHelper::AddFolder(1, BookmarksHelper::IndexedFolderName( 2));
1613 ASSERT_TRUE(folderC[1] != NULL);
1614 for (int i = 0; i < 3; ++i) {
1615 std::wstring folder_name = BookmarksHelper::IndexedSubfolderName(i);
1616 const BookmarkNode* subfolder = BookmarksHelper::AddFolder(0, folderC[0], i, folder_name);
1617 ASSERT_TRUE(subfolder != NULL);
1618 for (int j = 0; j < 3; ++j) {
1619 std::wstring title = BookmarksHelper::IndexedURLTitle(j);
1620 GURL url = GURL(BookmarksHelper::IndexedURL(j));
1621 ASSERT_TRUE(BookmarksHelper::AddURL(0, subfolder, j, title, url) != NULL);
1622 }
1623 }
1624
1625 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1626 ASSERT_TRUE(AwaitQuiescence());
1627 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1628 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1629
1630 // Simultaneously rename folder A on both clients.
1631 BookmarksHelper::SetTitle(0, folderA[0], L"Folder A++");
1632 BookmarksHelper::SetTitle(1, folderA[1], L"Folder A--");
1633 ASSERT_TRUE(AwaitQuiescence());
1634 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1635 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1636
1637 // Simultaneously rename folder B on both clients.
1638 BookmarksHelper::SetTitle(0, folderB[0], L"Folder B++");
1639 BookmarksHelper::SetTitle(1, folderB[1], L"Folder B--");
1640 ASSERT_TRUE(AwaitQuiescence());
1641 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1642 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1643
1644 // Simultaneously rename folder C on both clients.
1645 BookmarksHelper::SetTitle(0, folderC[0], L"Folder C++");
1646 BookmarksHelper::SetTitle(1, folderC[1], L"Folder C--");
1647 ASSERT_TRUE(AwaitQuiescence());
1648 ASSERT_TRUE(BookmarksHelper::AllModelsMatch());
1649 ASSERT_FALSE(BookmarksHelper::ContainsDuplicateBookmarks(0));
1650 }
1651
1652 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1653 SingleClientEnabledEncryption) {
1654 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1655 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1656
1657 ASSERT_TRUE(BookmarksHelper::EnableEncryption(0));
1658 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1659 ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
1660 ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
1661 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1662 }
1663
1664 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1665 SingleClientEnabledEncryptionAndChanged) {
1666 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1667 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1668
1669 ASSERT_TRUE(BookmarksHelper::EnableEncryption(0));
1670 ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::IndexedURLTitle(0), GU RL(BookmarksHelper::IndexedURL(0))) != NULL);
1671 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1672 ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
1673 ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
1674 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1675 }
1676
1677 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1678 BothClientsEnabledEncryption) {
1679 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1680 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1681
1682 ASSERT_TRUE(BookmarksHelper::EnableEncryption(0));
1683 ASSERT_TRUE(BookmarksHelper::EnableEncryption(1));
1684 ASSERT_TRUE(AwaitQuiescence());
1685 ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
1686 ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
1687 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1688 }
1689
1690 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1691 SingleClientEnabledEncryptionBothChanged) {
1692 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1693 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1694
1695 ASSERT_TRUE(BookmarksHelper::EnableEncryption(0));
1696 ASSERT_TRUE(AwaitQuiescence());
1697 ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
1698 ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
1699 ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::IndexedURLTitle(0), GU RL(BookmarksHelper::IndexedURL(0))) != NULL);
1700 ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::IndexedURLTitle(1), GU RL(BookmarksHelper::IndexedURL(1))) != NULL);
1701 ASSERT_TRUE(AwaitQuiescence());
1702 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1703 ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
1704 ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
1705 }
1706
1707 IN_PROC_BROWSER_TEST_F(TwoClientBookmarksSyncTest,
1708 SingleClientEnabledEncryptionAndChangedMultipleTimes) {
1709 ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
1710 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1711
1712 ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::IndexedURLTitle(0), GU RL(BookmarksHelper::IndexedURL(0))) != NULL);
1713 ASSERT_TRUE(BookmarksHelper::EnableEncryption(0));
1714 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1715 ASSERT_TRUE(BookmarksHelper::IsEncrypted(0));
1716 ASSERT_TRUE(BookmarksHelper::IsEncrypted(1));
1717 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1718
1719 ASSERT_TRUE(BookmarksHelper::AddURL(0, BookmarksHelper::IndexedURLTitle(1), GU RL(BookmarksHelper::IndexedURL(1))) != NULL);
1720 ASSERT_TRUE(BookmarksHelper::AddFolder(0, BookmarksHelper::IndexedFolderName(0 )) != NULL);
1721 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
1722 ASSERT_TRUE(BookmarksHelper::AllModelsMatchVerifier());
1723 }
OLDNEW
« no previous file with comments | « chrome/test/live_sync/sync_datatype_helper.cc ('k') | chrome/test/live_sync/two_client_live_bookmarks_sync_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698