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

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

Issue 159728: Add browser/sync to the repository. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2006-2009 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 #ifdef CHROME_PERSONALIZATION
6
7 #include <stdlib.h>
8
9 #include "base/string16.h"
10 #include "base/rand_util.h"
11 #include "chrome/browser/bookmarks/bookmark_model.h"
12 #include "chrome/browser/bookmarks/bookmark_utils.h"
13 #include "chrome/browser/browser.h"
14 #include "chrome/browser/profile.h"
15 #include "chrome/browser/sync/profile_sync_service.h"
16 #include "chrome/test/live_sync/bookmark_model_verifier.h"
17 #include "chrome/test/live_sync/profile_sync_service_test_harness.h"
18 #include "chrome/test/live_sync/live_bookmarks_sync_test.h"
19 #include "testing/gtest/include/gtest/gtest.h"
20
21 class TwoClientLiveBookmarksSyncTest : public LiveBookmarksSyncTest {
22 public:
23 TwoClientLiveBookmarksSyncTest() {
24 // Set the initial timeout value to 5 min.
25 InProcessBrowserTest::SetInitialTimeoutInMS(300000);
26 }
27 virtual ~TwoClientLiveBookmarksSyncTest() {}
28 bool SetupSync() {
29 profile2_.reset(MakeProfile(L"clienttwo"));
30 client1_.reset(new ProfileSyncServiceTestHarness(
31 browser()->profile(), username_, password_));
32 client2_.reset(new ProfileSyncServiceTestHarness(
33 profile2_.get(), username_, password_));
34 return client1_->SetupSync() && client2_->SetupSync();
35 }
36
37 ProfileSyncServiceTestHarness* client1() { return client1_.get(); }
38 ProfileSyncServiceTestHarness* client2() { return client2_.get(); }
39 Profile* profile1() { return browser()->profile(); }
40 Profile* profile2() { return profile2_.get(); }
41
42 void Cleanup() {
43 client2_.reset();
44 profile2_.reset();
45 }
46
47 private:
48 scoped_ptr<Profile> profile2_;
49 scoped_ptr<ProfileSyncServiceTestHarness> client1_;
50 scoped_ptr<ProfileSyncServiceTestHarness> client2_;
51
52 DISALLOW_COPY_AND_ASSIGN(TwoClientLiveBookmarksSyncTest);
53 };
54
55 // Test case Naming Convention:
56 // SC/MC - SingleClient / MultiClient.
57 // Suffix Number - Indicates test scribe testcase ID.
58 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest, Sanity) {
59 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
60 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
61 BookmarkModel* model_one = profile1()->GetBookmarkModel();
62 BookmarkModel* model_two = profile2()->GetBookmarkModel();
63 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
64 const BookmarkNode* bbn_two = model_two->GetBookmarkBarNode();
65 verifier->ExpectMatch(model_one);
66 verifier->ExpectMatch(model_two);
67
68 GURL google_url("http://www.google.com");
69 // Start adding some bookmarks to each model. The scope is to enforce that
70 // the BookmarkNode*'s are not used after they may be invalidated by sync
71 // operations that alter the models.
72 {
73 const BookmarkNode* google_one = verifier->AddURL(model_one, bbn_one, 0,
74 L"Google", google_url);
75
76 // To make this test deterministic, we wait here so there is no race to
77 // decide which bookmark actually gets position 0.
78 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
79 const BookmarkNode* yahoo_two = verifier->AddURL(model_two, bbn_two, 0,
80 L"Yahoo", GURL("http://www.yahoo.com"));
81 }
82 ASSERT_TRUE(client2()->AwaitMutualSyncCycleCompletion(client1()));
83 verifier->ExpectMatch(model_one);
84 verifier->ExpectMatch(model_two);
85
86 {
87 const BookmarkNode* new_folder_one =
88 verifier->AddGroup(model_one, bbn_one, 2, L"New Folder");
89 verifier->Move(model_one, GetByUniqueURL(model_one, google_url),
90 new_folder_one, 0);
91 verifier->SetTitle(model_one, bbn_one->GetChild(0), L"Yahoo!!");
92 const BookmarkNode* cnn_one = verifier->AddURL(model_one,
93 bbn_one, 1, L"CNN", GURL("http://www.cnn.com"));
94 }
95 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
96 verifier->ExpectMatch(model_one);
97 verifier->ExpectMatch(model_two);
98
99 {
100 const BookmarkNode* facebook_two = verifier->AddURL(model_two,
101 bbn_two, 0, L"Facebook", GURL("http://www.facebook.com"));
102 }
103
104 // AwaitMutualSyncCycleCompletion blocks the calling object before the
105 // argument, so because we have made changes from client2 here we need to swap
106 // the calling order.
107 ASSERT_TRUE(client2()->AwaitMutualSyncCycleCompletion(client1()));
108 verifier->ExpectMatch(model_one);
109 verifier->ExpectMatch(model_two);
110
111 verifier->SortChildren(model_two, bbn_two);
112
113 ASSERT_TRUE(client2()->AwaitMutualSyncCycleCompletion(client1()));
114 verifier->ExpectMatch(model_one);
115 verifier->ExpectMatch(model_two);
116
117 {
118 // Do something crazy and modify the same item from both clients!!
119 const BookmarkNode* google_one = GetByUniqueURL(model_one, google_url);
120 const BookmarkNode* google_two = GetByUniqueURL(model_two, google_url);
121 model_one->SetTitle(google_one, L"Google++");
122 model_two->SetTitle(google_two, L"Google--");
123 }
124 // The extra wait here is because both clients generated changes, and the
125 // first client reaches a happy state before the second client gets a chance
126 // to push, so we explicitly double check. This shouldn't be necessary once
127 // we have an easy way to verify the head version on each client.
128 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletionWithConflict(client2()));
129 BookmarkModelVerifier::ExpectModelsMatch(model_one, model_two);
130
131 Cleanup();
132 }
133
134 // TODO(timsteele): There are really two tests here, one case where conflict
135 // resolution causes the URL to be overwritten, and one where we see duplicate
136 // bookmarks created due to the Remove/Add semantic for "Edit URL" and the race
137 // between the local edit and server edit. The latter is bug 1956259 and is
138 // still under investigation, I don't have enough info to write two separate
139 // tests yet.
140 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
141 SimultaneousURLChanges) {
142 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
143 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
144 BookmarkModel* model_one = profile1()->GetBookmarkModel();
145 BookmarkModel* model_two = profile2()->GetBookmarkModel();
146 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
147 const BookmarkNode* bbn_two = model_two->GetBookmarkBarNode();
148
149 verifier->ExpectMatch(model_one);
150 verifier->ExpectMatch(model_two);
151 GURL initial_url(L"http://www.google.com");
152 GURL second_url(L"http://www.google.com/abc");
153 GURL third_url(L"http://www.google.com/def");
154 std::wstring title = L"Google";
155 {
156 const BookmarkNode* google = verifier->AddURL(model_one, bbn_one, 0,
157 title, initial_url);
158 }
159 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
160
161 {
162 const BookmarkNode* google_one = GetByUniqueURL(model_one, initial_url);
163 const BookmarkNode* google_two = GetByUniqueURL(model_two, initial_url);
164 bookmark_utils::ApplyEditsWithNoGroupChange(model_one, bbn_one, google_one,
165 title, second_url, NULL);
166 bookmark_utils::ApplyEditsWithNoGroupChange(model_two, bbn_two, google_two,
167 title, third_url, NULL);
168 }
169 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletionWithConflict(client2()));
170 BookmarkModelVerifier::ExpectModelsMatch(model_one, model_two);
171
172 {
173 const BookmarkNode* google_one = bbn_one->GetChild(0);
174 model_one->SetTitle(google_one, L"Google1");
175 }
176 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
177 BookmarkModelVerifier::ExpectModelsMatch(model_one, model_two);
178 Cleanup();
179 }
180
181 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
182 SC_CleanAccount_AddFirstFolder_370558) {
183
184 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
185 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
186 BookmarkModel* model_one = profile1()->GetBookmarkModel();
187 BookmarkModel* model_two = profile2()->GetBookmarkModel();
188 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
189
190 verifier->ExpectMatch(model_one);
191 verifier->ExpectMatch(model_two);
192
193 {
194 // Let's add first bookmark folder to client1
195 const BookmarkNode* new_folder_one =
196 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder");
197 }
198 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
199 verifier->ExpectMatch(model_one);
200 verifier->ExpectMatch(model_two);
201 Cleanup();
202 }
203
204 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
205 SC_CleanAccount_AddFirstBMWithoutFavicon_370559) {
206
207 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
208 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
209 BookmarkModel* model_one = profile1()->GetBookmarkModel();
210 BookmarkModel* model_two = profile2()->GetBookmarkModel();
211 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
212
213 verifier->ExpectMatch(model_one);
214 verifier->ExpectMatch(model_two);
215
216 // Let's add first bookmark(without favicon)
217 {
218 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, bbn_one, 0,
219 L"TestBookmark", GURL("http://www.nofaviconurl.com"));
220 }
221 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
222 verifier->ExpectMatch(model_one);
223 verifier->ExpectMatch(model_two);
224 Cleanup();
225 }
226
227 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
228 SC_CleanAccount_AddNonHTTPBMs_370560) {
229
230 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
231 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
232 BookmarkModel* model_one = profile1()->GetBookmarkModel();
233 BookmarkModel* model_two = profile2()->GetBookmarkModel();
234 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
235 verifier->ExpectMatch(model_one);
236 verifier->ExpectMatch(model_two);
237
238 // Let's add few non-http bookmarks(without favicon)
239 {
240 const BookmarkNode* ftp_bm = verifier->AddURL(model_one, bbn_one, 0,
241 L"FTPBookmark", GURL("ftp://ftp.testbookmark.com"));
242 const BookmarkNode* file_bm = verifier->AddURL(model_one, bbn_one, 0,
243 L"FileBookmark", GURL("file:///"));
244 }
245 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
246 verifier->ExpectMatch(model_one);
247 verifier->ExpectMatch(model_two);
248 Cleanup();
249 }
250
251 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
252 SC_CleanAccount_AddFirstBM_UnderFolder_370561) {
253
254 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
255 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
256 BookmarkModel* model_one = profile1()->GetBookmarkModel();
257 BookmarkModel* model_two = profile2()->GetBookmarkModel();
258 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
259
260 verifier->ExpectMatch(model_one);
261 verifier->ExpectMatch(model_two);
262
263 {
264 // Let's add first bookmark folder to client1
265 const BookmarkNode* new_folder_one =
266 verifier->AddGroup(model_one, bbn_one, 0, L"BM TestFolder");
267 // Add first bookmark to newly created folder
268 const BookmarkNode* test_bm1 = verifier->AddURL(
269 model_one, new_folder_one, 0,
270 L"BM Test", GURL("http://www.bmtest.com"));
271 }
272
273 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
274 verifier->ExpectMatch(model_one);
275 verifier->ExpectMatch(model_two);
276 Cleanup();
277 }
278
279 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
280 SC_SingleClient_RenameBMName_371817) {
281
282 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
283 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
284 BookmarkModel* model_one = profile1()->GetBookmarkModel();
285 BookmarkModel* model_two = profile2()->GetBookmarkModel();
286 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
287
288 verifier->ExpectMatch(model_one);
289 verifier->ExpectMatch(model_two);
290 // Add first bookmark
291 const BookmarkNode* test_bm1 = verifier->AddURL(
292 model_one, bbn_one, 0, L"Test BM", GURL("http://www.bmtest.com"));
293
294 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
295 verifier->ExpectMatch(model_one);
296 verifier->ExpectMatch(model_two);
297
298 {
299 // Rename recently added BM
300 verifier->SetTitle(model_one, test_bm1, L"New Test BM");
301 }
302
303 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
304 verifier->ExpectMatch(model_one);
305 verifier->ExpectMatch(model_two);
306 Cleanup();
307 }
308
309 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
310 SC_RenameBMFolder_371824) {
311
312 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
313 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
314 BookmarkModel* model_one = profile1()->GetBookmarkModel();
315 BookmarkModel* model_two = profile2()->GetBookmarkModel();
316 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
317 verifier->ExpectMatch(model_one);
318 verifier->ExpectMatch(model_two);
319
320 // Let's add first bookmark folder to client1
321 const BookmarkNode* new_folder_one = verifier->AddGroup(model_one, bbn_one, 0,
322 L"TestBMFolder");
323
324 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
325 verifier->ExpectMatch(model_one);
326 verifier->ExpectMatch(model_two);
327
328 // Rename recently added Bookmark folder
329 verifier->SetTitle(model_one, new_folder_one, L"New TestBMFolder");
330
331 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
332 verifier->ExpectMatch(model_one);
333 verifier->ExpectMatch(model_two);
334 Cleanup();
335 }
336
337 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
338 SC_DeleteBM_EmptyAccountAfterThisDelete_371832) {
339
340 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
341 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
342 BookmarkModel* model_one = profile1()->GetBookmarkModel();
343 BookmarkModel* model_two = profile2()->GetBookmarkModel();
344 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
345
346 verifier->ExpectMatch(model_one);
347 verifier->ExpectMatch(model_two);
348
349 // Let's add first bookmark(without favicon)
350 {
351 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, bbn_one, 0,
352 L"TestBookmark", GURL("http://www.nofaviconurl.com"));
353 }
354 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
355 verifier->ExpectMatch(model_one);
356 verifier->ExpectMatch(model_two);
357
358 {
359 // Delete this newly created bookmark
360 verifier->Remove(model_one, bbn_one, 0);
361 }
362 client1()->AwaitMutualSyncCycleCompletionWithConflict(client2());
363 verifier->ExpectMatch(model_one);
364 verifier->ExpectMatch(model_two);
365
366 Cleanup();
367 }
368
369 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
370 SC_DeleteBM_NonEmptyAccountAfterThisDelete_371833) {
371
372 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
373 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
374 BookmarkModel* model_one = profile1()->GetBookmarkModel();
375 BookmarkModel* model_two = profile2()->GetBookmarkModel();
376 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
377
378 verifier->ExpectMatch(model_one);
379 verifier->ExpectMatch(model_two);
380 // Let's add some bookmarks(without favicon)
381 for (int index = 0; index < 20; index++) {
382 string16 title(L"TestBookmark");
383 string16 url(L"http://www.nofaviconurl");
384 string16 index_str = IntToString16(index);
385 title.append(index_str);
386 url.append(index_str);
387 url.append(L".com");
388 const BookmarkNode* nofavicon_bm = verifier->AddURL(
389 model_one, bbn_one, index,
390 title, GURL(url));
391 }
392 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
393 verifier->ExpectMatch(model_one);
394 verifier->ExpectMatch(model_two);
395
396 {
397 // Delete this newly created bookmark
398 verifier->Remove(model_one, bbn_one, 0);
399 }
400 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
401 verifier->ExpectMatch(model_one);
402 verifier->ExpectMatch(model_two);
403
404 Cleanup();
405 }
406
407 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
408 SC_RepositioningBM_ab_To_ba_371931) {
409
410 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
411 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
412 BookmarkModel* model_one = profile1()->GetBookmarkModel();
413 BookmarkModel* model_two = profile2()->GetBookmarkModel();
414 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
415 verifier->ExpectMatch(model_one);
416 verifier->ExpectMatch(model_two);
417
418 const BookmarkNode* bm_a = verifier->AddURL(
419 model_one, bbn_one, 0, L"Bookmark A",
420 GURL("http://www.nofaviconurla.com"));
421 const BookmarkNode* bm_b = verifier->AddURL(
422 model_one, bbn_one, 1, L"Bookmark B",
423 GURL("http://www.nofaviconurlb.com"));
424
425 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
426 verifier->ExpectMatch(model_one);
427 verifier->ExpectMatch(model_two);
428
429 {
430 // Move bm_a to new position
431 verifier->Move(model_one, bm_a, bbn_one, 2);
432 }
433 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
434 verifier->ExpectMatch(model_one);
435 verifier->ExpectMatch(model_two);
436
437 Cleanup();
438 }
439
440 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
441 SC_Repositioning_NonEmptyBMFolder_ab_To_ba_372026) {
442
443 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
444 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
445 BookmarkModel* model_one = profile1()->GetBookmarkModel();
446 BookmarkModel* model_two = profile2()->GetBookmarkModel();
447 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
448
449 verifier->ExpectMatch(model_one);
450 verifier->ExpectMatch(model_two);
451
452 const BookmarkNode* bm_folder_a =
453 verifier->AddGroup(model_one, bbn_one, 0, L"TestBMFolderA");
454 const BookmarkNode* bm_folder_b =
455 verifier->AddGroup(model_one, bbn_one, 1, L"TestBMFolderB");
456 for (int index = 0; index < 10; index++) {
457 int random_int = base::RandInt(1, 100);
458 // To create randomness in order, 60% of time add bookmarks
459 if (random_int > 40) {
460 string16 title(L"Folder A - ChildTestBookmark");
461 string16 url(L"http://www.nofaviconurl");
462 string16 index_str = IntToString16(index);
463 title.append(index_str);
464 url.append(index_str);
465 url.append(L".com");
466 const BookmarkNode* nofavicon_bm =
467 verifier->AddURL(model_one, bm_folder_a, index, title, GURL(url));
468 } else {
469 // Remaining % of time - Add Bookmark folders
470 string16 title(L"Folder A - ChildTestBMFolder");
471 string16 index_str = IntToString16(index);
472 title.append(index_str);
473 const BookmarkNode* bm_folder =
474 verifier->AddGroup(model_one, bm_folder_a, index, title);
475 }
476 }
477
478 for (int index = 0; index < 10; index++) {
479 int random_int = base::RandInt(1, 100);
480 // To create randomness in order, 60% of time add bookmarks
481 if (random_int > 40) {
482 string16 title(L"Folder B - ChildTestBookmark");
483 string16 url(L"http://www.nofaviconurl");
484 string16 index_str = IntToString16(index);
485 title.append(index_str);
486 url.append(index_str);
487 url.append(L".com");
488 const BookmarkNode* nofavicon_bm =
489 verifier->AddURL(model_one, bm_folder_b, index, title, GURL(url));
490 } else {
491 // Remaining % of time - Add Bookmark folders
492 string16 title(L"Folder B - ChildTestBMFolder");
493 string16 index_str = IntToString16(index);
494 title.append(index_str);
495 const BookmarkNode* bm_folder =
496 verifier->AddGroup(model_one, bm_folder_b, index, title);
497 }
498 }
499
500 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
501 verifier->ExpectMatch(model_one);
502 verifier->ExpectMatch(model_two);
503 {
504 // Move bm_a to new position
505 verifier->Move(model_one, bm_folder_a, bbn_one, 2);
506 }
507 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
508 verifier->ExpectMatch(model_one);
509 verifier->ExpectMatch(model_two);
510 Cleanup();
511 }
512
513 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
514 SC_CleanAccount_AddSeveralBMs_UnderBMBarAndOtherBM_370562) {
515
516 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
517 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
518 BookmarkModel* model_one = profile1()->GetBookmarkModel();
519 BookmarkModel* model_two = profile2()->GetBookmarkModel();
520 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
521 const BookmarkNode* other_bm_one = model_one->other_node();
522
523 verifier->ExpectMatch(model_one);
524 verifier->ExpectMatch(model_two);
525 // Let's add some bookmarks(without favicon)
526 for (int index = 0; index < 20; index++) {
527 string16 title(L"TestBookmark");
528 string16 url(L"http://www.nofaviconurl");
529 string16 index_str = IntToString16(index);
530 title.append(index_str);
531 url.append(index_str);
532 url.append(L".com");
533 const BookmarkNode* nofavicon_bm =
534 verifier->AddURL(model_one, bbn_one, index, title, GURL(url));
535 }
536 for (int index = 0; index < 10; index++) {
537 string16 title(L"TestBookmark");
538 string16 url(L"http://www.nofaviconurl");
539 string16 index_str = IntToString16(index);
540 title.append(index_str);
541 url.append(index_str);
542 url.append(L".com");
543 const BookmarkNode* nofavicon_bm =
544 verifier->AddURL(model_one, other_bm_one, index, title, GURL(url));
545 }
546 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
547 verifier->ExpectMatch(model_one);
548 verifier->ExpectMatch(model_two);
549 Cleanup();
550 }
551
552 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
553 SC_CleanAccount_AddSeveralBMs_And_SeveralFolders_370563) {
554
555 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
556 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
557 BookmarkModel* model_one = profile1()->GetBookmarkModel();
558 BookmarkModel* model_two = profile2()->GetBookmarkModel();
559 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
560 const BookmarkNode* other_bm_one = model_one->other_node();
561
562 verifier->ExpectMatch(model_one);
563 verifier->ExpectMatch(model_two);
564 // Let's add some bookmarks(without favicon)
565 for (int index = 0; index < 15; index++) {
566 int random_int = base::RandInt(1, 100);
567 // To create randomness in order, 40% of time add bookmarks
568 if (random_int > 60) {
569 string16 title(L"BB - TestBookmark");
570 string16 url(L"http://www.nofaviconurl");
571 string16 index_str = IntToString16(index);
572 title.append(index_str);
573 url.append(index_str);
574 url.append(L".com");
575 const BookmarkNode* nofavicon_bm =
576 verifier->AddURL(model_one, bbn_one, index, title, GURL(url));
577 } else {
578 // Remaining % of time - Add Bookmark folders
579 string16 title(L"BB - TestBMFolder");
580 string16 index_str = IntToString16(index);
581 title.append(index_str);
582 const BookmarkNode* bm_folder = verifier->AddGroup(model_one, bbn_one,
583 index, title);
584 int random_int2 = base::RandInt(1, 100);
585 // 60% of time we will add bookmarks to added folder
586 if (random_int2 > 40) {
587 for (int index = 0; index < 20; index++) {
588 string16 url(L"http://www.nofaviconurl");
589 string16 index_str = IntToString16(index);
590 string16 child_title(title);
591 child_title.append(L" - ChildTestBM");
592 child_title.append(index_str);
593 url.append(index_str);
594 url.append(L".com");
595 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one,
596 bm_folder, index, child_title, GURL(url));
597 }
598 }
599 }
600 }
601 LOG(INFO) << "Adding several bookmarks under other bookmarks";
602 for (int index = 0; index < 10; index++) {
603 string16 title(L"Other - TestBookmark");
604 string16 url(L"http://www.nofaviconurl-other");
605 string16 index_str = IntToString16(index);
606 title.append(index_str);
607 url.append(index_str);
608 url.append(L".com");
609 const BookmarkNode* nofavicon_bm =
610 verifier->AddURL(model_one, other_bm_one, index, title, GURL(url));
611 }
612 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
613 verifier->ExpectMatch(model_one);
614 verifier->ExpectMatch(model_two);
615 Cleanup();
616 }
617
618 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
619 SC_RenameBMURL_371822) {
620
621 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
622 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
623 BookmarkModel* model_one = profile1()->GetBookmarkModel();
624 BookmarkModel* model_two = profile2()->GetBookmarkModel();
625 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
626
627 verifier->ExpectMatch(model_one);
628 verifier->ExpectMatch(model_two);
629 // Let's add first bookmark(without favicon)
630 const BookmarkNode* nofavicon_bm =
631 verifier->AddURL(model_one, bbn_one, 0, L"Google",
632 GURL("http://www.google.com"));
633
634 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
635 verifier->ExpectMatch(model_one);
636 verifier->ExpectMatch(model_two);
637
638 // Let's rename/change URL
639 verifier->SetURL(model_one, nofavicon_bm, GURL("http://www.cnn.com"));
640 // Wait for changes to sync and then verify
641 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
642 verifier->ExpectMatch(model_one);
643 verifier->ExpectMatch(model_two);
644 Cleanup();
645 }
646
647 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
648 SC_RenameEmptyBMFolder_371825) {
649
650 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
651 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
652 BookmarkModel* model_one = profile1()->GetBookmarkModel();
653 BookmarkModel* model_two = profile2()->GetBookmarkModel();
654 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
655
656 verifier->ExpectMatch(model_one);
657 verifier->ExpectMatch(model_two);
658
659 // Let's add first bookmark folder to client1
660 const BookmarkNode* bm_folder_one =
661 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder");
662
663 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
664 verifier->ExpectMatch(model_one);
665 verifier->ExpectMatch(model_two);
666
667 // Let's rename newly added bookmark folder
668 verifier->SetTitle(model_one, bm_folder_one, L"New TestFolder");
669 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
670 verifier->ExpectMatch(model_one);
671 verifier->ExpectMatch(model_two);
672
673 Cleanup();
674 }
675
676 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
677 SC_DeleteFirstBM_Under_BMFolder_NonEmptyFolderAfterDelete_371835) {
678
679 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
680 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
681 BookmarkModel* model_one = profile1()->GetBookmarkModel();
682 BookmarkModel* model_two = profile2()->GetBookmarkModel();
683 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
684
685 verifier->ExpectMatch(model_one);
686 verifier->ExpectMatch(model_two);
687 // Let's add first bookmark folder to client1
688 const BookmarkNode* bm_folder_one =
689 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder");
690 // Let's add some bookmarks(without favicon) to this folder
691 for (int index = 0; index < 10; index++) {
692 string16 title(L"TestBookmark");
693 string16 url(L"http://www.nofaviconurl");
694 string16 index_str = IntToString16(index);
695 title.append(index_str);
696 url.append(index_str);
697 url.append(L".com");
698 const BookmarkNode* nofavicon_bm =
699 verifier->AddURL(model_one, bm_folder_one, index, title, GURL(url));
700 }
701 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
702 verifier->ExpectMatch(model_one);
703 verifier->ExpectMatch(model_two);
704
705 {
706 // Delete first bookmark under this folder
707 verifier->Remove(model_one, bm_folder_one, 0);
708 }
709 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
710 verifier->ExpectMatch(model_one);
711 verifier->ExpectMatch(model_two);
712
713 Cleanup();
714 }
715
716
717 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
718 SC_DeleteLastBM_Under_BMFolder_NonEmptyFolderAfterDelete_371836) {
719
720 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
721 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
722 BookmarkModel* model_one = profile1()->GetBookmarkModel();
723 BookmarkModel* model_two = profile2()->GetBookmarkModel();
724 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
725
726 verifier->ExpectMatch(model_one);
727 verifier->ExpectMatch(model_two);
728 // Let's add first bookmark folder to client1
729 const BookmarkNode* bm_folder_one = verifier->AddGroup(model_one, bbn_one,
730 0, L"TestFolder");
731 // Let's add some bookmarks(without favicon) to this folder
732 for (int index = 0; index < 10; index++) {
733 string16 title(L"TestBookmark");
734 string16 url(L"http://www.nofaviconurl");
735 string16 index_str = IntToString16(index);
736 title.append(index_str);
737 url.append(index_str);
738 url.append(L".com");
739 const BookmarkNode* nofavicon_bm = verifier->AddURL(
740 model_one, bm_folder_one,
741 index, title, GURL(url));
742 }
743 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
744 verifier->ExpectMatch(model_one);
745 verifier->ExpectMatch(model_two);
746
747 {
748 // Delete last bookmark under this folder
749 verifier->Remove(model_one, bm_folder_one,
750 (bm_folder_one->GetChildCount() - 1));
751 }
752 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
753 verifier->ExpectMatch(model_one);
754 verifier->ExpectMatch(model_two);
755
756 Cleanup();
757 }
758
759
760 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
761 SC_DelMiddleBM_Under_BMFold_NonEmptyFoldAfterDel_371856) {
762
763 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
764 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
765 BookmarkModel* model_one = profile1()->GetBookmarkModel();
766 BookmarkModel* model_two = profile2()->GetBookmarkModel();
767 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
768
769 verifier->ExpectMatch(model_one);
770 verifier->ExpectMatch(model_two);
771 // Let's add first bookmark folder to client1
772 const BookmarkNode* bm_folder_one =
773 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder");
774 // Let's add some bookmarks(without favicon) to this folder
775 for (int index = 0; index < 10; index++) {
776 string16 title(L"TestBookmark");
777 string16 url(L"http://www.nofaviconurl");
778 string16 index_str = IntToString16(index);
779 title.append(index_str);
780 url.append(index_str);
781 url.append(L".com");
782 const BookmarkNode* nofavicon_bm =
783 verifier->AddURL(model_one, bm_folder_one, index, title, GURL(url));
784 }
785 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
786 verifier->ExpectMatch(model_one);
787 verifier->ExpectMatch(model_two);
788
789 {
790 // Delete middle bookmark under this folder
791 verifier->Remove(model_one, bm_folder_one, 4);
792 }
793 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
794 verifier->ExpectMatch(model_one);
795 verifier->ExpectMatch(model_two);
796
797 Cleanup();
798 }
799
800
801 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
802 SC_DeleteBMs_Under_BMFolder_EmptyFolderAfterDelete_371857) {
803
804 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
805 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
806 BookmarkModel* model_one = profile1()->GetBookmarkModel();
807 BookmarkModel* model_two = profile2()->GetBookmarkModel();
808 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
809
810 verifier->ExpectMatch(model_one);
811 verifier->ExpectMatch(model_two);
812 // Let's add first bookmark folder to client1
813 const BookmarkNode* bm_folder_one =
814 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder");
815 // Let's add some bookmarks(without favicon) to this folder
816 for (int index = 0; index < 10; index++) {
817 string16 title(L"TestBookmark");
818 string16 url(L"http://www.nofaviconurl");
819 string16 index_str = IntToString16(index);
820 title.append(index_str);
821 url.append(index_str);
822 url.append(L".com");
823 const BookmarkNode* nofavicon_bm =
824 verifier->AddURL(model_one, bm_folder_one, index, title, GURL(url));
825 }
826 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
827 verifier->ExpectMatch(model_one);
828 verifier->ExpectMatch(model_two);
829 int child_count = bm_folder_one->GetChildCount();
830 // Let's delete all the bookmarks added under this new folder
831 for (int index = 0; index < child_count; index++) {
832 verifier->Remove(model_one, bm_folder_one, 0);
833 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
834 verifier->ExpectMatch(model_one);
835 verifier->ExpectMatch(model_two);
836 }
837 Cleanup();
838 }
839
840 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
841 SC_DeleteEmptyBMFolder_EmptyAccountAfterDelete_371858) {
842
843 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
844 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
845 BookmarkModel* model_one = profile1()->GetBookmarkModel();
846 BookmarkModel* model_two = profile2()->GetBookmarkModel();
847 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
848
849 verifier->ExpectMatch(model_one);
850 verifier->ExpectMatch(model_two);
851
852 // Let's add first bookmark folder to client1
853 const BookmarkNode* bm_folder_one =
854 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder");
855
856 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
857 verifier->ExpectMatch(model_one);
858 verifier->ExpectMatch(model_two);
859
860 // Let's delete this empty bookmark folder
861 verifier->Remove(model_one, bbn_one, 0);
862
863 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
864 verifier->ExpectMatch(model_one);
865 verifier->ExpectMatch(model_two);
866
867 Cleanup();
868 }
869
870
871 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
872 SC_DeleteEmptyBMFolder_NonEmptyAccountAfterDelete_371869) {
873
874 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
875 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
876 BookmarkModel* model_one = profile1()->GetBookmarkModel();
877 BookmarkModel* model_two = profile2()->GetBookmarkModel();
878 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
879 const BookmarkNode* other_bm_one = model_one->other_node();
880
881 verifier->ExpectMatch(model_one);
882 verifier->ExpectMatch(model_two);
883 // Let's add first bookmark folder to client1
884 const BookmarkNode* bm_folder_one =
885 verifier->AddGroup(model_one, bbn_one, 0, L"TestFolder");
886 // Let's add some bookmarks(without favicon)
887 for (int index = 1; index < 15; index++) {
888 int random_int = base::RandInt(1, 100);
889 // To create randomness in order, 40% of time add bookmarks
890 if (random_int > 60) {
891 string16 title(L"BB - TestBookmark");
892 string16 url(L"http://www.nofaviconurl");
893 string16 index_str = IntToString16(index);
894 title.append(index_str);
895 url.append(index_str);
896 url.append(L".com");
897 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, bbn_one,
898 index, title, GURL(url));
899 } else {
900 // Remaining % of time - Add Bookmark folders
901 string16 title(L"BB - TestBMFolder");
902 string16 index_str = IntToString16(index);
903 title.append(index_str);
904 const BookmarkNode* bm_folder = verifier->AddGroup(model_one, bbn_one,
905 index, title);
906 }
907 }
908 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
909 verifier->ExpectMatch(model_one);
910 verifier->ExpectMatch(model_two);
911
912 // Let's delete the first empty bookmark folder
913 verifier->Remove(model_one, bbn_one, 0);
914
915 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
916 verifier->ExpectMatch(model_one);
917 verifier->ExpectMatch(model_two);
918
919 Cleanup();
920 }
921
922 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
923 SC_DelBMFoldWithBMsAndBMFolds_NonEmptyACAfterDelete_371880) {
924
925 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
926 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
927 BookmarkModel* model_one = profile1()->GetBookmarkModel();
928 BookmarkModel* model_two = profile2()->GetBookmarkModel();
929 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
930 const BookmarkNode* other_bm_one = model_one->other_node();
931
932 verifier->ExpectMatch(model_one);
933 verifier->ExpectMatch(model_two);
934 // Let's add bookmark and bookmark folder to client1
935 const BookmarkNode* yahoo = verifier->AddURL(model_one, bbn_one, 0,
936 L"Yahoo", GURL("http://www.yahoo.com"));
937 const BookmarkNode* bm_folder_one =
938 verifier->AddGroup(model_one, bbn_one, 1, L"TestFolder");
939 // Let's add some bookmarks(without favicon) and folders to
940 // bookmark bar
941 for (int index = 2; index < 10; index++) {
942 int random_int = base::RandInt(1, 100);
943 // To create randomness in order, 40% of time add bookmarks
944 if (random_int > 60) {
945 string16 title(L"BB - TestBookmark");
946 string16 url(L"http://www.nofaviconurl");
947 string16 index_str = IntToString16(index);
948 title.append(index_str);
949 url.append(index_str);
950 url.append(L".com");
951 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, bbn_one,
952 index, title, GURL(url));
953 } else {
954 // Remaining % of time - Add Bookmark folders
955 string16 title(L"BB - TestBMFolder");
956 string16 index_str = IntToString16(index);
957 title.append(index_str);
958 const BookmarkNode* bm_folder = verifier->AddGroup(model_one, bbn_one,
959 index, title);
960 }
961 }
962
963 // Let's add some bookmarks(without favicon) and folders to
964 // bm_folder_one ('TestFolder')
965 for (int index = 0; index < 10; index++) {
966 int random_int = base::RandInt(1, 100);
967 // To create randomness in order, 40% of time add bookmarks
968 if (random_int > 60) {
969 string16 title(L"Level2 - TestBookmark");
970 string16 url(L"http://www.nofaviconurl");
971 string16 index_str = IntToString16(index);
972 title.append(index_str);
973 url.append(index_str);
974 url.append(L".com");
975 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one,
976 bm_folder_one, index, title, GURL(url));
977 } else {
978 // Remaining % of time - Add Bookmark folders
979 string16 title(L"Level2 - TestBMFolder");
980 string16 index_str = IntToString16(index);
981 title.append(index_str);
982 const BookmarkNode* l2_bm_folder = verifier->AddGroup(model_one,
983 bm_folder_one, index, title);
984 int random_int2 = base::RandInt(1, 100);
985 // 70% of time - Let's add more levels of bookmarks and folders to
986 // l2_bm_folder
987 if (random_int2 > 30) {
988 for (int index2 = 0; index2 < 10; index2++) {
989 int random_int3 = base::RandInt(1, 100);
990 // To create randomness in order, 40% of time add bookmarks
991 if (random_int3 > 60) {
992 string16 title(L"Level3 - TestBookmark");
993 string16 url(L"http://www.nofaviconurl");
994 string16 index_str = IntToString16(index2);
995 title.append(index_str);
996 url.append(index_str);
997 url.append(L".com");
998 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one,
999 l2_bm_folder, index2, title, GURL(url));
1000 } else {
1001 // Remaining % of time - Add Bookmark folders
1002 string16 title(L"Level3 - TestBMFolder");
1003 string16 index_str = IntToString16(index);
1004 title.append(index_str);
1005 const BookmarkNode* l3_bm_folder =
1006 verifier->AddGroup(model_one, l2_bm_folder, index2, title);
1007 }
1008 } // end inner for loop
1009 }
1010 }
1011 }
1012 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
1013 verifier->ExpectMatch(model_one);
1014 verifier->ExpectMatch(model_two);
1015
1016 // Let's delete the bookmark folder (bm_folder_one)
1017 verifier->Remove(model_one, bm_folder_one, 0);
1018
1019 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
1020 verifier->ExpectMatch(model_one);
1021 verifier->ExpectMatch(model_two);
1022
1023 Cleanup();
1024 }
1025
1026 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
1027 SC_Moving_BMsFromBookmarkBar_To_BMFolder_371954) {
1028
1029 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
1030 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
1031 BookmarkModel* model_one = profile1()->GetBookmarkModel();
1032 BookmarkModel* model_two = profile2()->GetBookmarkModel();
1033 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
1034 const BookmarkNode* other_bm_one = model_one->other_node();
1035
1036 verifier->ExpectMatch(model_one);
1037 verifier->ExpectMatch(model_two);
1038 // Let's add bookmark and bookmark folder to client1
1039 const BookmarkNode* yahoo = verifier->AddURL(model_one, bbn_one, 0,
1040 L"Yahoo", GURL("http://www.yahoo.com"));
1041 const BookmarkNode* bm_folder_one =
1042 verifier->AddGroup(model_one, bbn_one, 1, L"TestFolder");
1043 // Let's add some bookmarks(without favicon) to bookmark bar
1044 for (int index = 2; index < 10; index++) {
1045 int random_int = base::RandInt(1, 100);
1046 string16 title(L"BB - TestBookmark");
1047 string16 url(L"http://www.nofaviconurl");
1048 string16 index_str = IntToString16(index);
1049 title.append(index_str);
1050 url.append(index_str);
1051 url.append(L".com");
1052 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one, bbn_one,
1053 index, title, GURL(url));
1054 }
1055 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
1056 verifier->ExpectMatch(model_one);
1057 verifier->ExpectMatch(model_two);
1058
1059 // Let's move bookmarks from bookmark bar to BMfolder (bm_folder_one)
1060 int child_count_to_move = bbn_one->GetChildCount() - 2;
1061 for (int index = 0; index < child_count_to_move; index++) {
1062 verifier->Move(model_one, bbn_one->GetChild(2),
1063 bm_folder_one, index);
1064 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
1065 verifier->ExpectMatch(model_one);
1066 verifier->ExpectMatch(model_two);
1067 }
1068 Cleanup();
1069 }
1070
1071 IN_PROC_BROWSER_TEST_F(TwoClientLiveBookmarksSyncTest,
1072 SC_Moving_BMsFromBMFolder_To_BookmarkBar_371957) {
1073
1074 ASSERT_TRUE(SetupSync()) << "Failed to SetupSync";
1075 scoped_ptr<BookmarkModelVerifier> verifier(BookmarkModelVerifier::Create());
1076 BookmarkModel* model_one = profile1()->GetBookmarkModel();
1077 BookmarkModel* model_two = profile2()->GetBookmarkModel();
1078 const BookmarkNode* bbn_one = model_one->GetBookmarkBarNode();
1079 const BookmarkNode* other_bm_one = model_one->other_node();
1080
1081 verifier->ExpectMatch(model_one);
1082 verifier->ExpectMatch(model_two);
1083 // Let's add bookmark and bookmark folder to client1
1084 const BookmarkNode* yahoo = verifier->AddURL(model_one, bbn_one, 0,
1085 L"Yahoo", GURL("http://www.yahoo.com"));
1086 const BookmarkNode* bm_folder_one =
1087 verifier->AddGroup(model_one, bbn_one, 1, L"TestFolder");
1088 // Let's add some bookmarks(without favicon) to bm_folder_one
1089 for (int index = 0; index < 10; index++) {
1090 int random_int = base::RandInt(1, 100);
1091 string16 title(L"BB - TestBookmark");
1092 string16 url(L"http://www.nofaviconurl");
1093 string16 index_str = IntToString16(index);
1094 title.append(index_str);
1095 url.append(index_str);
1096 url.append(L".com");
1097 const BookmarkNode* nofavicon_bm = verifier->AddURL(model_one,
1098 bm_folder_one, index, title, GURL(url));
1099 }
1100 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
1101 verifier->ExpectMatch(model_one);
1102 verifier->ExpectMatch(model_two);
1103
1104 // Let's move bookmarks from BMfolder(bm_folder_one) to bookmark bar
1105 int child_count_to_move = bm_folder_one->GetChildCount();
1106 for (int index = 0; index < child_count_to_move; index++) {
1107 verifier->Move(model_one, bm_folder_one->GetChild(0),
1108 bbn_one, bbn_one->GetChildCount());
1109 ASSERT_TRUE(client1()->AwaitMutualSyncCycleCompletion(client2()));
1110 verifier->ExpectMatch(model_one);
1111 verifier->ExpectMatch(model_two);
1112 }
1113 Cleanup();
1114 }
1115
1116 #endif // CHROME_PERSONALIZATION
OLDNEW
« no previous file with comments | « chrome/test/live_sync/single_client_live_bookmarks_sync_unittest.cc ('k') | chrome\browser\sync\auth_error_state.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698