123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- // Copyright 2019 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "components/offline_pages/core/page_criteria.h"
- #include "base/bind.h"
- #include "components/offline_pages/core/client_namespace_constants.h"
- #include "components/offline_pages/core/offline_page_item.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace offline_pages {
- namespace {
- GURL TestURL() {
- return GURL("http://someurl.com");
- }
- GURL OtherURL() {
- return GURL("http://other.com");
- }
- GURL TestURLWithFragment() {
- return GURL("http://someurl.com#fragment");
- }
- class PageCriteriaTest : public testing::Test {
- };
- TEST_F(PageCriteriaTest, MeetsCriteria_Url) {
- PageCriteria criteria;
- criteria.url = TestURL();
- OfflinePageItem item;
- item.url = TestURLWithFragment();
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.url = TestURL();
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.url = OtherURL();
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_UrlWithFragment) {
- PageCriteria criteria;
- criteria.url = TestURLWithFragment();
- OfflinePageItem item;
- item.url = TestURLWithFragment();
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.url = TestURL();
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.url = OtherURL();
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_ExcludeTabBoundPages) {
- PageCriteria criteria;
- criteria.exclude_tab_bound_pages = true;
- OfflinePageItem item;
- item.client_id.name_space = kLastNNamespace;
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.client_id.name_space = "";
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.client_id.name_space = kDownloadNamespace;
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_PagesForTabId) {
- PageCriteria criteria;
- criteria.pages_for_tab_id = 0;
- OfflinePageItem item;
- item.client_id.id = "0";
- item.client_id.name_space = kLastNNamespace;
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- // Namespace not restricted to tab.
- item.client_id.id = "1";
- item.client_id.name_space = kDownloadNamespace;
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- // Different tab id.
- item.client_id.id = "1";
- item.client_id.name_space = kLastNNamespace;
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_SupportedByDownloads) {
- PageCriteria criteria;
- criteria.supported_by_downloads = true;
- OfflinePageItem item;
- item.client_id.name_space = kDownloadNamespace;
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- EXPECT_TRUE(MeetsCriteria(criteria, item.client_id));
- item.client_id.name_space = kLastNNamespace;
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- EXPECT_FALSE(MeetsCriteria(criteria, item.client_id));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_PersistentLifetime) {
- PageCriteria criteria;
- criteria.lifetime_type = LifetimeType::PERSISTENT;
- OfflinePageItem item;
- item.client_id.name_space = kDownloadNamespace;
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- EXPECT_TRUE(MeetsCriteria(criteria, item.client_id));
- item.client_id.name_space = kLastNNamespace;
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- EXPECT_FALSE(MeetsCriteria(criteria, item.client_id));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_TemporaryLifetime) {
- PageCriteria criteria;
- criteria.lifetime_type = LifetimeType::TEMPORARY;
- OfflinePageItem item;
- item.client_id.name_space = kLastNNamespace;
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- EXPECT_TRUE(MeetsCriteria(criteria, item.client_id));
- item.client_id.name_space = kDownloadNamespace;
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- EXPECT_FALSE(MeetsCriteria(criteria, item.client_id));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_FileSize) {
- PageCriteria criteria;
- criteria.file_size = 123;
- OfflinePageItem item;
- item.file_size = 123;
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.file_size = 124;
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.file_size = 0;
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_Digest) {
- PageCriteria criteria;
- criteria.digest = "abc";
- OfflinePageItem item;
- item.digest = "abc";
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.digest = "";
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.digest = "def";
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_Namespaces) {
- PageCriteria criteria;
- criteria.client_namespaces = std::vector<std::string>{"namespace1"};
- OfflinePageItem item;
- item.client_id.name_space = "namespace1";
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- EXPECT_TRUE(MeetsCriteria(criteria, item.client_id));
- item.client_id.name_space = "namespace2";
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- EXPECT_FALSE(MeetsCriteria(criteria, item.client_id));
- item.client_id.name_space = "";
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- EXPECT_FALSE(MeetsCriteria(criteria, item.client_id));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_MultipleNamespaces) {
- PageCriteria criteria;
- criteria.client_namespaces =
- std::vector<std::string>{"namespace1", "foobar1"};
- OfflinePageItem item;
- item.client_id.name_space = "namespace1";
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.client_id.name_space = "foobar1";
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.client_id.name_space = "namespace";
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.client_id.name_space = "foobar";
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.client_id.name_space = "";
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_ClientId) {
- PageCriteria criteria;
- criteria.client_ids = std::vector<ClientId>{ClientId("namespace1", "id")};
- OfflinePageItem item;
- item.client_id = ClientId("namespace1", "id");
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.client_id = ClientId("namespace2", "id");
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.client_id = ClientId("namespace1", "id2");
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.client_id = ClientId();
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_MultipleClientId) {
- PageCriteria criteria;
- criteria.client_ids = std::vector<ClientId>{ClientId("namespace1", "id"),
- ClientId("namespace2", "id"),
- ClientId("namespace3", "id3")};
- OfflinePageItem item;
- item.client_id = ClientId("namespace1", "id");
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.client_id = ClientId("namespace2", "id");
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.client_id = ClientId("namespace3", "id3");
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.client_id = ClientId("namespace", "i");
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.client_id = ClientId("namespace", "");
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.client_id = ClientId("name", "id");
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.client_id = ClientId("namespace", "foo");
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_Guid) {
- PageCriteria criteria;
- criteria.guid = "abc";
- OfflinePageItem item;
- item.client_id = ClientId("namespace", "abc");
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.client_id = ClientId("namespace2", "abc");
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.client_id = ClientId("namespace", "abcd");
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.client_id = ClientId();
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_RequestOrigin) {
- PageCriteria criteria;
- criteria.request_origin = "abc";
- OfflinePageItem item;
- item.request_origin = "abc";
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.request_origin = "abcd";
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- item.request_origin = "";
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_OfflineId) {
- PageCriteria criteria;
- criteria.offline_ids = std::vector<int64_t>{1, 5};
- OfflinePageItem item;
- item.offline_id = 5;
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.offline_id = 4;
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- TEST_F(PageCriteriaTest, MeetsCriteria_AdditionalCriteria) {
- PageCriteria criteria;
- criteria.additional_criteria = base::BindRepeating(
- [](const OfflinePageItem& item) { return item.offline_id == 5; });
- OfflinePageItem item;
- item.offline_id = 5;
- EXPECT_TRUE(MeetsCriteria(criteria, item));
- item.offline_id = 4;
- EXPECT_FALSE(MeetsCriteria(criteria, item));
- }
- } // namespace
- } // namespace offline_pages
|