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

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

Powered by Google App Engine
This is Rietveld 408576698