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

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