| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/client_policy_controller.h" | 5 #include "components/offline_pages/client_policy_controller.h" |
| 6 | 6 |
| 7 #include <algorithm> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| 9 #include "components/offline_pages/client_namespace_constants.h" | 11 #include "components/offline_pages/client_namespace_constants.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 11 | 13 |
| 12 using LifetimeType = offline_pages::LifetimePolicy::LifetimeType; | 14 using LifetimeType = offline_pages::LifetimePolicy::LifetimeType; |
| 13 | 15 |
| 14 namespace offline_pages { | 16 namespace offline_pages { |
| 15 | 17 |
| 16 namespace { | 18 namespace { |
| 17 const char kUndefinedNamespace[] = "undefined"; | 19 const char kUndefinedNamespace[] = "undefined"; |
| 18 | 20 |
| 19 bool isTemporary(const OfflinePageClientPolicy& policy) { | 21 bool isTemporary(const OfflinePageClientPolicy& policy) { |
| 20 return policy.lifetime_policy.lifetime_type == LifetimeType::TEMPORARY; | 22 return policy.lifetime_policy.lifetime_type == LifetimeType::TEMPORARY; |
| 21 } | 23 } |
| 22 } // namespace | 24 } // namespace |
| 23 | 25 |
| 24 class ClientPolicyControllerTest : public testing::Test { | 26 class ClientPolicyControllerTest : public testing::Test { |
| 25 public: | 27 public: |
| 26 ClientPolicyController* controller() { return controller_.get(); } | 28 ClientPolicyController* controller() { return controller_.get(); } |
| 27 | 29 |
| 28 // testing::Test | 30 // testing::Test |
| 29 void SetUp() override; | 31 void SetUp() override; |
| 30 void TearDown() override; | 32 void TearDown() override; |
| 31 | 33 |
| 34 protected: |
| 35 void ExpectDownloadSupport(std::string name_space, bool expectation); |
| 36 void ExpectRecentTab(std::string name_space, bool expectation); |
| 37 void ExpectOnlyOriginalTab(std::string name_space, bool expectation); |
| 38 |
| 32 private: | 39 private: |
| 33 std::unique_ptr<ClientPolicyController> controller_; | 40 std::unique_ptr<ClientPolicyController> controller_; |
| 34 }; | 41 }; |
| 35 | 42 |
| 36 void ClientPolicyControllerTest::SetUp() { | 43 void ClientPolicyControllerTest::SetUp() { |
| 37 controller_.reset(new ClientPolicyController()); | 44 controller_.reset(new ClientPolicyController()); |
| 38 } | 45 } |
| 39 | 46 |
| 40 void ClientPolicyControllerTest::TearDown() { | 47 void ClientPolicyControllerTest::TearDown() { |
| 41 controller_.reset(); | 48 controller_.reset(); |
| 42 } | 49 } |
| 43 | 50 |
| 51 void ClientPolicyControllerTest::ExpectDownloadSupport(std::string name_space, |
| 52 bool expectation) { |
| 53 std::vector<std::string> cache = |
| 54 controller()->GetNamespacesSupportedByDownload(); |
| 55 auto result = std::find(cache.begin(), cache.end(), name_space); |
| 56 EXPECT_EQ(expectation, result != cache.end()); |
| 57 EXPECT_EQ(expectation, controller()->IsSupportedByDownload(name_space)); |
| 58 } |
| 59 |
| 60 void ClientPolicyControllerTest::ExpectRecentTab(std::string name_space, |
| 61 bool expectation) { |
| 62 std::vector<std::string> cache = |
| 63 controller()->GetNamespacesShownAsRecentlyVisitedSite(); |
| 64 auto result = std::find(cache.begin(), cache.end(), name_space); |
| 65 EXPECT_EQ(expectation, result != cache.end()); |
| 66 EXPECT_EQ(expectation, |
| 67 controller()->IsShownAsRecentlyVisitedSite(name_space)); |
| 68 } |
| 69 |
| 70 void ClientPolicyControllerTest::ExpectOnlyOriginalTab(std::string name_space, |
| 71 bool expectation) { |
| 72 std::vector<std::string> cache = |
| 73 controller()->GetNamespacesRestrictedToOriginalTab(); |
| 74 auto result = std::find(cache.begin(), cache.end(), name_space); |
| 75 EXPECT_EQ(expectation, result != cache.end()); |
| 76 EXPECT_EQ(expectation, controller()->IsRestrictedToOriginalTab(name_space)); |
| 77 } |
| 78 |
| 44 TEST_F(ClientPolicyControllerTest, FallbackTest) { | 79 TEST_F(ClientPolicyControllerTest, FallbackTest) { |
| 45 OfflinePageClientPolicy policy = controller()->GetPolicy(kUndefinedNamespace); | 80 OfflinePageClientPolicy policy = controller()->GetPolicy(kUndefinedNamespace); |
| 46 EXPECT_EQ(policy.name_space, kDefaultNamespace); | 81 EXPECT_EQ(policy.name_space, kDefaultNamespace); |
| 47 EXPECT_TRUE(isTemporary(policy)); | 82 EXPECT_TRUE(isTemporary(policy)); |
| 48 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kUndefinedNamespace)); | 83 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kUndefinedNamespace)); |
| 49 EXPECT_FALSE(controller()->IsSupportedByDownload(kUndefinedNamespace)); | 84 ExpectDownloadSupport(kUndefinedNamespace, false); |
| 85 ExpectRecentTab(kUndefinedNamespace, false); |
| 86 ExpectOnlyOriginalTab(kUndefinedNamespace, false); |
| 50 } | 87 } |
| 51 | 88 |
| 52 TEST_F(ClientPolicyControllerTest, CheckBookmarkDefined) { | 89 TEST_F(ClientPolicyControllerTest, CheckBookmarkDefined) { |
| 53 OfflinePageClientPolicy policy = controller()->GetPolicy(kBookmarkNamespace); | 90 OfflinePageClientPolicy policy = controller()->GetPolicy(kBookmarkNamespace); |
| 54 EXPECT_EQ(policy.name_space, kBookmarkNamespace); | 91 EXPECT_EQ(policy.name_space, kBookmarkNamespace); |
| 55 EXPECT_TRUE(isTemporary(policy)); | 92 EXPECT_TRUE(isTemporary(policy)); |
| 56 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kBookmarkNamespace)); | 93 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kBookmarkNamespace)); |
| 57 EXPECT_FALSE(controller()->IsSupportedByDownload(kBookmarkNamespace)); | 94 ExpectDownloadSupport(kBookmarkNamespace, false); |
| 95 ExpectRecentTab(kBookmarkNamespace, false); |
| 96 ExpectOnlyOriginalTab(kBookmarkNamespace, false); |
| 58 } | 97 } |
| 59 | 98 |
| 60 TEST_F(ClientPolicyControllerTest, CheckLastNDefined) { | 99 TEST_F(ClientPolicyControllerTest, CheckLastNDefined) { |
| 61 OfflinePageClientPolicy policy = controller()->GetPolicy(kLastNNamespace); | 100 OfflinePageClientPolicy policy = controller()->GetPolicy(kLastNNamespace); |
| 62 EXPECT_EQ(policy.name_space, kLastNNamespace); | 101 EXPECT_EQ(policy.name_space, kLastNNamespace); |
| 63 EXPECT_TRUE(isTemporary(policy)); | 102 EXPECT_TRUE(isTemporary(policy)); |
| 64 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kLastNNamespace)); | 103 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kLastNNamespace)); |
| 65 EXPECT_FALSE(controller()->IsSupportedByDownload(kLastNNamespace)); | 104 ExpectDownloadSupport(kLastNNamespace, false); |
| 105 ExpectRecentTab(kLastNNamespace, true); |
| 106 ExpectOnlyOriginalTab(kLastNNamespace, true); |
| 66 } | 107 } |
| 67 | 108 |
| 68 TEST_F(ClientPolicyControllerTest, CheckAsyncDefined) { | 109 TEST_F(ClientPolicyControllerTest, CheckAsyncDefined) { |
| 69 OfflinePageClientPolicy policy = controller()->GetPolicy(kAsyncNamespace); | 110 OfflinePageClientPolicy policy = controller()->GetPolicy(kAsyncNamespace); |
| 70 EXPECT_EQ(policy.name_space, kAsyncNamespace); | 111 EXPECT_EQ(policy.name_space, kAsyncNamespace); |
| 71 EXPECT_FALSE(isTemporary(policy)); | 112 EXPECT_FALSE(isTemporary(policy)); |
| 72 EXPECT_FALSE(controller()->IsRemovedOnCacheReset(kAsyncNamespace)); | 113 EXPECT_FALSE(controller()->IsRemovedOnCacheReset(kAsyncNamespace)); |
| 73 EXPECT_TRUE(controller()->IsSupportedByDownload(kAsyncNamespace)); | 114 ExpectDownloadSupport(kAsyncNamespace, true); |
| 115 ExpectRecentTab(kAsyncNamespace, false); |
| 116 ExpectOnlyOriginalTab(kAsyncNamespace, false); |
| 74 } | 117 } |
| 75 | 118 |
| 76 TEST_F(ClientPolicyControllerTest, CheckCCTDefined) { | 119 TEST_F(ClientPolicyControllerTest, CheckCCTDefined) { |
| 77 OfflinePageClientPolicy policy = controller()->GetPolicy(kCCTNamespace); | 120 OfflinePageClientPolicy policy = controller()->GetPolicy(kCCTNamespace); |
| 78 EXPECT_EQ(policy.name_space, kCCTNamespace); | 121 EXPECT_EQ(policy.name_space, kCCTNamespace); |
| 79 EXPECT_TRUE(isTemporary(policy)); | 122 EXPECT_TRUE(isTemporary(policy)); |
| 80 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kCCTNamespace)); | 123 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kCCTNamespace)); |
| 81 EXPECT_FALSE(controller()->IsSupportedByDownload(kCCTNamespace)); | 124 ExpectDownloadSupport(kCCTNamespace, false); |
| 125 ExpectRecentTab(kCCTNamespace, false); |
| 126 ExpectOnlyOriginalTab(kCCTNamespace, false); |
| 82 } | 127 } |
| 83 | 128 |
| 84 TEST_F(ClientPolicyControllerTest, CheckDownloadDefined) { | 129 TEST_F(ClientPolicyControllerTest, CheckDownloadDefined) { |
| 85 OfflinePageClientPolicy policy = controller()->GetPolicy(kDownloadNamespace); | 130 OfflinePageClientPolicy policy = controller()->GetPolicy(kDownloadNamespace); |
| 86 EXPECT_EQ(policy.name_space, kDownloadNamespace); | 131 EXPECT_EQ(policy.name_space, kDownloadNamespace); |
| 87 EXPECT_FALSE(isTemporary(policy)); | 132 EXPECT_FALSE(isTemporary(policy)); |
| 88 EXPECT_FALSE(controller()->IsRemovedOnCacheReset(kDownloadNamespace)); | 133 EXPECT_FALSE(controller()->IsRemovedOnCacheReset(kDownloadNamespace)); |
| 89 EXPECT_TRUE(controller()->IsSupportedByDownload(kDownloadNamespace)); | 134 ExpectDownloadSupport(kDownloadNamespace, true); |
| 135 ExpectRecentTab(kDownloadNamespace, false); |
| 136 ExpectOnlyOriginalTab(kDownloadNamespace, false); |
| 90 } | 137 } |
| 91 | 138 |
| 92 TEST_F(ClientPolicyControllerTest, CheckNTPSuggestionsDefined) { | 139 TEST_F(ClientPolicyControllerTest, CheckNTPSuggestionsDefined) { |
| 93 OfflinePageClientPolicy policy = | 140 OfflinePageClientPolicy policy = |
| 94 controller()->GetPolicy(kNTPSuggestionsNamespace); | 141 controller()->GetPolicy(kNTPSuggestionsNamespace); |
| 95 EXPECT_EQ(policy.name_space, kNTPSuggestionsNamespace); | 142 EXPECT_EQ(policy.name_space, kNTPSuggestionsNamespace); |
| 96 EXPECT_FALSE(isTemporary(policy)); | 143 EXPECT_FALSE(isTemporary(policy)); |
| 97 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kNTPSuggestionsNamespace)); | 144 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kNTPSuggestionsNamespace)); |
| 98 EXPECT_FALSE(controller()->IsSupportedByDownload(kNTPSuggestionsNamespace)); | 145 ExpectDownloadSupport(kNTPSuggestionsNamespace, false); |
| 146 ExpectRecentTab(kNTPSuggestionsNamespace, false); |
| 147 ExpectOnlyOriginalTab(kNTPSuggestionsNamespace, false); |
| 99 } | 148 } |
| 100 | 149 |
| 101 } // namespace offline_pages | 150 } // namespace offline_pages |
| OLD | NEW |