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

Side by Side Diff: components/history/core/browser/history_service_unittest.cc

Issue 1548113002: Switch to standard integer types in components/, part 2 of 4. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: gn Created 4 years, 12 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 // History unit tests come in two flavors: 5 // History unit tests come in two flavors:
6 // 6 //
7 // 1. The more complicated style is that the unit test creates a full history 7 // 1. The more complicated style is that the unit test creates a full history
8 // service. This spawns a background thread for the history backend, and 8 // service. This spawns a background thread for the history backend, and
9 // all communication is asynchronous. This is useful for testing more 9 // all communication is asynchronous. This is useful for testing more
10 // complicated things or end-to-end behavior. 10 // complicated things or end-to-end behavior.
11 // 11 //
12 // 2. The simpler style is to create a history backend on this thread and 12 // 2. The simpler style is to create a history backend on this thread and
13 // access it directly without a HistoryService object. This is much simpler 13 // access it directly without a HistoryService object. This is much simpler
14 // because communication is synchronous. Generally, sets should go through 14 // because communication is synchronous. Generally, sets should go through
15 // the history backend (since there is a lot of logic) but gets can come 15 // the history backend (since there is a lot of logic) but gets can come
16 // directly from the HistoryDatabase. This is because the backend generally 16 // directly from the HistoryDatabase. This is because the backend generally
17 // has no logic in the getter except threading stuff, which we don't want 17 // has no logic in the getter except threading stuff, which we don't want
18 // to run. 18 // to run.
19 19
20 #include "components/history/core/browser/history_service.h" 20 #include "components/history/core/browser/history_service.h"
21 21
22 #include <stdint.h>
23
22 #include "base/files/file_util.h" 24 #include "base/files/file_util.h"
23 #include "base/files/scoped_temp_dir.h" 25 #include "base/files/scoped_temp_dir.h"
24 #include "base/location.h" 26 #include "base/location.h"
27 #include "base/macros.h"
25 #include "base/message_loop/message_loop.h" 28 #include "base/message_loop/message_loop.h"
26 #include "base/single_thread_task_runner.h" 29 #include "base/single_thread_task_runner.h"
27 #include "base/strings/utf_string_conversions.h" 30 #include "base/strings/utf_string_conversions.h"
28 #include "base/thread_task_runner_handle.h" 31 #include "base/thread_task_runner_handle.h"
29 #include "components/history/core/browser/history_database_params.h" 32 #include "components/history/core/browser/history_database_params.h"
30 #include "components/history/core/browser/history_db_task.h" 33 #include "components/history/core/browser/history_db_task.h"
31 #include "components/history/core/test/database_test_utils.h" 34 #include "components/history/core/test/database_test_utils.h"
32 #include "components/history/core/test/test_history_database.h" 35 #include "components/history/core/test/test_history_database.h"
33 #include "sync/api/attachments/attachment_id.h" 36 #include "sync/api/attachments/attachment_id.h"
34 #include "sync/api/fake_sync_change_processor.h" 37 #include "sync/api/fake_sync_change_processor.h"
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 history_service_->AddPage( 216 history_service_->AddPage(
214 first_redirects.back(), base::Time::Now(), 217 first_redirects.back(), base::Time::Now(),
215 reinterpret_cast<ContextID>(1), 0, GURL(), first_redirects, 218 reinterpret_cast<ContextID>(1), 0, GURL(), first_redirects,
216 ui::PAGE_TRANSITION_LINK, history::SOURCE_BROWSED, true); 219 ui::PAGE_TRANSITION_LINK, history::SOURCE_BROWSED, true);
217 220
218 // The first page should be added once with a link visit type (because we set 221 // The first page should be added once with a link visit type (because we set
219 // LINK when we added the original URL, and a referrer of nowhere (0). 222 // LINK when we added the original URL, and a referrer of nowhere (0).
220 EXPECT_TRUE(QueryURL(history_service_.get(), first_redirects[0])); 223 EXPECT_TRUE(QueryURL(history_service_.get(), first_redirects[0]));
221 EXPECT_EQ(1, query_url_row_.visit_count()); 224 EXPECT_EQ(1, query_url_row_.visit_count());
222 ASSERT_EQ(1U, query_url_visits_.size()); 225 ASSERT_EQ(1U, query_url_visits_.size());
223 int64 first_visit = query_url_visits_[0].visit_id; 226 int64_t first_visit = query_url_visits_[0].visit_id;
224 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CHAIN_START, 227 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CHAIN_START,
225 query_url_visits_[0].transition); 228 query_url_visits_[0].transition);
226 EXPECT_EQ(0, query_url_visits_[0].referring_visit); // No referrer. 229 EXPECT_EQ(0, query_url_visits_[0].referring_visit); // No referrer.
227 230
228 // The second page should be a server redirect type with a referrer of the 231 // The second page should be a server redirect type with a referrer of the
229 // first page. 232 // first page.
230 EXPECT_TRUE(QueryURL(history_service_.get(), first_redirects[1])); 233 EXPECT_TRUE(QueryURL(history_service_.get(), first_redirects[1]));
231 EXPECT_EQ(1, query_url_row_.visit_count()); 234 EXPECT_EQ(1, query_url_row_.visit_count());
232 ASSERT_EQ(1U, query_url_visits_.size()); 235 ASSERT_EQ(1U, query_url_visits_.size());
233 int64 second_visit = query_url_visits_[0].visit_id; 236 int64_t second_visit = query_url_visits_[0].visit_id;
234 EXPECT_EQ(ui::PAGE_TRANSITION_SERVER_REDIRECT | ui::PAGE_TRANSITION_CHAIN_END, 237 EXPECT_EQ(ui::PAGE_TRANSITION_SERVER_REDIRECT | ui::PAGE_TRANSITION_CHAIN_END,
235 query_url_visits_[0].transition); 238 query_url_visits_[0].transition);
236 EXPECT_EQ(first_visit, query_url_visits_[0].referring_visit); 239 EXPECT_EQ(first_visit, query_url_visits_[0].referring_visit);
237 240
238 // Check that the redirect finding function successfully reports it. 241 // Check that the redirect finding function successfully reports it.
239 saved_redirects_.clear(); 242 saved_redirects_.clear();
240 QueryRedirectsFrom(history_service_.get(), first_redirects[0]); 243 QueryRedirectsFrom(history_service_.get(), first_redirects[0]);
241 ASSERT_EQ(1U, saved_redirects_.size()); 244 ASSERT_EQ(1U, saved_redirects_.size());
242 EXPECT_EQ(first_redirects[1], saved_redirects_[0]); 245 EXPECT_EQ(first_redirects[1], saved_redirects_[0]);
243 246
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 } 625 }
623 626
624 // Create a local delete directive and process it while sync is 627 // Create a local delete directive and process it while sync is
625 // online, and then when offline. The delete directive should be sent to sync, 628 // online, and then when offline. The delete directive should be sent to sync,
626 // no error should be returned for the first time, and an error should be 629 // no error should be returned for the first time, and an error should be
627 // returned for the second time. 630 // returned for the second time.
628 TEST_F(HistoryServiceTest, ProcessLocalDeleteDirectiveSyncOnline) { 631 TEST_F(HistoryServiceTest, ProcessLocalDeleteDirectiveSyncOnline) {
629 ASSERT_TRUE(history_service_.get()); 632 ASSERT_TRUE(history_service_.get());
630 633
631 const GURL test_url("http://www.google.com/"); 634 const GURL test_url("http://www.google.com/");
632 for (int64 i = 1; i <= 10; ++i) { 635 for (int64_t i = 1; i <= 10; ++i) {
633 base::Time t = 636 base::Time t =
634 base::Time::UnixEpoch() + base::TimeDelta::FromMicroseconds(i); 637 base::Time::UnixEpoch() + base::TimeDelta::FromMicroseconds(i);
635 history_service_->AddPage(test_url, t, NULL, 0, GURL(), 638 history_service_->AddPage(test_url, t, NULL, 0, GURL(),
636 history::RedirectList(), 639 history::RedirectList(),
637 ui::PAGE_TRANSITION_LINK, 640 ui::PAGE_TRANSITION_LINK,
638 history::SOURCE_BROWSED, false); 641 history::SOURCE_BROWSED, false);
639 } 642 }
640 643
641 sync_pb::HistoryDeleteDirectiveSpecifics delete_directive; 644 sync_pb::HistoryDeleteDirectiveSpecifics delete_directive;
642 sync_pb::GlobalIdDirective* global_id_directive = 645 sync_pb::GlobalIdDirective* global_id_directive =
(...skipping 25 matching lines...) Expand all
668 EXPECT_TRUE(err.IsSet()); 671 EXPECT_TRUE(err.IsSet());
669 EXPECT_EQ(1u, change_processor.changes().size()); 672 EXPECT_EQ(1u, change_processor.changes().size());
670 } 673 }
671 674
672 // Closure function that runs periodically to check result of delete directive 675 // Closure function that runs periodically to check result of delete directive
673 // processing. Stop when timeout or processing ends indicated by the creation 676 // processing. Stop when timeout or processing ends indicated by the creation
674 // of sync changes. 677 // of sync changes.
675 void CheckDirectiveProcessingResult( 678 void CheckDirectiveProcessingResult(
676 base::Time timeout, 679 base::Time timeout,
677 const syncer::FakeSyncChangeProcessor* change_processor, 680 const syncer::FakeSyncChangeProcessor* change_processor,
678 uint32 num_changes) { 681 uint32_t num_changes) {
679 if (base::Time::Now() > timeout || 682 if (base::Time::Now() > timeout ||
680 change_processor->changes().size() >= num_changes) { 683 change_processor->changes().size() >= num_changes) {
681 return; 684 return;
682 } 685 }
683 686
684 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(100)); 687 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(100));
685 base::ThreadTaskRunnerHandle::Get()->PostTask( 688 base::ThreadTaskRunnerHandle::Get()->PostTask(
686 FROM_HERE, base::Bind(&CheckDirectiveProcessingResult, timeout, 689 FROM_HERE, base::Bind(&CheckDirectiveProcessingResult, timeout,
687 change_processor, num_changes)); 690 change_processor, num_changes));
688 } 691 }
689 692
690 // Create a delete directive for a few specific history entries, 693 // Create a delete directive for a few specific history entries,
691 // including ones that don't exist. The expected entries should be 694 // including ones that don't exist. The expected entries should be
692 // deleted. 695 // deleted.
693 TEST_F(HistoryServiceTest, ProcessGlobalIdDeleteDirective) { 696 TEST_F(HistoryServiceTest, ProcessGlobalIdDeleteDirective) {
694 ASSERT_TRUE(history_service_.get()); 697 ASSERT_TRUE(history_service_.get());
695 const GURL test_url("http://www.google.com/"); 698 const GURL test_url("http://www.google.com/");
696 for (int64 i = 1; i <= 20; i++) { 699 for (int64_t i = 1; i <= 20; i++) {
697 base::Time t = 700 base::Time t =
698 base::Time::UnixEpoch() + base::TimeDelta::FromMicroseconds(i); 701 base::Time::UnixEpoch() + base::TimeDelta::FromMicroseconds(i);
699 history_service_->AddPage(test_url, t, NULL, 0, GURL(), 702 history_service_->AddPage(test_url, t, NULL, 0, GURL(),
700 history::RedirectList(), 703 history::RedirectList(),
701 ui::PAGE_TRANSITION_LINK, 704 ui::PAGE_TRANSITION_LINK,
702 history::SOURCE_BROWSED, false); 705 history::SOURCE_BROWSED, false);
703 } 706 }
704 707
705 EXPECT_TRUE(QueryURL(history_service_.get(), test_url)); 708 EXPECT_TRUE(QueryURL(history_service_.get(), test_url));
706 EXPECT_EQ(20, query_url_row_.visit_count()); 709 EXPECT_EQ(20, query_url_row_.visit_count());
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 EXPECT_EQ(1, syncer::SyncDataRemote(sync_changes[0].sync_data()).GetId()); 780 EXPECT_EQ(1, syncer::SyncDataRemote(sync_changes[0].sync_data()).GetId());
778 EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, sync_changes[1].change_type()); 781 EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, sync_changes[1].change_type());
779 EXPECT_EQ(2, syncer::SyncDataRemote(sync_changes[1].sync_data()).GetId()); 782 EXPECT_EQ(2, syncer::SyncDataRemote(sync_changes[1].sync_data()).GetId());
780 } 783 }
781 784
782 // Create delete directives for time ranges. The expected entries should be 785 // Create delete directives for time ranges. The expected entries should be
783 // deleted. 786 // deleted.
784 TEST_F(HistoryServiceTest, ProcessTimeRangeDeleteDirective) { 787 TEST_F(HistoryServiceTest, ProcessTimeRangeDeleteDirective) {
785 ASSERT_TRUE(history_service_.get()); 788 ASSERT_TRUE(history_service_.get());
786 const GURL test_url("http://www.google.com/"); 789 const GURL test_url("http://www.google.com/");
787 for (int64 i = 1; i <= 10; ++i) { 790 for (int64_t i = 1; i <= 10; ++i) {
788 base::Time t = 791 base::Time t =
789 base::Time::UnixEpoch() + base::TimeDelta::FromMicroseconds(i); 792 base::Time::UnixEpoch() + base::TimeDelta::FromMicroseconds(i);
790 history_service_->AddPage(test_url, t, NULL, 0, GURL(), 793 history_service_->AddPage(test_url, t, NULL, 0, GURL(),
791 history::RedirectList(), 794 history::RedirectList(),
792 ui::PAGE_TRANSITION_LINK, 795 ui::PAGE_TRANSITION_LINK,
793 history::SOURCE_BROWSED, false); 796 history::SOURCE_BROWSED, false);
794 } 797 }
795 798
796 EXPECT_TRUE(QueryURL(history_service_.get(), test_url)); 799 EXPECT_TRUE(QueryURL(history_service_.get(), test_url));
797 EXPECT_EQ(10, query_url_row_.visit_count()); 800 EXPECT_EQ(10, query_url_row_.visit_count());
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 // Expect two sync changes for deleting processed directives. 857 // Expect two sync changes for deleting processed directives.
855 const syncer::SyncChangeList& sync_changes = change_processor.changes(); 858 const syncer::SyncChangeList& sync_changes = change_processor.changes();
856 ASSERT_EQ(2u, sync_changes.size()); 859 ASSERT_EQ(2u, sync_changes.size());
857 EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, sync_changes[0].change_type()); 860 EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, sync_changes[0].change_type());
858 EXPECT_EQ(1, syncer::SyncDataRemote(sync_changes[0].sync_data()).GetId()); 861 EXPECT_EQ(1, syncer::SyncDataRemote(sync_changes[0].sync_data()).GetId());
859 EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, sync_changes[1].change_type()); 862 EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, sync_changes[1].change_type());
860 EXPECT_EQ(2, syncer::SyncDataRemote(sync_changes[1].sync_data()).GetId()); 863 EXPECT_EQ(2, syncer::SyncDataRemote(sync_changes[1].sync_data()).GetId());
861 } 864 }
862 865
863 } // namespace history 866 } // namespace history
OLDNEW
« no previous file with comments | « components/history/core/browser/history_service.cc ('k') | components/history/core/browser/history_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698