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

Side by Side Diff: components/browser_sync/profile_sync_service_typed_url_unittest.cc

Issue 2345843003: [Sync] Merge //components/browser_sync into one directory. (Closed)
Patch Set: Address comment + rebase. Created 4 years, 3 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/bind_helpers.h" 14 #include "base/bind_helpers.h"
15 #include "base/callback.h" 15 #include "base/callback.h"
16 #include "base/location.h" 16 #include "base/location.h"
17 #include "base/macros.h" 17 #include "base/macros.h"
18 #include "base/memory/ptr_util.h" 18 #include "base/memory/ptr_util.h"
19 #include "base/memory/ref_counted.h" 19 #include "base/memory/ref_counted.h"
20 #include "base/run_loop.h" 20 #include "base/run_loop.h"
21 #include "base/strings/string16.h" 21 #include "base/strings/string16.h"
22 #include "base/strings/utf_string_conversions.h" 22 #include "base/strings/utf_string_conversions.h"
23 #include "base/threading/thread.h" 23 #include "base/threading/thread.h"
24 #include "base/threading/thread_task_runner_handle.h" 24 #include "base/threading/thread_task_runner_handle.h"
25 #include "base/time/time.h" 25 #include "base/time/time.h"
26 #include "components/browser_sync/browser/abstract_profile_sync_service_test.h" 26 #include "components/browser_sync/abstract_profile_sync_service_test.h"
27 #include "components/browser_sync/browser/test_profile_sync_service.h" 27 #include "components/browser_sync/test_profile_sync_service.h"
28 #include "components/history/core/browser/history_backend.h" 28 #include "components/history/core/browser/history_backend.h"
29 #include "components/history/core/browser/history_backend_client.h" 29 #include "components/history/core/browser/history_backend_client.h"
30 #include "components/history/core/browser/history_backend_notifier.h" 30 #include "components/history/core/browser/history_backend_notifier.h"
31 #include "components/history/core/browser/history_db_task.h" 31 #include "components/history/core/browser/history_db_task.h"
32 #include "components/history/core/browser/history_service.h" 32 #include "components/history/core/browser/history_service.h"
33 #include "components/history/core/browser/typed_url_data_type_controller.h" 33 #include "components/history/core/browser/typed_url_data_type_controller.h"
34 #include "components/signin/core/browser/signin_manager.h" 34 #include "components/signin/core/browser/signin_manager.h"
35 #include "components/sync/api/data_type_error_handler_mock.h" 35 #include "components/sync/api/data_type_error_handler_mock.h"
36 #include "components/sync/core/read_node.h" 36 #include "components/sync/core/read_node.h"
37 #include "components/sync/core/read_transaction.h" 37 #include "components/sync/core/read_transaction.h"
(...skipping 26 matching lines...) Expand all
64 } 64 }
65 65
66 class HistoryBackendMock : public HistoryBackend { 66 class HistoryBackendMock : public HistoryBackend {
67 public: 67 public:
68 HistoryBackendMock() 68 HistoryBackendMock()
69 : HistoryBackend(nullptr, nullptr, base::ThreadTaskRunnerHandle::Get()) {} 69 : HistoryBackend(nullptr, nullptr, base::ThreadTaskRunnerHandle::Get()) {}
70 bool IsExpiredVisitTime(const base::Time& time) override { 70 bool IsExpiredVisitTime(const base::Time& time) override {
71 return time.ToInternalValue() == EXPIRED_VISIT; 71 return time.ToInternalValue() == EXPIRED_VISIT;
72 } 72 }
73 MOCK_METHOD1(GetAllTypedURLs, bool(history::URLRows* entries)); 73 MOCK_METHOD1(GetAllTypedURLs, bool(history::URLRows* entries));
74 MOCK_METHOD3(GetMostRecentVisitsForURL, bool(history::URLID id, 74 MOCK_METHOD3(GetMostRecentVisitsForURL,
75 int max_visits, 75 bool(history::URLID id,
76 history::VisitVector* visits)); 76 int max_visits,
77 history::VisitVector* visits));
77 MOCK_METHOD2(UpdateURL, bool(history::URLID id, const history::URLRow& url)); 78 MOCK_METHOD2(UpdateURL, bool(history::URLID id, const history::URLRow& url));
78 MOCK_METHOD3(AddVisits, bool(const GURL& url, 79 MOCK_METHOD3(AddVisits,
79 const std::vector<history::VisitInfo>& visits, 80 bool(const GURL& url,
80 history::VisitSource visit_source)); 81 const std::vector<history::VisitInfo>& visits,
82 history::VisitSource visit_source));
81 MOCK_METHOD2(GetURL, bool(const GURL& url_id, history::URLRow* url_row)); 83 MOCK_METHOD2(GetURL, bool(const GURL& url_id, history::URLRow* url_row));
82 MOCK_METHOD2(SetPageTitle, void(const GURL& url, 84 MOCK_METHOD2(SetPageTitle,
83 const base::string16& title)); 85 void(const GURL& url, const base::string16& title));
84 MOCK_METHOD1(DeleteURL, void(const GURL& url)); 86 MOCK_METHOD1(DeleteURL, void(const GURL& url));
85 87
86 private: 88 private:
87 friend class ProfileSyncServiceTypedUrlTest; 89 friend class ProfileSyncServiceTypedUrlTest;
88 90
89 virtual ~HistoryBackendMock() {} 91 virtual ~HistoryBackendMock() {}
90 }; 92 };
91 93
92 class HistoryServiceMock : public history::HistoryService { 94 class HistoryServiceMock : public history::HistoryService {
93 public: 95 public:
94 HistoryServiceMock() : history::HistoryService(), backend_(nullptr) {} 96 HistoryServiceMock() : history::HistoryService(), backend_(nullptr) {}
95 97
96 base::CancelableTaskTracker::TaskId ScheduleDBTask( 98 base::CancelableTaskTracker::TaskId ScheduleDBTask(
97 std::unique_ptr<history::HistoryDBTask> task, 99 std::unique_ptr<history::HistoryDBTask> task,
98 base::CancelableTaskTracker* tracker) override { 100 base::CancelableTaskTracker* tracker) override {
99 // Explicitly copy out the raw pointer -- compilers might decide to 101 // Explicitly copy out the raw pointer -- compilers might decide to
100 // evaluate task.release() before the arguments for the first Bind(). 102 // evaluate task.release() before the arguments for the first Bind().
101 history::HistoryDBTask* task_raw = task.get(); 103 history::HistoryDBTask* task_raw = task.get();
102 task_runner_->PostTaskAndReply( 104 task_runner_->PostTaskAndReply(
103 FROM_HERE, 105 FROM_HERE, base::Bind(&HistoryServiceMock::RunTaskOnDBThread,
104 base::Bind(&HistoryServiceMock::RunTaskOnDBThread, 106 base::Unretained(this), task_raw),
105 base::Unretained(this), task_raw),
106 base::Bind(&base::DeletePointer<history::HistoryDBTask>, 107 base::Bind(&base::DeletePointer<history::HistoryDBTask>,
107 task.release())); 108 task.release()));
108 return base::CancelableTaskTracker::kBadTaskId; // unused 109 return base::CancelableTaskTracker::kBadTaskId; // unused
109 } 110 }
110 111
111 ~HistoryServiceMock() override {} 112 ~HistoryServiceMock() override {}
112 113
113 void set_task_runner( 114 void set_task_runner(
114 scoped_refptr<base::SingleThreadTaskRunner> task_runner) { 115 scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
115 DCHECK(task_runner.get()); 116 DCHECK(task_runner.get());
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 FROM_HERE, task, 307 FROM_HERE, task,
307 base::Bind(&base::MessageLoop::QuitNow, 308 base::Bind(&base::MessageLoop::QuitNow,
308 base::Unretained(base::MessageLoop::current()))); 309 base::Unretained(base::MessageLoop::current())));
309 base::RunLoop().Run(); 310 base::RunLoop().Run();
310 } 311 }
311 312
312 void SendNotificationURLVisited(ui::PageTransition transition, 313 void SendNotificationURLVisited(ui::PageTransition transition,
313 const history::URLRow& row) { 314 const history::URLRow& row) {
314 base::Time visit_time; 315 base::Time visit_time;
315 history::RedirectList redirects; 316 history::RedirectList redirects;
316 SendNotification( 317 SendNotification(base::Bind(&HistoryBackendNotifier::NotifyURLVisited,
317 base::Bind(&HistoryBackendNotifier::NotifyURLVisited, 318 base::Unretained(history_backend_.get()),
318 base::Unretained(history_backend_.get()), 319 transition, row, redirects, visit_time));
319 transition,
320 row,
321 redirects,
322 visit_time));
323 } 320 }
324 321
325 void SendNotificationURLsModified(const history::URLRows& rows) { 322 void SendNotificationURLsModified(const history::URLRows& rows) {
326 SendNotification(base::Bind(&HistoryBackendNotifier::NotifyURLsModified, 323 SendNotification(base::Bind(&HistoryBackendNotifier::NotifyURLsModified,
327 base::Unretained(history_backend_.get()), 324 base::Unretained(history_backend_.get()),
328 rows)); 325 rows));
329 } 326 }
330 327
331 void SendNotificationURLsDeleted(bool all_history, 328 void SendNotificationURLsDeleted(bool all_history,
332 bool expired, 329 bool expired,
(...skipping 21 matching lines...) Expand all
354 int typed_count, 351 int typed_count,
355 int64_t last_visit, 352 int64_t last_visit,
356 bool hidden, 353 bool hidden,
357 history::VisitVector* visits) { 354 history::VisitVector* visits) {
358 // Give each URL a unique ID, to mimic the behavior of the real database. 355 // Give each URL a unique ID, to mimic the behavior of the real database.
359 static int unique_url_id = 0; 356 static int unique_url_id = 0;
360 GURL gurl(url); 357 GURL gurl(url);
361 history::URLRow history_url(gurl, ++unique_url_id); 358 history::URLRow history_url(gurl, ++unique_url_id);
362 history_url.set_title(base::UTF8ToUTF16(title)); 359 history_url.set_title(base::UTF8ToUTF16(title));
363 history_url.set_typed_count(typed_count); 360 history_url.set_typed_count(typed_count);
364 history_url.set_last_visit( 361 history_url.set_last_visit(base::Time::FromInternalValue(last_visit));
365 base::Time::FromInternalValue(last_visit));
366 history_url.set_hidden(hidden); 362 history_url.set_hidden(hidden);
367 visits->push_back(history::VisitRow( 363 visits->push_back(history::VisitRow(history_url.id(),
368 history_url.id(), history_url.last_visit(), 0, 364 history_url.last_visit(), 0,
369 ui::PAGE_TRANSITION_TYPED, 0)); 365 ui::PAGE_TRANSITION_TYPED, 0));
370 history_url.set_visit_count(visits->size()); 366 history_url.set_visit_count(visits->size());
371 return history_url; 367 return history_url;
372 } 368 }
373 369
374 base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType( 370 base::WeakPtr<syncer::SyncableService> GetSyncableServiceForType(
375 syncer::ModelType type) { 371 syncer::ModelType type) {
376 DCHECK_EQ(syncer::TYPED_URLS, type); 372 DCHECK_EQ(syncer::TYPED_URLS, type);
377 return syncable_service_->AsWeakPtr(); 373 return syncable_service_->AsWeakPtr();
378 } 374 }
379 375
380 HistoryBackendMock& history_backend() { return *history_backend_.get(); } 376 HistoryBackendMock& history_backend() { return *history_backend_.get(); }
381 377
382 private: 378 private:
383 scoped_refptr<HistoryBackendMock> history_backend_; 379 scoped_refptr<HistoryBackendMock> history_backend_;
384 std::unique_ptr<HistoryServiceMock> history_service_; 380 std::unique_ptr<HistoryServiceMock> history_service_;
385 syncer::DataTypeErrorHandlerMock error_handler_; 381 syncer::DataTypeErrorHandlerMock error_handler_;
386 std::unique_ptr<TestTypedUrlSyncableService> syncable_service_; 382 std::unique_ptr<TestTypedUrlSyncableService> syncable_service_;
387 std::unique_ptr<sync_driver::FakeSyncClient> sync_client_; 383 std::unique_ptr<sync_driver::FakeSyncClient> sync_client_;
388 384
389 DISALLOW_COPY_AND_ASSIGN(ProfileSyncServiceTypedUrlTest); 385 DISALLOW_COPY_AND_ASSIGN(ProfileSyncServiceTypedUrlTest);
390 }; 386 };
391 387
392 void AddTypedUrlEntries(ProfileSyncServiceTypedUrlTest* test, 388 void AddTypedUrlEntries(ProfileSyncServiceTypedUrlTest* test,
393 const history::URLRows& entries) { 389 const history::URLRows& entries) {
394 test->CreateRoot(syncer::TYPED_URLS); 390 test->CreateRoot(syncer::TYPED_URLS);
395 for (size_t i = 0; i < entries.size(); ++i) { 391 for (size_t i = 0; i < entries.size(); ++i) {
396 history::VisitVector visits; 392 history::VisitVector visits;
397 visits.push_back(history::VisitRow( 393 visits.push_back(history::VisitRow(entries[i].id(), entries[i].last_visit(),
398 entries[i].id(), entries[i].last_visit(), 0, 394 0, ui::PageTransitionFromInt(0), 0));
399 ui::PageTransitionFromInt(0), 0));
400 test->AddTypedUrlSyncNode(entries[i], visits); 395 test->AddTypedUrlSyncNode(entries[i], visits);
401 } 396 }
402 } 397 }
403 398
404 } // namespace 399 } // namespace
405 400
406 TEST_F(ProfileSyncServiceTypedUrlTest, EmptyNativeEmptySync) { 401 TEST_F(ProfileSyncServiceTypedUrlTest, EmptyNativeEmptySync) {
407 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true)); 402 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true));
408 SetIdleChangeProcessorExpectations(); 403 SetIdleChangeProcessorExpectations();
409 CreateRootHelper create_root(this, syncer::TYPED_URLS); 404 CreateRootHelper create_root(this, syncer::TYPED_URLS);
410 TypedUrlSyncableService* syncable_service = 405 TypedUrlSyncableService* syncable_service =
411 StartSyncService(create_root.callback()); 406 StartSyncService(create_root.callback());
412 history::URLRows sync_entries; 407 history::URLRows sync_entries;
413 GetTypedUrlsFromSyncDB(&sync_entries); 408 GetTypedUrlsFromSyncDB(&sync_entries);
414 EXPECT_EQ(0U, sync_entries.size()); 409 EXPECT_EQ(0U, sync_entries.size());
415 ASSERT_EQ(0, syncable_service->GetErrorPercentage()); 410 ASSERT_EQ(0, syncable_service->GetErrorPercentage());
416 } 411 }
417 412
418 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeEmptySync) { 413 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeEmptySync) {
419 history::URLRows entries; 414 history::URLRows entries;
420 history::VisitVector visits; 415 history::VisitVector visits;
421 entries.push_back(MakeTypedUrlEntry("http://foo.com", "bar", 416 entries.push_back(
422 2, 15, false, &visits)); 417 MakeTypedUrlEntry("http://foo.com", "bar", 2, 15, false, &visits));
423 418
424 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 419 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
425 .WillOnce(DoAll(SetArgumentPointee<0>(entries), Return(true))); 420 .WillOnce(DoAll(SetArgumentPointee<0>(entries), Return(true)));
426 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 421 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
427 .WillRepeatedly(DoAll(SetArgumentPointee<2>(visits), Return(true))); 422 .WillRepeatedly(DoAll(SetArgumentPointee<2>(visits), Return(true)));
428 SetIdleChangeProcessorExpectations(); 423 SetIdleChangeProcessorExpectations();
429 CreateRootHelper create_root(this, syncer::TYPED_URLS); 424 CreateRootHelper create_root(this, syncer::TYPED_URLS);
430 TypedUrlSyncableService* syncable_service = 425 TypedUrlSyncableService* syncable_service =
431 StartSyncService(create_root.callback()); 426 StartSyncService(create_root.callback());
432 history::URLRows sync_entries; 427 history::URLRows sync_entries;
433 GetTypedUrlsFromSyncDB(&sync_entries); 428 GetTypedUrlsFromSyncDB(&sync_entries);
434 ASSERT_EQ(1U, sync_entries.size()); 429 ASSERT_EQ(1U, sync_entries.size());
435 EXPECT_TRUE(URLsEqual(entries[0], sync_entries[0])); 430 EXPECT_TRUE(URLsEqual(entries[0], sync_entries[0]));
436 ASSERT_EQ(0, syncable_service->GetErrorPercentage()); 431 ASSERT_EQ(0, syncable_service->GetErrorPercentage());
437 } 432 }
438 433
439 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeErrorReadingVisits) { 434 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeErrorReadingVisits) {
440 history::URLRows entries; 435 history::URLRows entries;
441 history::VisitVector visits; 436 history::VisitVector visits;
442 history::URLRow native_entry1(MakeTypedUrlEntry("http://foo.com", "bar", 437 history::URLRow native_entry1(
443 2, 15, false, &visits)); 438 MakeTypedUrlEntry("http://foo.com", "bar", 2, 15, false, &visits));
444 history::URLRow native_entry2(MakeTypedUrlEntry("http://foo2.com", "bar", 439 history::URLRow native_entry2(
445 3, 15, false, &visits)); 440 MakeTypedUrlEntry("http://foo2.com", "bar", 3, 15, false, &visits));
446 entries.push_back(native_entry1); 441 entries.push_back(native_entry1);
447 entries.push_back(native_entry2); 442 entries.push_back(native_entry2);
448 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 443 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
449 .WillOnce(DoAll(SetArgumentPointee<0>(entries), Return(true))); 444 .WillOnce(DoAll(SetArgumentPointee<0>(entries), Return(true)));
450 // Return an error from GetMostRecentVisitsForURL() for the second URL. 445 // Return an error from GetMostRecentVisitsForURL() for the second URL.
451 EXPECT_CALL((history_backend()), 446 EXPECT_CALL((history_backend()),
452 GetMostRecentVisitsForURL(native_entry1.id(), _, _)) 447 GetMostRecentVisitsForURL(native_entry1.id(), _, _))
453 .WillRepeatedly(Return(true)); 448 .WillRepeatedly(Return(true));
454 EXPECT_CALL((history_backend()), 449 EXPECT_CALL((history_backend()),
455 GetMostRecentVisitsForURL(native_entry2.id(), _, _)) 450 GetMostRecentVisitsForURL(native_entry2.id(), _, _))
456 .WillRepeatedly(Return(false)); 451 .WillRepeatedly(Return(false));
457 SetIdleChangeProcessorExpectations(); 452 SetIdleChangeProcessorExpectations();
458 CreateRootHelper create_root(this, syncer::TYPED_URLS); 453 CreateRootHelper create_root(this, syncer::TYPED_URLS);
459 StartSyncService(create_root.callback()); 454 StartSyncService(create_root.callback());
460 history::URLRows sync_entries; 455 history::URLRows sync_entries;
461 GetTypedUrlsFromSyncDB(&sync_entries); 456 GetTypedUrlsFromSyncDB(&sync_entries);
462 ASSERT_EQ(1U, sync_entries.size()); 457 ASSERT_EQ(1U, sync_entries.size());
463 EXPECT_TRUE(URLsEqual(native_entry1, sync_entries[0])); 458 EXPECT_TRUE(URLsEqual(native_entry1, sync_entries[0]));
464 } 459 }
465 460
466 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeWithBlankEmptySync) { 461 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeWithBlankEmptySync) {
467 std::vector<history::URLRow> entries; 462 std::vector<history::URLRow> entries;
468 history::VisitVector visits; 463 history::VisitVector visits;
469 // Add an empty URL. 464 // Add an empty URL.
470 entries.push_back(MakeTypedUrlEntry("", "bar", 465 entries.push_back(MakeTypedUrlEntry("", "bar", 2, 15, false, &visits));
471 2, 15, false, &visits)); 466 entries.push_back(
472 entries.push_back(MakeTypedUrlEntry("http://foo.com", "bar", 467 MakeTypedUrlEntry("http://foo.com", "bar", 2, 15, false, &visits));
473 2, 15, false, &visits));
474 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 468 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
475 .WillOnce(DoAll(SetArgumentPointee<0>(entries), Return(true))); 469 .WillOnce(DoAll(SetArgumentPointee<0>(entries), Return(true)));
476 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 470 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
477 .WillRepeatedly(DoAll(SetArgumentPointee<2>(visits), Return(true))); 471 .WillRepeatedly(DoAll(SetArgumentPointee<2>(visits), Return(true)));
478 SetIdleChangeProcessorExpectations(); 472 SetIdleChangeProcessorExpectations();
479 CreateRootHelper create_root(this, syncer::TYPED_URLS); 473 CreateRootHelper create_root(this, syncer::TYPED_URLS);
480 StartSyncService(create_root.callback()); 474 StartSyncService(create_root.callback());
481 std::vector<history::URLRow> sync_entries; 475 std::vector<history::URLRow> sync_entries;
482 GetTypedUrlsFromSyncDB(&sync_entries); 476 GetTypedUrlsFromSyncDB(&sync_entries);
483 // The empty URL should be ignored. 477 // The empty URL should be ignored.
484 ASSERT_EQ(1U, sync_entries.size()); 478 ASSERT_EQ(1U, sync_entries.size());
485 EXPECT_TRUE(URLsEqual(entries[1], sync_entries[0])); 479 EXPECT_TRUE(URLsEqual(entries[1], sync_entries[0]));
486 } 480 }
487 481
488 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeHasSyncNoMerge) { 482 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeHasSyncNoMerge) {
489 history::VisitVector native_visits; 483 history::VisitVector native_visits;
490 history::VisitVector sync_visits; 484 history::VisitVector sync_visits;
491 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry", 485 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry",
492 2, 15, false, &native_visits)); 486 2, 15, false, &native_visits));
493 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 487 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 3,
494 3, 16, false, &sync_visits)); 488 16, false, &sync_visits));
495 489
496 history::URLRows native_entries; 490 history::URLRows native_entries;
497 native_entries.push_back(native_entry); 491 native_entries.push_back(native_entry);
498 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 492 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
499 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true))); 493 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true)));
500 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 494 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
501 .WillRepeatedly( 495 .WillRepeatedly(
502 DoAll(SetArgumentPointee<2>(native_visits), Return(true))); 496 DoAll(SetArgumentPointee<2>(native_visits), Return(true)));
503 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED)) 497 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED))
504 .WillRepeatedly(Return(true)); 498 .WillRepeatedly(Return(true));
(...skipping 14 matching lines...) Expand all
519 513
520 EXPECT_TRUE(new_sync_entries.size() == expected.size()); 514 EXPECT_TRUE(new_sync_entries.size() == expected.size());
521 for (history::URLRows::iterator entry = new_sync_entries.begin(); 515 for (history::URLRows::iterator entry = new_sync_entries.begin();
522 entry != new_sync_entries.end(); ++entry) { 516 entry != new_sync_entries.end(); ++entry) {
523 EXPECT_TRUE(URLsEqual(expected[entry->url().spec()], *entry)); 517 EXPECT_TRUE(URLsEqual(expected[entry->url().spec()], *entry));
524 } 518 }
525 } 519 }
526 520
527 TEST_F(ProfileSyncServiceTypedUrlTest, EmptyNativeExpiredSync) { 521 TEST_F(ProfileSyncServiceTypedUrlTest, EmptyNativeExpiredSync) {
528 history::VisitVector sync_visits; 522 history::VisitVector sync_visits;
529 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 523 history::URLRow sync_entry(MakeTypedUrlEntry(
530 3, EXPIRED_VISIT, false, 524 "http://sync.com", "entry", 3, EXPIRED_VISIT, false, &sync_visits));
531 &sync_visits));
532 history::URLRows sync_entries; 525 history::URLRows sync_entries;
533 sync_entries.push_back(sync_entry); 526 sync_entries.push_back(sync_entry);
534 527
535 // Since all our URLs are expired, no backend calls to add new URLs will be 528 // Since all our URLs are expired, no backend calls to add new URLs will be
536 // made. 529 // made.
537 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true)); 530 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true));
538 SetIdleChangeProcessorExpectations(); 531 SetIdleChangeProcessorExpectations();
539 532
540 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); 533 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries));
541 } 534 }
542 535
543 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeHasSyncMerge) { 536 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeHasSyncMerge) {
544 history::VisitVector native_visits; 537 history::VisitVector native_visits;
545 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry", 538 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry",
546 2, 15, false, &native_visits)); 539 2, 15, false, &native_visits));
547 history::VisitVector sync_visits; 540 history::VisitVector sync_visits;
548 history::URLRow sync_entry(MakeTypedUrlEntry("http://native.com", "name", 541 history::URLRow sync_entry(MakeTypedUrlEntry("http://native.com", "name", 1,
549 1, 17, false, &sync_visits)); 542 17, false, &sync_visits));
550 history::VisitVector merged_visits; 543 history::VisitVector merged_visits;
551 merged_visits.push_back(history::VisitRow( 544 merged_visits.push_back(
552 sync_entry.id(), base::Time::FromInternalValue(15), 0, 545 history::VisitRow(sync_entry.id(), base::Time::FromInternalValue(15), 0,
553 ui::PageTransitionFromInt(0), 0)); 546 ui::PageTransitionFromInt(0), 0));
554 547
555 history::URLRow merged_entry(MakeTypedUrlEntry("http://native.com", "name", 548 history::URLRow merged_entry(MakeTypedUrlEntry("http://native.com", "name", 2,
556 2, 17, false, &merged_visits)); 549 17, false, &merged_visits));
557 550
558 history::URLRows native_entries; 551 history::URLRows native_entries;
559 native_entries.push_back(native_entry); 552 native_entries.push_back(native_entry);
560 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 553 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
561 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true))); 554 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true)));
562 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 555 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
563 .WillRepeatedly( 556 .WillRepeatedly(
564 DoAll(SetArgumentPointee<2>(native_visits), Return(true))); 557 DoAll(SetArgumentPointee<2>(native_visits), Return(true)));
565 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED)) 558 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED))
566 .WillRepeatedly(Return(true)); 559 .WillRepeatedly(Return(true));
(...skipping 10 matching lines...) Expand all
577 GetTypedUrlsFromSyncDB(&new_sync_entries); 570 GetTypedUrlsFromSyncDB(&new_sync_entries);
578 ASSERT_EQ(1U, new_sync_entries.size()); 571 ASSERT_EQ(1U, new_sync_entries.size());
579 EXPECT_TRUE(URLsEqual(merged_entry, new_sync_entries[0])); 572 EXPECT_TRUE(URLsEqual(merged_entry, new_sync_entries[0]));
580 } 573 }
581 574
582 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeWithErrorHasSyncMerge) { 575 TEST_F(ProfileSyncServiceTypedUrlTest, HasNativeWithErrorHasSyncMerge) {
583 history::VisitVector native_visits; 576 history::VisitVector native_visits;
584 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "native", 577 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "native",
585 2, 15, false, &native_visits)); 578 2, 15, false, &native_visits));
586 history::VisitVector sync_visits; 579 history::VisitVector sync_visits;
587 history::URLRow sync_entry(MakeTypedUrlEntry("http://native.com", "sync", 580 history::URLRow sync_entry(MakeTypedUrlEntry("http://native.com", "sync", 1,
588 1, 17, false, &sync_visits)); 581 17, false, &sync_visits));
589 582
590 history::URLRows native_entries; 583 history::URLRows native_entries;
591 native_entries.push_back(native_entry); 584 native_entries.push_back(native_entry);
592 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 585 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
593 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true))); 586 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true)));
594 // Return an error getting the visits for the native URL. 587 // Return an error getting the visits for the native URL.
595 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 588 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
596 .WillRepeatedly(Return(false)); 589 .WillRepeatedly(Return(false));
597 EXPECT_CALL((history_backend()), GetURL(_, _)) 590 EXPECT_CALL((history_backend()), GetURL(_, _))
598 .WillRepeatedly(DoAll(SetArgumentPointee<1>(native_entry), Return(true))); 591 .WillRepeatedly(DoAll(SetArgumentPointee<1>(native_entry), Return(true)));
599 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED)) 592 EXPECT_CALL((history_backend()), AddVisits(_, _, history::SOURCE_SYNCED))
600 .WillRepeatedly(Return(true)); 593 .WillRepeatedly(Return(true));
601 594
602 history::URLRows sync_entries; 595 history::URLRows sync_entries;
603 sync_entries.push_back(sync_entry); 596 sync_entries.push_back(sync_entry);
604 597
605 EXPECT_CALL((history_backend()), UpdateURL(_, _)) 598 EXPECT_CALL((history_backend()), UpdateURL(_, _))
606 .WillRepeatedly(Return(true)); 599 .WillRepeatedly(Return(true));
607 EXPECT_CALL((history_backend()), SetPageTitle(_, _)).WillRepeatedly(Return()); 600 EXPECT_CALL((history_backend()), SetPageTitle(_, _)).WillRepeatedly(Return());
608 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); 601 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries));
609 602
610 history::URLRows new_sync_entries; 603 history::URLRows new_sync_entries;
611 GetTypedUrlsFromSyncDB(&new_sync_entries); 604 GetTypedUrlsFromSyncDB(&new_sync_entries);
612 ASSERT_EQ(1U, new_sync_entries.size()); 605 ASSERT_EQ(1U, new_sync_entries.size());
613 EXPECT_TRUE(URLsEqual(sync_entry, new_sync_entries[0])); 606 EXPECT_TRUE(URLsEqual(sync_entry, new_sync_entries[0]));
614 } 607 }
615 608
616 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAdd) { 609 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAdd) {
617 history::VisitVector added_visits; 610 history::VisitVector added_visits;
618 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 611 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 2,
619 2, 15, false, &added_visits)); 612 15, false, &added_visits));
620 613
621 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true)); 614 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true));
622 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 615 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
623 .WillOnce(DoAll(SetArgumentPointee<2>(added_visits), Return(true))); 616 .WillOnce(DoAll(SetArgumentPointee<2>(added_visits), Return(true)));
624 617
625 SetIdleChangeProcessorExpectations(); 618 SetIdleChangeProcessorExpectations();
626 CreateRootHelper create_root(this, syncer::TYPED_URLS); 619 CreateRootHelper create_root(this, syncer::TYPED_URLS);
627 StartSyncService(create_root.callback()); 620 StartSyncService(create_root.callback());
628 621
629 history::URLRows changed_urls; 622 history::URLRows changed_urls;
630 changed_urls.push_back(added_entry); 623 changed_urls.push_back(added_entry);
631 SendNotificationURLsModified(changed_urls); 624 SendNotificationURLsModified(changed_urls);
632 625
633 history::URLRows new_sync_entries; 626 history::URLRows new_sync_entries;
634 GetTypedUrlsFromSyncDB(&new_sync_entries); 627 GetTypedUrlsFromSyncDB(&new_sync_entries);
635 ASSERT_EQ(1U, new_sync_entries.size()); 628 ASSERT_EQ(1U, new_sync_entries.size());
636 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0])); 629 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0]));
637 } 630 }
638 631
639 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAddWithBlank) { 632 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAddWithBlank) {
640 history::VisitVector added_visits; 633 history::VisitVector added_visits;
641 history::URLRow empty_entry(MakeTypedUrlEntry("", "entry", 634 history::URLRow empty_entry(
642 2, 15, false, &added_visits)); 635 MakeTypedUrlEntry("", "entry", 2, 15, false, &added_visits));
643 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 636 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 2,
644 2, 15, false, &added_visits)); 637 15, false, &added_visits));
645 638
646 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true)); 639 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true));
647 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 640 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
648 .WillRepeatedly(DoAll(SetArgumentPointee<2>(added_visits), Return(true))); 641 .WillRepeatedly(DoAll(SetArgumentPointee<2>(added_visits), Return(true)));
649 642
650 SetIdleChangeProcessorExpectations(); 643 SetIdleChangeProcessorExpectations();
651 CreateRootHelper create_root(this, syncer::TYPED_URLS); 644 CreateRootHelper create_root(this, syncer::TYPED_URLS);
652 StartSyncService(create_root.callback()); 645 StartSyncService(create_root.callback());
653 646
654 history::URLRows changed_urls; 647 history::URLRows changed_urls;
655 changed_urls.push_back(empty_entry); 648 changed_urls.push_back(empty_entry);
656 changed_urls.push_back(added_entry); 649 changed_urls.push_back(added_entry);
657 SendNotificationURLsModified(changed_urls); 650 SendNotificationURLsModified(changed_urls);
658 651
659 std::vector<history::URLRow> new_sync_entries; 652 std::vector<history::URLRow> new_sync_entries;
660 GetTypedUrlsFromSyncDB(&new_sync_entries); 653 GetTypedUrlsFromSyncDB(&new_sync_entries);
661 ASSERT_EQ(1U, new_sync_entries.size()); 654 ASSERT_EQ(1U, new_sync_entries.size());
662 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0])); 655 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0]));
663 } 656 }
664 657
665 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeUpdate) { 658 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeUpdate) {
666 history::VisitVector original_visits; 659 history::VisitVector original_visits;
667 history::URLRow original_entry(MakeTypedUrlEntry("http://mine.com", "entry", 660 history::URLRow original_entry(MakeTypedUrlEntry(
668 2, 15, false, 661 "http://mine.com", "entry", 2, 15, false, &original_visits));
669 &original_visits));
670 history::URLRows original_entries; 662 history::URLRows original_entries;
671 original_entries.push_back(original_entry); 663 original_entries.push_back(original_entry);
672 664
673 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 665 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
674 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); 666 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true)));
675 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 667 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
676 .WillOnce(DoAll(SetArgumentPointee<2>(original_visits), Return(true))); 668 .WillOnce(DoAll(SetArgumentPointee<2>(original_visits), Return(true)));
677 CreateRootHelper create_root(this, syncer::TYPED_URLS); 669 CreateRootHelper create_root(this, syncer::TYPED_URLS);
678 StartSyncService(create_root.callback()); 670 StartSyncService(create_root.callback());
679 671
680 history::VisitVector updated_visits; 672 history::VisitVector updated_visits;
681 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 673 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 7,
682 7, 17, false, 674 17, false, &updated_visits));
683 &updated_visits));
684 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 675 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
685 .WillOnce(DoAll(SetArgumentPointee<2>(updated_visits), Return(true))); 676 .WillOnce(DoAll(SetArgumentPointee<2>(updated_visits), Return(true)));
686 677
687 history::URLRows changed_urls; 678 history::URLRows changed_urls;
688 changed_urls.push_back(updated_entry); 679 changed_urls.push_back(updated_entry);
689 SendNotificationURLsModified(changed_urls); 680 SendNotificationURLsModified(changed_urls);
690 681
691 history::URLRows new_sync_entries; 682 history::URLRows new_sync_entries;
692 GetTypedUrlsFromSyncDB(&new_sync_entries); 683 GetTypedUrlsFromSyncDB(&new_sync_entries);
693 ASSERT_EQ(1U, new_sync_entries.size()); 684 ASSERT_EQ(1U, new_sync_entries.size());
694 EXPECT_TRUE(URLsEqual(updated_entry, new_sync_entries[0])); 685 EXPECT_TRUE(URLsEqual(updated_entry, new_sync_entries[0]));
695 } 686 }
696 687
697 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAddFromVisit) { 688 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeAddFromVisit) {
698 history::VisitVector added_visits; 689 history::VisitVector added_visits;
699 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 690 history::URLRow added_entry(MakeTypedUrlEntry("http://added.com", "entry", 2,
700 2, 15, false, &added_visits)); 691 15, false, &added_visits));
701 692
702 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true)); 693 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)).WillOnce(Return(true));
703 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 694 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
704 .WillOnce(DoAll(SetArgumentPointee<2>(added_visits), Return(true))); 695 .WillOnce(DoAll(SetArgumentPointee<2>(added_visits), Return(true)));
705 696
706 SetIdleChangeProcessorExpectations(); 697 SetIdleChangeProcessorExpectations();
707 CreateRootHelper create_root(this, syncer::TYPED_URLS); 698 CreateRootHelper create_root(this, syncer::TYPED_URLS);
708 StartSyncService(create_root.callback()); 699 StartSyncService(create_root.callback());
709 700
710 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, added_entry); 701 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, added_entry);
711 702
712 history::URLRows new_sync_entries; 703 history::URLRows new_sync_entries;
713 GetTypedUrlsFromSyncDB(&new_sync_entries); 704 GetTypedUrlsFromSyncDB(&new_sync_entries);
714 ASSERT_EQ(1U, new_sync_entries.size()); 705 ASSERT_EQ(1U, new_sync_entries.size());
715 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0])); 706 EXPECT_TRUE(URLsEqual(added_entry, new_sync_entries[0]));
716 } 707 }
717 708
718 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeUpdateFromVisit) { 709 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeUpdateFromVisit) {
719 history::VisitVector original_visits; 710 history::VisitVector original_visits;
720 history::URLRow original_entry(MakeTypedUrlEntry("http://mine.com", "entry", 711 history::URLRow original_entry(MakeTypedUrlEntry(
721 2, 15, false, 712 "http://mine.com", "entry", 2, 15, false, &original_visits));
722 &original_visits));
723 history::URLRows original_entries; 713 history::URLRows original_entries;
724 original_entries.push_back(original_entry); 714 original_entries.push_back(original_entry);
725 715
726 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 716 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
727 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); 717 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true)));
728 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 718 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
729 .WillOnce(DoAll(SetArgumentPointee<2>(original_visits), Return(true))); 719 .WillOnce(DoAll(SetArgumentPointee<2>(original_visits), Return(true)));
730 CreateRootHelper create_root(this, syncer::TYPED_URLS); 720 CreateRootHelper create_root(this, syncer::TYPED_URLS);
731 StartSyncService(create_root.callback()); 721 StartSyncService(create_root.callback());
732 722
733 history::VisitVector updated_visits; 723 history::VisitVector updated_visits;
734 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 724 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 7,
735 7, 17, false, 725 17, false, &updated_visits));
736 &updated_visits));
737 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 726 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
738 .WillOnce(DoAll(SetArgumentPointee<2>(updated_visits), Return(true))); 727 .WillOnce(DoAll(SetArgumentPointee<2>(updated_visits), Return(true)));
739 728
740 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, updated_entry); 729 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, updated_entry);
741 730
742 history::URLRows new_sync_entries; 731 history::URLRows new_sync_entries;
743 GetTypedUrlsFromSyncDB(&new_sync_entries); 732 GetTypedUrlsFromSyncDB(&new_sync_entries);
744 ASSERT_EQ(1U, new_sync_entries.size()); 733 ASSERT_EQ(1U, new_sync_entries.size());
745 EXPECT_TRUE(URLsEqual(updated_entry, new_sync_entries[0])); 734 EXPECT_TRUE(URLsEqual(updated_entry, new_sync_entries[0]));
746 } 735 }
747 736
748 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserIgnoreChangeUpdateFromVisit) { 737 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserIgnoreChangeUpdateFromVisit) {
749 history::VisitVector original_visits; 738 history::VisitVector original_visits;
750 history::URLRow original_entry(MakeTypedUrlEntry("http://mine.com", "entry", 739 history::URLRow original_entry(MakeTypedUrlEntry(
751 2, 15, false, 740 "http://mine.com", "entry", 2, 15, false, &original_visits));
752 &original_visits));
753 history::URLRows original_entries; 741 history::URLRows original_entries;
754 original_entries.push_back(original_entry); 742 original_entries.push_back(original_entry);
755 743
756 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 744 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
757 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); 745 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true)));
758 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 746 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
759 .WillRepeatedly( 747 .WillRepeatedly(
760 DoAll(SetArgumentPointee<2>(original_visits), Return(true))); 748 DoAll(SetArgumentPointee<2>(original_visits), Return(true)));
761 CreateRootHelper create_root(this, syncer::TYPED_URLS); 749 CreateRootHelper create_root(this, syncer::TYPED_URLS);
762 StartSyncService(create_root.callback()); 750 StartSyncService(create_root.callback());
763 history::URLRows new_sync_entries; 751 history::URLRows new_sync_entries;
764 GetTypedUrlsFromSyncDB(&new_sync_entries); 752 GetTypedUrlsFromSyncDB(&new_sync_entries);
765 ASSERT_EQ(1U, new_sync_entries.size()); 753 ASSERT_EQ(1U, new_sync_entries.size());
766 EXPECT_TRUE(URLsEqual(original_entry, new_sync_entries[0])); 754 EXPECT_TRUE(URLsEqual(original_entry, new_sync_entries[0]));
767 755
768 history::VisitVector updated_visits; 756 history::VisitVector updated_visits;
769 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 757 history::URLRow updated_entry(MakeTypedUrlEntry("http://mine.com", "entry", 7,
770 7, 15, false, 758 15, false, &updated_visits));
771 &updated_visits));
772 759
773 // Should ignore this change because it's not TYPED. 760 // Should ignore this change because it's not TYPED.
774 SendNotificationURLVisited(ui::PAGE_TRANSITION_RELOAD, updated_entry); 761 SendNotificationURLVisited(ui::PAGE_TRANSITION_RELOAD, updated_entry);
775 GetTypedUrlsFromSyncDB(&new_sync_entries); 762 GetTypedUrlsFromSyncDB(&new_sync_entries);
776 763
777 // Should be no changes to the sync DB from this notification. 764 // Should be no changes to the sync DB from this notification.
778 ASSERT_EQ(1U, new_sync_entries.size()); 765 ASSERT_EQ(1U, new_sync_entries.size());
779 EXPECT_TRUE(URLsEqual(original_entry, new_sync_entries[0])); 766 EXPECT_TRUE(URLsEqual(original_entry, new_sync_entries[0]));
780 767
781 // Now, try updating it with a large number of visits not divisible by 10 768 // Now, try updating it with a large number of visits not divisible by 10
782 // (should ignore this visit). 769 // (should ignore this visit).
783 history::URLRow twelve_visits(MakeTypedUrlEntry("http://mine.com", "entry", 770 history::URLRow twelve_visits(MakeTypedUrlEntry(
784 12, 15, false, 771 "http://mine.com", "entry", 12, 15, false, &updated_visits));
785 &updated_visits));
786 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, twelve_visits); 772 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, twelve_visits);
787 GetTypedUrlsFromSyncDB(&new_sync_entries); 773 GetTypedUrlsFromSyncDB(&new_sync_entries);
788 774
789 // Should be no changes to the sync DB from this notification. 775 // Should be no changes to the sync DB from this notification.
790 ASSERT_EQ(1U, new_sync_entries.size()); 776 ASSERT_EQ(1U, new_sync_entries.size());
791 EXPECT_TRUE(URLsEqual(original_entry, new_sync_entries[0])); 777 EXPECT_TRUE(URLsEqual(original_entry, new_sync_entries[0]));
792 778
793 // Now, try updating it with a large number of visits that is divisible by 10 779 // Now, try updating it with a large number of visits that is divisible by 10
794 // (should *not* be ignored). 780 // (should *not* be ignored).
795 history::URLRow twenty_visits(MakeTypedUrlEntry("http://mine.com", "entry", 781 history::URLRow twenty_visits(MakeTypedUrlEntry(
796 20, 15, false, 782 "http://mine.com", "entry", 20, 15, false, &updated_visits));
797 &updated_visits));
798 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, twenty_visits); 783 SendNotificationURLVisited(ui::PAGE_TRANSITION_TYPED, twenty_visits);
799 GetTypedUrlsFromSyncDB(&new_sync_entries); 784 GetTypedUrlsFromSyncDB(&new_sync_entries);
800 785
801 ASSERT_EQ(1U, new_sync_entries.size()); 786 ASSERT_EQ(1U, new_sync_entries.size());
802 EXPECT_TRUE(URLsEqual(twenty_visits, new_sync_entries[0])); 787 EXPECT_TRUE(URLsEqual(twenty_visits, new_sync_entries[0]));
803 } 788 }
804 789
805 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeRemove) { 790 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeRemove) {
806 history::VisitVector original_visits1; 791 history::VisitVector original_visits1;
807 history::URLRow original_entry1(MakeTypedUrlEntry("http://mine.com", "entry", 792 history::URLRow original_entry1(MakeTypedUrlEntry(
808 2, 15, false, 793 "http://mine.com", "entry", 2, 15, false, &original_visits1));
809 &original_visits1));
810 history::VisitVector original_visits2; 794 history::VisitVector original_visits2;
811 history::URLRow original_entry2(MakeTypedUrlEntry("http://mine2.com", 795 history::URLRow original_entry2(MakeTypedUrlEntry(
812 "entry2", 796 "http://mine2.com", "entry2", 3, 15, false, &original_visits2));
813 3, 15, false,
814 &original_visits2));
815 history::URLRows original_entries; 797 history::URLRows original_entries;
816 original_entries.push_back(original_entry1); 798 original_entries.push_back(original_entry1);
817 original_entries.push_back(original_entry2); 799 original_entries.push_back(original_entry2);
818 800
819 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 801 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
820 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); 802 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true)));
821 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 803 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
822 .WillRepeatedly( 804 .WillRepeatedly(
823 DoAll(SetArgumentPointee<2>(original_visits1), Return(true))); 805 DoAll(SetArgumentPointee<2>(original_visits1), Return(true)));
824 CreateRootHelper create_root(this, syncer::TYPED_URLS); 806 CreateRootHelper create_root(this, syncer::TYPED_URLS);
825 StartSyncService(create_root.callback()); 807 StartSyncService(create_root.callback());
826 808
827 history::URLRows rows; 809 history::URLRows rows;
828 rows.push_back(history::URLRow(GURL("http://mine.com"))); 810 rows.push_back(history::URLRow(GURL("http://mine.com")));
829 SendNotificationURLsDeleted(false, false, rows, std::set<GURL>()); 811 SendNotificationURLsDeleted(false, false, rows, std::set<GURL>());
830 history::URLRows new_sync_entries; 812 history::URLRows new_sync_entries;
831 GetTypedUrlsFromSyncDB(&new_sync_entries); 813 GetTypedUrlsFromSyncDB(&new_sync_entries);
832 ASSERT_EQ(1U, new_sync_entries.size()); 814 ASSERT_EQ(1U, new_sync_entries.size());
833 EXPECT_TRUE(URLsEqual(original_entry2, new_sync_entries[0])); 815 EXPECT_TRUE(URLsEqual(original_entry2, new_sync_entries[0]));
834 } 816 }
835 817
836 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeRemoveExpired) { 818 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeRemoveExpired) {
837 history::VisitVector original_visits1; 819 history::VisitVector original_visits1;
838 history::URLRow original_entry1(MakeTypedUrlEntry("http://mine.com", "entry", 820 history::URLRow original_entry1(MakeTypedUrlEntry(
839 2, 15, false, 821 "http://mine.com", "entry", 2, 15, false, &original_visits1));
840 &original_visits1));
841 history::VisitVector original_visits2; 822 history::VisitVector original_visits2;
842 history::URLRow original_entry2(MakeTypedUrlEntry("http://mine2.com", 823 history::URLRow original_entry2(MakeTypedUrlEntry(
843 "entry2", 824 "http://mine2.com", "entry2", 3, 15, false, &original_visits2));
844 3, 15, false,
845 &original_visits2));
846 history::URLRows original_entries; 825 history::URLRows original_entries;
847 original_entries.push_back(original_entry1); 826 original_entries.push_back(original_entry1);
848 original_entries.push_back(original_entry2); 827 original_entries.push_back(original_entry2);
849 828
850 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 829 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
851 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); 830 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true)));
852 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 831 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
853 .WillRepeatedly( 832 .WillRepeatedly(
854 DoAll(SetArgumentPointee<2>(original_visits1), Return(true))); 833 DoAll(SetArgumentPointee<2>(original_visits1), Return(true)));
855 CreateRootHelper create_root(this, syncer::TYPED_URLS); 834 CreateRootHelper create_root(this, syncer::TYPED_URLS);
856 StartSyncService(create_root.callback()); 835 StartSyncService(create_root.callback());
857 836
858 // Setting expired=true should cause the sync code to ignore this deletion. 837 // Setting expired=true should cause the sync code to ignore this deletion.
859 history::URLRows rows; 838 history::URLRows rows;
860 rows.push_back(history::URLRow(GURL("http://mine.com"))); 839 rows.push_back(history::URLRow(GURL("http://mine.com")));
861 SendNotificationURLsDeleted(false, true, rows, std::set<GURL>()); 840 SendNotificationURLsDeleted(false, true, rows, std::set<GURL>());
862 history::URLRows new_sync_entries; 841 history::URLRows new_sync_entries;
863 GetTypedUrlsFromSyncDB(&new_sync_entries); 842 GetTypedUrlsFromSyncDB(&new_sync_entries);
864 // Both URLs should still be there. 843 // Both URLs should still be there.
865 ASSERT_EQ(2U, new_sync_entries.size()); 844 ASSERT_EQ(2U, new_sync_entries.size());
866 } 845 }
867 846
868 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeRemoveAll) { 847 TEST_F(ProfileSyncServiceTypedUrlTest, ProcessUserChangeRemoveAll) {
869 history::VisitVector original_visits1; 848 history::VisitVector original_visits1;
870 history::URLRow original_entry1(MakeTypedUrlEntry("http://mine.com", "entry", 849 history::URLRow original_entry1(MakeTypedUrlEntry(
871 2, 15, false, 850 "http://mine.com", "entry", 2, 15, false, &original_visits1));
872 &original_visits1));
873 history::VisitVector original_visits2; 851 history::VisitVector original_visits2;
874 history::URLRow original_entry2(MakeTypedUrlEntry("http://mine2.com", 852 history::URLRow original_entry2(MakeTypedUrlEntry(
875 "entry2", 853 "http://mine2.com", "entry2", 3, 15, false, &original_visits2));
876 3, 15, false,
877 &original_visits2));
878 history::URLRows original_entries; 854 history::URLRows original_entries;
879 original_entries.push_back(original_entry1); 855 original_entries.push_back(original_entry1);
880 original_entries.push_back(original_entry2); 856 original_entries.push_back(original_entry2);
881 857
882 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 858 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
883 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true))); 859 .WillOnce(DoAll(SetArgumentPointee<0>(original_entries), Return(true)));
884 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 860 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
885 .WillRepeatedly( 861 .WillRepeatedly(
886 DoAll(SetArgumentPointee<2>(original_visits1), Return(true))); 862 DoAll(SetArgumentPointee<2>(original_visits1), Return(true)));
887 CreateRootHelper create_root(this, syncer::TYPED_URLS); 863 CreateRootHelper create_root(this, syncer::TYPED_URLS);
888 StartSyncService(create_root.callback()); 864 StartSyncService(create_root.callback());
889 865
890 history::URLRows new_sync_entries; 866 history::URLRows new_sync_entries;
891 GetTypedUrlsFromSyncDB(&new_sync_entries); 867 GetTypedUrlsFromSyncDB(&new_sync_entries);
892 ASSERT_EQ(2U, new_sync_entries.size()); 868 ASSERT_EQ(2U, new_sync_entries.size());
893 869
894 SendNotificationURLsDeleted(true, false, history::URLRows(), 870 SendNotificationURLsDeleted(true, false, history::URLRows(),
895 std::set<GURL>()); 871 std::set<GURL>());
896 872
897 GetTypedUrlsFromSyncDB(&new_sync_entries); 873 GetTypedUrlsFromSyncDB(&new_sync_entries);
898 ASSERT_EQ(0U, new_sync_entries.size()); 874 ASSERT_EQ(0U, new_sync_entries.size());
899 } 875 }
900 876
901 TEST_F(ProfileSyncServiceTypedUrlTest, FailWriteToHistoryBackend) { 877 TEST_F(ProfileSyncServiceTypedUrlTest, FailWriteToHistoryBackend) {
902 history::VisitVector native_visits; 878 history::VisitVector native_visits;
903 history::VisitVector sync_visits; 879 history::VisitVector sync_visits;
904 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry", 880 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry",
905 2, 15, false, &native_visits)); 881 2, 15, false, &native_visits));
906 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 882 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 3,
907 3, 16, false, &sync_visits)); 883 16, false, &sync_visits));
908 884
909 history::URLRows native_entries; 885 history::URLRows native_entries;
910 native_entries.push_back(native_entry); 886 native_entries.push_back(native_entry);
911 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 887 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
912 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true))); 888 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(true)));
913 EXPECT_CALL((history_backend()), GetURL(_, _)) 889 EXPECT_CALL((history_backend()), GetURL(_, _))
914 .WillOnce(DoAll(SetArgumentPointee<1>(native_entry), Return(false))); 890 .WillOnce(DoAll(SetArgumentPointee<1>(native_entry), Return(false)));
915 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 891 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
916 .WillRepeatedly( 892 .WillRepeatedly(
917 DoAll(SetArgumentPointee<2>(native_visits), Return(true))); 893 DoAll(SetArgumentPointee<2>(native_visits), Return(true)));
(...skipping 15 matching lines...) Expand all
933 // somewhere > 0 and < 100. 909 // somewhere > 0 and < 100.
934 ASSERT_NE(0, syncable_service->GetErrorPercentage()); 910 ASSERT_NE(0, syncable_service->GetErrorPercentage());
935 ASSERT_NE(100, syncable_service->GetErrorPercentage()); 911 ASSERT_NE(100, syncable_service->GetErrorPercentage());
936 } 912 }
937 913
938 TEST_F(ProfileSyncServiceTypedUrlTest, FailToGetTypedURLs) { 914 TEST_F(ProfileSyncServiceTypedUrlTest, FailToGetTypedURLs) {
939 history::VisitVector native_visits; 915 history::VisitVector native_visits;
940 history::VisitVector sync_visits; 916 history::VisitVector sync_visits;
941 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry", 917 history::URLRow native_entry(MakeTypedUrlEntry("http://native.com", "entry",
942 2, 15, false, &native_visits)); 918 2, 15, false, &native_visits));
943 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 919 history::URLRow sync_entry(MakeTypedUrlEntry("http://sync.com", "entry", 3,
944 3, 16, false, &sync_visits)); 920 16, false, &sync_visits));
945 921
946 history::URLRows native_entries; 922 history::URLRows native_entries;
947 native_entries.push_back(native_entry); 923 native_entries.push_back(native_entry);
948 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 924 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
949 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(false))); 925 .WillOnce(DoAll(SetArgumentPointee<0>(native_entries), Return(false)));
950 926
951 history::URLRows sync_entries; 927 history::URLRows sync_entries;
952 sync_entries.push_back(sync_entry); 928 sync_entries.push_back(sync_entry);
953 929
954 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries)); 930 StartSyncService(base::Bind(&AddTypedUrlEntries, this, sync_entries));
955 // Errors getting typed URLs will cause an unrecoverable error (since we can 931 // Errors getting typed URLs will cause an unrecoverable error (since we can
956 // do *nothing* in that case). 932 // do *nothing* in that case).
957 ASSERT_TRUE(sync_service()->data_type_status_table().GetFailedTypes().Has( 933 ASSERT_TRUE(sync_service()->data_type_status_table().GetFailedTypes().Has(
958 syncer::TYPED_URLS)); 934 syncer::TYPED_URLS));
959 ASSERT_EQ(1u, 935 ASSERT_EQ(1u,
960 sync_service()->data_type_status_table().GetFailedTypes().Size()); 936 sync_service()->data_type_status_table().GetFailedTypes().Size());
961 // Can't check GetErrorPercentage(), because generating an unrecoverable 937 // Can't check GetErrorPercentage(), because generating an unrecoverable
962 // error will free the model associator. 938 // error will free the model associator.
963 } 939 }
964 940
965 TEST_F(ProfileSyncServiceTypedUrlTest, IgnoreLocalFileURL) { 941 TEST_F(ProfileSyncServiceTypedUrlTest, IgnoreLocalFileURL) {
966 history::VisitVector original_visits; 942 history::VisitVector original_visits;
967 // Create http and file url. 943 // Create http and file url.
968 history::URLRow url_entry(MakeTypedUrlEntry("http://yey.com", 944 history::URLRow url_entry(MakeTypedUrlEntry("http://yey.com", "yey", 12, 15,
969 "yey", 12, 15, false, 945 false, &original_visits));
970 &original_visits)); 946 history::URLRow file_entry(MakeTypedUrlEntry(
971 history::URLRow file_entry(MakeTypedUrlEntry("file:///kitty.jpg", 947 "file:///kitty.jpg", "kitteh", 12, 15, false, &original_visits));
972 "kitteh", 12, 15, false,
973 &original_visits));
974 948
975 history::URLRows original_entries; 949 history::URLRows original_entries;
976 original_entries.push_back(url_entry); 950 original_entries.push_back(url_entry);
977 original_entries.push_back(file_entry); 951 original_entries.push_back(file_entry);
978 952
979 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 953 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
980 .WillRepeatedly( 954 .WillRepeatedly(
981 DoAll(SetArgumentPointee<0>(original_entries), Return(true))); 955 DoAll(SetArgumentPointee<0>(original_entries), Return(true)));
982 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 956 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
983 .WillRepeatedly( 957 .WillRepeatedly(
984 DoAll(SetArgumentPointee<2>(original_visits), Return(true))); 958 DoAll(SetArgumentPointee<2>(original_visits), Return(true)));
985 CreateRootHelper create_root(this, syncer::TYPED_URLS); 959 CreateRootHelper create_root(this, syncer::TYPED_URLS);
986 StartSyncService(create_root.callback()); 960 StartSyncService(create_root.callback());
987 961
988 history::VisitVector updated_visits; 962 history::VisitVector updated_visits;
989 // Create updates for the previous urls + a new file one. 963 // Create updates for the previous urls + a new file one.
990 history::URLRow updated_url_entry(MakeTypedUrlEntry("http://yey.com", 964 history::URLRow updated_url_entry(MakeTypedUrlEntry(
991 "yey", 20, 15, false, 965 "http://yey.com", "yey", 20, 15, false, &updated_visits));
992 &updated_visits)); 966 history::URLRow updated_file_entry(MakeTypedUrlEntry(
993 history::URLRow updated_file_entry(MakeTypedUrlEntry("file:///cat.jpg", 967 "file:///cat.jpg", "cat", 20, 15, false, &updated_visits));
994 "cat", 20, 15, false, 968 history::URLRow new_file_entry(MakeTypedUrlEntry("file:///dog.jpg", "dog", 20,
995 &updated_visits)); 969 15, false, &updated_visits));
996 history::URLRow new_file_entry(MakeTypedUrlEntry("file:///dog.jpg",
997 "dog", 20, 15, false,
998 &updated_visits));
999 970
1000 history::URLRows changed_urls; 971 history::URLRows changed_urls;
1001 changed_urls.push_back(updated_url_entry); 972 changed_urls.push_back(updated_url_entry);
1002 changed_urls.push_back(updated_file_entry); 973 changed_urls.push_back(updated_file_entry);
1003 changed_urls.push_back(new_file_entry); 974 changed_urls.push_back(new_file_entry);
1004 SendNotificationURLsModified(changed_urls); 975 SendNotificationURLsModified(changed_urls);
1005 976
1006 history::URLRows new_sync_entries; 977 history::URLRows new_sync_entries;
1007 GetTypedUrlsFromSyncDB(&new_sync_entries); 978 GetTypedUrlsFromSyncDB(&new_sync_entries);
1008 979
1009 // We should ignore the local file urls (existing and updated), 980 // We should ignore the local file urls (existing and updated),
1010 // and only be left with the updated http url. 981 // and only be left with the updated http url.
1011 ASSERT_EQ(1U, new_sync_entries.size()); 982 ASSERT_EQ(1U, new_sync_entries.size());
1012 EXPECT_TRUE(URLsEqual(updated_url_entry, new_sync_entries[0])); 983 EXPECT_TRUE(URLsEqual(updated_url_entry, new_sync_entries[0]));
1013 } 984 }
1014 985
1015 TEST_F(ProfileSyncServiceTypedUrlTest, IgnoreLocalhostURL) { 986 TEST_F(ProfileSyncServiceTypedUrlTest, IgnoreLocalhostURL) {
1016 history::VisitVector original_visits; 987 history::VisitVector original_visits;
1017 // Create http and localhost url. 988 // Create http and localhost url.
1018 history::URLRow url_entry(MakeTypedUrlEntry("http://yey.com", 989 history::URLRow url_entry(MakeTypedUrlEntry("http://yey.com", "yey", 12, 15,
1019 "yey", 12, 15, false, 990 false, &original_visits));
1020 &original_visits)); 991 history::URLRow localhost_entry(MakeTypedUrlEntry(
1021 history::URLRow localhost_entry(MakeTypedUrlEntry("http://localhost", 992 "http://localhost", "localhost", 12, 15, false, &original_visits));
1022 "localhost", 12, 15, false,
1023 &original_visits));
1024 993
1025 history::URLRows original_entries; 994 history::URLRows original_entries;
1026 original_entries.push_back(url_entry); 995 original_entries.push_back(url_entry);
1027 original_entries.push_back(localhost_entry); 996 original_entries.push_back(localhost_entry);
1028 997
1029 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 998 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
1030 .WillRepeatedly( 999 .WillRepeatedly(
1031 DoAll(SetArgumentPointee<0>(original_entries), Return(true))); 1000 DoAll(SetArgumentPointee<0>(original_entries), Return(true)));
1032 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 1001 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
1033 .WillRepeatedly( 1002 .WillRepeatedly(
1034 DoAll(SetArgumentPointee<2>(original_visits), Return(true))); 1003 DoAll(SetArgumentPointee<2>(original_visits), Return(true)));
1035 CreateRootHelper create_root(this, syncer::TYPED_URLS); 1004 CreateRootHelper create_root(this, syncer::TYPED_URLS);
1036 StartSyncService(create_root.callback()); 1005 StartSyncService(create_root.callback());
1037 1006
1038 history::VisitVector updated_visits; 1007 history::VisitVector updated_visits;
1039 // Update the previous entries and add a new localhost. 1008 // Update the previous entries and add a new localhost.
1040 history::URLRow updated_url_entry(MakeTypedUrlEntry("http://yey.com", 1009 history::URLRow updated_url_entry(MakeTypedUrlEntry(
1041 "yey", 20, 15, false, 1010 "http://yey.com", "yey", 20, 15, false, &updated_visits));
1042 &updated_visits));
1043 history::URLRow updated_localhost_entry(MakeTypedUrlEntry( 1011 history::URLRow updated_localhost_entry(MakeTypedUrlEntry(
1044 "http://localhost:80", 1012 "http://localhost:80", "localhost", 20, 15, false, &original_visits));
1045 "localhost", 20, 15, false, 1013 history::URLRow localhost_ip_entry(MakeTypedUrlEntry(
1046 &original_visits)); 1014 "http://127.0.0.1", "localhost", 12, 15, false, &original_visits));
1047 history::URLRow localhost_ip_entry(MakeTypedUrlEntry("http://127.0.0.1",
1048 "localhost", 12, 15, false,
1049 &original_visits));
1050 1015
1051 history::URLRows changed_urls; 1016 history::URLRows changed_urls;
1052 changed_urls.push_back(updated_url_entry); 1017 changed_urls.push_back(updated_url_entry);
1053 changed_urls.push_back(updated_localhost_entry); 1018 changed_urls.push_back(updated_localhost_entry);
1054 changed_urls.push_back(localhost_ip_entry); 1019 changed_urls.push_back(localhost_ip_entry);
1055 SendNotificationURLsModified(changed_urls); 1020 SendNotificationURLsModified(changed_urls);
1056 1021
1057 history::URLRows new_sync_entries; 1022 history::URLRows new_sync_entries;
1058 GetTypedUrlsFromSyncDB(&new_sync_entries); 1023 GetTypedUrlsFromSyncDB(&new_sync_entries);
1059 1024
1060 // We should ignore the localhost urls and left only with http url. 1025 // We should ignore the localhost urls and left only with http url.
1061 ASSERT_EQ(1U, new_sync_entries.size()); 1026 ASSERT_EQ(1U, new_sync_entries.size());
1062 EXPECT_TRUE(URLsEqual(updated_url_entry, new_sync_entries[0])); 1027 EXPECT_TRUE(URLsEqual(updated_url_entry, new_sync_entries[0]));
1063 } 1028 }
1064 1029
1065 TEST_F(ProfileSyncServiceTypedUrlTest, IgnoreModificationWithoutValidVisit) { 1030 TEST_F(ProfileSyncServiceTypedUrlTest, IgnoreModificationWithoutValidVisit) {
1066 EXPECT_CALL((history_backend()), GetAllTypedURLs(_)) 1031 EXPECT_CALL((history_backend()), GetAllTypedURLs(_))
1067 .WillRepeatedly(Return(true)); 1032 .WillRepeatedly(Return(true));
1068 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _)) 1033 EXPECT_CALL((history_backend()), GetMostRecentVisitsForURL(_, _, _))
1069 .WillRepeatedly(Return(true)); 1034 .WillRepeatedly(Return(true));
1070 1035
1071 CreateRootHelper create_root(this, syncer::TYPED_URLS); 1036 CreateRootHelper create_root(this, syncer::TYPED_URLS);
1072 StartSyncService(create_root.callback()); 1037 StartSyncService(create_root.callback());
1073 1038
1074 history::VisitVector updated_visits; 1039 history::VisitVector updated_visits;
1075 history::URLRow updated_url_entry(MakeTypedUrlEntry("http://yey.com", 1040 history::URLRow updated_url_entry(MakeTypedUrlEntry(
1076 "yey", 20, 0, false, 1041 "http://yey.com", "yey", 20, 0, false, &updated_visits));
1077 &updated_visits));
1078 1042
1079 history::URLRows changed_urls; 1043 history::URLRows changed_urls;
1080 changed_urls.push_back(updated_url_entry); 1044 changed_urls.push_back(updated_url_entry);
1081 SendNotificationURLsModified(changed_urls); 1045 SendNotificationURLsModified(changed_urls);
1082 1046
1083 history::URLRows new_sync_entries; 1047 history::URLRows new_sync_entries;
1084 GetTypedUrlsFromSyncDB(&new_sync_entries); 1048 GetTypedUrlsFromSyncDB(&new_sync_entries);
1085 1049
1086 // The change should be ignored. 1050 // The change should be ignored.
1087 ASSERT_EQ(0U, new_sync_entries.size()); 1051 ASSERT_EQ(0U, new_sync_entries.size());
1088 } 1052 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698