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

Side by Side Diff: components/offline_pages/offline_page_model_impl_unittest.cc

Issue 2415473003: Query API: Introduces an OfflinePageModelQuery object. (Closed)
Patch Set: Address comments, add more tests, rename enum. Created 4 years, 1 month 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/offline_pages/offline_page_model_impl.h" 5 #include "components/offline_pages/offline_page_model_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 20 matching lines...) Expand all
31 #include "components/offline_pages/offline_page_storage_manager.h" 31 #include "components/offline_pages/offline_page_storage_manager.h"
32 #include "components/offline_pages/offline_page_test_archiver.h" 32 #include "components/offline_pages/offline_page_test_archiver.h"
33 #include "components/offline_pages/offline_page_test_store.h" 33 #include "components/offline_pages/offline_page_test_store.h"
34 #include "components/offline_pages/offline_page_types.h" 34 #include "components/offline_pages/offline_page_types.h"
35 #include "testing/gtest/include/gtest/gtest.h" 35 #include "testing/gtest/include/gtest/gtest.h"
36 #include "url/gurl.h" 36 #include "url/gurl.h"
37 37
38 namespace offline_pages { 38 namespace offline_pages {
39 39
40 namespace { 40 namespace {
41 const char kTestClientNamespace[] = "CLIENT_NAMESPACE"; 41 const char kTestClientNamespace[] = "default";
42 const char kUserRequestedNamespace[] = "download"; 42 const char kUserRequestedNamespace[] = "download";
43 const GURL kTestUrl("http://example.com"); 43 const GURL kTestUrl("http://example.com");
44 const GURL kTestUrl2("http://other.page.com"); 44 const GURL kTestUrl2("http://other.page.com");
45 const GURL kTestUrl3("http://test.xyz"); 45 const GURL kTestUrl3("http://test.xyz");
46 const GURL kTestUrl4("http://page.net"); 46 const GURL kTestUrl4("http://page.net");
47 const GURL kFileUrl("file:///foo"); 47 const GURL kFileUrl("file:///foo");
48 const GURL kTestUrlWithFragment("http://example.com#frag"); 48 const GURL kTestUrlWithFragment("http://example.com#frag");
49 const GURL kTestUrl2WithFragment("http://other.page.com#frag"); 49 const GURL kTestUrl2WithFragment("http://other.page.com#frag");
50 const GURL kTestUrl2WithFragment2("http://other.page.com#frag2"); 50 const GURL kTestUrl2WithFragment2("http://other.page.com#frag2");
51 const ClientId kTestClientId1(kTestClientNamespace, "1234"); 51 const ClientId kTestClientId1(kTestClientNamespace, "1234");
(...skipping 30 matching lines...) Expand all
82 82
83 // OfflinePageTestArchiver::Observer implementation. 83 // OfflinePageTestArchiver::Observer implementation.
84 void SetLastPathCreatedByArchiver(const base::FilePath& file_path) override; 84 void SetLastPathCreatedByArchiver(const base::FilePath& file_path) override;
85 85
86 // OfflinePageModel callbacks. 86 // OfflinePageModel callbacks.
87 void OnSavePageDone(SavePageResult result, int64_t offline_id); 87 void OnSavePageDone(SavePageResult result, int64_t offline_id);
88 void OnDeletePageDone(DeletePageResult result); 88 void OnDeletePageDone(DeletePageResult result);
89 void OnCheckPagesExistOfflineDone(const CheckPagesExistOfflineResult& result); 89 void OnCheckPagesExistOfflineDone(const CheckPagesExistOfflineResult& result);
90 void OnGetOfflineIdsForClientIdDone(MultipleOfflineIdResult* storage, 90 void OnGetOfflineIdsForClientIdDone(MultipleOfflineIdResult* storage,
91 const MultipleOfflineIdResult& result); 91 const MultipleOfflineIdResult& result);
92 void OnGetSingleOfflinePageItemResult(const OfflinePageItem** storage, 92 void OnGetSingleOfflinePageItemResult(
93 const OfflinePageItem* result); 93 std::unique_ptr<OfflinePageItem>* storage,
94 const OfflinePageItem* result);
94 void OnGetMultipleOfflinePageItemsResult( 95 void OnGetMultipleOfflinePageItemsResult(
95 MultipleOfflinePageItemResult* storage, 96 MultipleOfflinePageItemResult* storage,
96 const MultipleOfflinePageItemResult& result); 97 const MultipleOfflinePageItemResult& result);
97 void OnPagesExpired(bool result); 98 void OnPagesExpired(bool result);
98 99
99 // OfflinePageMetadataStore callbacks. 100 // OfflinePageMetadataStore callbacks.
100 void OnStoreUpdateDone(bool /* success */); 101 void OnStoreUpdateDone(bool /* success */);
101 102
102 std::unique_ptr<OfflinePageTestArchiver> BuildArchiver( 103 std::unique_ptr<OfflinePageTestArchiver> BuildArchiver(
103 const GURL& url, 104 const GURL& url,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 offline_ids.push_back(offline_id); 137 offline_ids.push_back(offline_id);
137 model()->DeletePagesByOfflineId(offline_ids, callback); 138 model()->DeletePagesByOfflineId(offline_ids, callback);
138 } 139 }
139 140
140 bool HasPages(std::string name_space); 141 bool HasPages(std::string name_space);
141 142
142 CheckPagesExistOfflineResult CheckPagesExistOffline(std::set<GURL>); 143 CheckPagesExistOfflineResult CheckPagesExistOffline(std::set<GURL>);
143 144
144 MultipleOfflineIdResult GetOfflineIdsForClientId(const ClientId& client_id); 145 MultipleOfflineIdResult GetOfflineIdsForClientId(const ClientId& client_id);
145 146
146 const OfflinePageItem* GetPageByOfflineId(int64_t offline_id); 147 std::unique_ptr<OfflinePageItem> GetPageByOfflineId(int64_t offline_id);
147 148
148 MultipleOfflinePageItemResult GetPagesByOnlineURL(const GURL& online_url); 149 MultipleOfflinePageItemResult GetPagesByOnlineURL(const GURL& online_url);
149 150
150 OfflinePageModelImpl* model() { return model_.get(); } 151 OfflinePageModelImpl* model() { return model_.get(); }
151 152
152 int64_t last_save_offline_id() const { return last_save_offline_id_; } 153 int64_t last_save_offline_id() const { return last_save_offline_id_; }
153 154
154 SavePageResult last_save_result() const { return last_save_result_; } 155 SavePageResult last_save_result() const { return last_save_result_; }
155 156
156 DeletePageResult last_delete_result() const { return last_delete_result_; } 157 DeletePageResult last_delete_result() const { return last_delete_result_; }
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 PumpLoop(); 372 PumpLoop();
372 return result; 373 return result;
373 } 374 }
374 375
375 void OfflinePageModelImplTest::OnGetOfflineIdsForClientIdDone( 376 void OfflinePageModelImplTest::OnGetOfflineIdsForClientIdDone(
376 MultipleOfflineIdResult* storage, 377 MultipleOfflineIdResult* storage,
377 const MultipleOfflineIdResult& result) { 378 const MultipleOfflineIdResult& result) {
378 *storage = result; 379 *storage = result;
379 } 380 }
380 381
381 const OfflinePageItem* OfflinePageModelImplTest::GetPageByOfflineId( 382 std::unique_ptr<OfflinePageItem> OfflinePageModelImplTest::GetPageByOfflineId(
382 int64_t offline_id) { 383 int64_t offline_id) {
383 const OfflinePageItem* result = nullptr; 384 std::unique_ptr<OfflinePageItem> result = nullptr;
384 model()->GetPageByOfflineId( 385 model()->GetPageByOfflineId(
385 offline_id, 386 offline_id,
386 base::Bind(&OfflinePageModelImplTest::OnGetSingleOfflinePageItemResult, 387 base::Bind(&OfflinePageModelImplTest::OnGetSingleOfflinePageItemResult,
387 AsWeakPtr(), base::Unretained(&result))); 388 AsWeakPtr(), base::Unretained(&result)));
388 PumpLoop(); 389 PumpLoop();
389 return result; 390 return result;
390 } 391 }
391 392
392 void OfflinePageModelImplTest::OnGetSingleOfflinePageItemResult( 393 void OfflinePageModelImplTest::OnGetSingleOfflinePageItemResult(
393 const OfflinePageItem** storage, 394 std::unique_ptr<OfflinePageItem>* storage,
394 const OfflinePageItem* result) { 395 const OfflinePageItem* result) {
395 *storage = result; 396 if (result == nullptr) {
397 storage->reset(nullptr);
398 return;
399 }
400
401 *storage = base::MakeUnique<OfflinePageItem>(*result);
396 } 402 }
397 403
398 void OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult( 404 void OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult(
399 MultipleOfflinePageItemResult* storage, 405 MultipleOfflinePageItemResult* storage,
400 const MultipleOfflinePageItemResult& result) { 406 const MultipleOfflinePageItemResult& result) {
401 *storage = result; 407 *storage = result;
402 } 408 }
403 409
404 void OfflinePageModelImplTest::OnPagesExpired(bool result) { 410 void OfflinePageModelImplTest::OnPagesExpired(bool result) {
405 last_expire_page_result_ = result; 411 last_expire_page_result_ = result;
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 EXPECT_EQ(DeletePageResult::STORE_FAILURE, last_delete_result()); 774 EXPECT_EQ(DeletePageResult::STORE_FAILURE, last_delete_result());
769 } 775 }
770 776
771 TEST_F(OfflinePageModelImplTest, DetectThatOfflineCopyIsMissing) { 777 TEST_F(OfflinePageModelImplTest, DetectThatOfflineCopyIsMissing) {
772 // Save a page. 778 // Save a page.
773 SavePage(kTestUrl, kTestClientId1); 779 SavePage(kTestUrl, kTestClientId1);
774 int64_t offline_id = last_save_offline_id(); 780 int64_t offline_id = last_save_offline_id();
775 781
776 ResetResults(); 782 ResetResults();
777 783
778 const OfflinePageItem* page = GetPageByOfflineId(offline_id); 784 std::unique_ptr<OfflinePageItem> page = GetPageByOfflineId(offline_id);
779 785
780 // Delete the offline copy of the page. 786 // Delete the offline copy of the page.
781 base::DeleteFile(page->file_path, false); 787 base::DeleteFile(page->file_path, false);
782 788
783 // Resetting the model will cause a consistency check. 789 // Resetting the model will cause a consistency check.
784 ResetModel(); 790 ResetModel();
785 791
786 PumpLoop(); 792 PumpLoop();
787 793
788 // Check if the page has been expired. 794 // Check if the page has been expired.
789 EXPECT_EQ(0UL, GetAllPages().size()); 795 EXPECT_EQ(0UL, GetAllPages().size());
790 } 796 }
791 797
792 TEST_F(OfflinePageModelImplTest, DetectThatOfflineCopyIsMissingAfterLoad) { 798 TEST_F(OfflinePageModelImplTest, DetectThatOfflineCopyIsMissingAfterLoad) {
793 // Save a page. 799 // Save a page.
794 SavePage(kTestUrl, kTestClientId1); 800 SavePage(kTestUrl, kTestClientId1);
795 PumpLoop(); 801 PumpLoop();
796 int64_t offline_id = last_save_offline_id(); 802 int64_t offline_id = last_save_offline_id();
797 803
798 ResetResults(); 804 ResetResults();
799 805
800 const OfflinePageItem* page = GetPageByOfflineId(offline_id); 806 std::unique_ptr<OfflinePageItem> page = GetPageByOfflineId(offline_id);
801 // Delete the offline copy of the page and check the metadata. 807 // Delete the offline copy of the page and check the metadata.
802 base::DeleteFile(page->file_path, false); 808 base::DeleteFile(page->file_path, false);
803 // Reseting the model should trigger the metadata consistency check as well. 809 // Reseting the model should trigger the metadata consistency check as well.
804 ResetModel(); 810 ResetModel();
805 PumpLoop(); 811 PumpLoop();
806 812
807 // Check if the page has been expired. 813 // Check if the page has been expired.
808 EXPECT_EQ(0UL, GetAllPages().size()); 814 EXPECT_EQ(0UL, GetAllPages().size());
809 } 815 }
810 816
811 TEST_F(OfflinePageModelImplTest, DetectThatHeadlessPageIsDeleted) { 817 TEST_F(OfflinePageModelImplTest, DetectThatHeadlessPageIsDeleted) {
812 // Save a page. 818 // Save a page.
813 SavePage(kTestUrl, kTestClientId1); 819 SavePage(kTestUrl, kTestClientId1);
814 PumpLoop(); 820 PumpLoop();
815 int64_t offline_id = last_save_offline_id(); 821 int64_t offline_id = last_save_offline_id();
816 822
817 ResetResults(); 823 ResetResults();
818 const OfflinePageItem* page = GetPageByOfflineId(offline_id); 824 std::unique_ptr<OfflinePageItem> page = GetPageByOfflineId(offline_id);
819 base::FilePath path = page->file_path; 825 base::FilePath path = page->file_path;
820 EXPECT_TRUE(base::PathExists(path)); 826 EXPECT_TRUE(base::PathExists(path));
821 GetStore()->ClearAllPages(); 827 GetStore()->ClearAllPages();
822 828
823 EXPECT_TRUE(base::PathExists(path)); 829 EXPECT_TRUE(base::PathExists(path));
824 // Since we've manually changed the store, we have to reload the model to 830 // Since we've manually changed the store, we have to reload the model to
825 // actually refresh the in-memory copy in model. Otherwise GetAllPages() would 831 // actually refresh the in-memory copy in model. Otherwise GetAllPages() would
826 // still have the page we saved above. 832 // still have the page we saved above.
827 ResetModel(); 833 ResetModel();
828 PumpLoop(); 834 PumpLoop();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); 880 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result());
875 EXPECT_EQ(1u, store->GetAllPages().size()); 881 EXPECT_EQ(1u, store->GetAllPages().size());
876 } 882 }
877 883
878 TEST_F(OfflinePageModelImplTest, GetPageByOfflineId) { 884 TEST_F(OfflinePageModelImplTest, GetPageByOfflineId) {
879 SavePage(kTestUrl, kTestClientId1); 885 SavePage(kTestUrl, kTestClientId1);
880 int64_t offline1 = last_save_offline_id(); 886 int64_t offline1 = last_save_offline_id();
881 SavePage(kTestUrl2, kTestClientId2); 887 SavePage(kTestUrl2, kTestClientId2);
882 int64_t offline2 = last_save_offline_id(); 888 int64_t offline2 = last_save_offline_id();
883 889
884 const OfflinePageItem* page = GetPageByOfflineId(offline1); 890 std::unique_ptr<OfflinePageItem> page = GetPageByOfflineId(offline1);
885 EXPECT_TRUE(page); 891 ASSERT_NE(nullptr, page);
fgorski 2016/10/26 18:05:41 shouldn't comparisons to nullptr be combined with
dewittj 2016/10/27 22:49:17 http://en.cppreference.com/w/cpp/memory/unique_ptr
fgorski 2016/10/28 02:40:39 OK, I was looking for that an couldn't find. Had I
886 EXPECT_EQ(kTestUrl, page->url); 892 EXPECT_EQ(kTestUrl, page->url);
887 EXPECT_EQ(kTestClientId1, page->client_id); 893 EXPECT_EQ(kTestClientId1, page->client_id);
888 EXPECT_EQ(kTestFileSize, page->file_size); 894 EXPECT_EQ(kTestFileSize, page->file_size);
889 895
890 page = GetPageByOfflineId(offline2); 896 page = GetPageByOfflineId(offline2);
891 EXPECT_TRUE(page); 897 ASSERT_NE(nullptr, page);
892 EXPECT_EQ(kTestUrl2, page->url); 898 EXPECT_EQ(kTestUrl2, page->url);
893 EXPECT_EQ(kTestClientId2, page->client_id); 899 EXPECT_EQ(kTestClientId2, page->client_id);
894 EXPECT_EQ(kTestFileSize, page->file_size); 900 EXPECT_EQ(kTestFileSize, page->file_size);
895 901
896 page = GetPageByOfflineId(-42); 902 page = GetPageByOfflineId(-42);
897 EXPECT_FALSE(page); 903 ASSERT_EQ(nullptr, page);
898 } 904 }
899 905
900 TEST_F(OfflinePageModelImplTest, GetPagesByOnlineURL) { 906 TEST_F(OfflinePageModelImplTest, GetPagesByOnlineURL) {
901 SavePage(kTestUrl, kTestClientId1); 907 SavePage(kTestUrl, kTestClientId1);
902 SavePage(kTestUrl2, kTestClientId2); 908 SavePage(kTestUrl2, kTestClientId2);
903 909
904 MultipleOfflinePageItemResult pages = GetPagesByOnlineURL(kTestUrl2); 910 MultipleOfflinePageItemResult pages = GetPagesByOnlineURL(kTestUrl2);
905 EXPECT_EQ(1U, pages.size()); 911 EXPECT_EQ(1U, pages.size());
906 EXPECT_EQ(kTestUrl2, pages[0].url); 912 EXPECT_EQ(kTestUrl2, pages[0].url);
907 EXPECT_EQ(kTestClientId2, pages[0].client_id); 913 EXPECT_EQ(kTestClientId2, pages[0].client_id);
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1238 // Check if feature is correctly enabled by command-line flag. 1244 // Check if feature is correctly enabled by command-line flag.
1239 scoped_feature_list.reset(new base::test::ScopedFeatureList); 1245 scoped_feature_list.reset(new base::test::ScopedFeatureList);
1240 scoped_feature_list->InitFromCommandLine( 1246 scoped_feature_list->InitFromCommandLine(
1241 std::string(kOfflineBookmarksFeature.name) + "," + 1247 std::string(kOfflineBookmarksFeature.name) + "," +
1242 kOfflinePagesSharingFeature.name, 1248 kOfflinePagesSharingFeature.name,
1243 ""); 1249 "");
1244 EXPECT_TRUE(offline_pages::IsOfflinePagesSharingEnabled()); 1250 EXPECT_TRUE(offline_pages::IsOfflinePagesSharingEnabled());
1245 } 1251 }
1246 1252
1247 } // namespace offline_pages 1253 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698