| 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()->GetNamespacesWithDownloadSupport(); |
| 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 = controller()->GetNamespacesForRecentTabs(); |
| 63 auto result = std::find(cache.begin(), cache.end(), name_space); |
| 64 EXPECT_EQ(expectation, result != cache.end()); |
| 65 EXPECT_EQ(expectation, controller()->IsRecentTab(name_space)); |
| 66 } |
| 67 |
| 68 void ClientPolicyControllerTest::ExpectOnlyOriginalTab(std::string name_space, |
| 69 bool expectation) { |
| 70 std::vector<std::string> cache = |
| 71 controller()->GetNamespacesToShowInOriginalTab(); |
| 72 auto result = std::find(cache.begin(), cache.end(), name_space); |
| 73 EXPECT_EQ(expectation, result != cache.end()); |
| 74 EXPECT_EQ(expectation, |
| 75 controller()->ShouldOnlyBeShownInOriginalTab(name_space)); |
| 76 } |
| 77 |
| 44 TEST_F(ClientPolicyControllerTest, FallbackTest) { | 78 TEST_F(ClientPolicyControllerTest, FallbackTest) { |
| 45 OfflinePageClientPolicy policy = controller()->GetPolicy(kUndefinedNamespace); | 79 OfflinePageClientPolicy policy = controller()->GetPolicy(kUndefinedNamespace); |
| 46 EXPECT_EQ(policy.name_space, kDefaultNamespace); | 80 EXPECT_EQ(policy.name_space, kDefaultNamespace); |
| 47 EXPECT_TRUE(isTemporary(policy)); | 81 EXPECT_TRUE(isTemporary(policy)); |
| 48 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kUndefinedNamespace)); | 82 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kUndefinedNamespace)); |
| 49 EXPECT_FALSE(controller()->IsSupportedByDownload(kUndefinedNamespace)); | 83 ExpectDownloadSupport(kUndefinedNamespace, false); |
| 84 ExpectRecentTab(kUndefinedNamespace, false); |
| 85 ExpectOnlyOriginalTab(kUndefinedNamespace, false); |
| 50 } | 86 } |
| 51 | 87 |
| 52 TEST_F(ClientPolicyControllerTest, CheckBookmarkDefined) { | 88 TEST_F(ClientPolicyControllerTest, CheckBookmarkDefined) { |
| 53 OfflinePageClientPolicy policy = controller()->GetPolicy(kBookmarkNamespace); | 89 OfflinePageClientPolicy policy = controller()->GetPolicy(kBookmarkNamespace); |
| 54 EXPECT_EQ(policy.name_space, kBookmarkNamespace); | 90 EXPECT_EQ(policy.name_space, kBookmarkNamespace); |
| 55 EXPECT_TRUE(isTemporary(policy)); | 91 EXPECT_TRUE(isTemporary(policy)); |
| 56 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kBookmarkNamespace)); | 92 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kBookmarkNamespace)); |
| 57 EXPECT_FALSE(controller()->IsSupportedByDownload(kBookmarkNamespace)); | 93 ExpectDownloadSupport(kBookmarkNamespace, false); |
| 94 ExpectRecentTab(kBookmarkNamespace, false); |
| 95 ExpectOnlyOriginalTab(kBookmarkNamespace, false); |
| 58 } | 96 } |
| 59 | 97 |
| 60 TEST_F(ClientPolicyControllerTest, CheckLastNDefined) { | 98 TEST_F(ClientPolicyControllerTest, CheckLastNDefined) { |
| 61 OfflinePageClientPolicy policy = controller()->GetPolicy(kLastNNamespace); | 99 OfflinePageClientPolicy policy = controller()->GetPolicy(kLastNNamespace); |
| 62 EXPECT_EQ(policy.name_space, kLastNNamespace); | 100 EXPECT_EQ(policy.name_space, kLastNNamespace); |
| 63 EXPECT_TRUE(isTemporary(policy)); | 101 EXPECT_TRUE(isTemporary(policy)); |
| 64 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kLastNNamespace)); | 102 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kLastNNamespace)); |
| 65 EXPECT_FALSE(controller()->IsSupportedByDownload(kLastNNamespace)); | 103 ExpectDownloadSupport(kLastNNamespace, false); |
| 104 ExpectRecentTab(kLastNNamespace, true); |
| 105 ExpectOnlyOriginalTab(kLastNNamespace, true); |
| 66 } | 106 } |
| 67 | 107 |
| 68 TEST_F(ClientPolicyControllerTest, CheckAsyncDefined) { | 108 TEST_F(ClientPolicyControllerTest, CheckAsyncDefined) { |
| 69 OfflinePageClientPolicy policy = controller()->GetPolicy(kAsyncNamespace); | 109 OfflinePageClientPolicy policy = controller()->GetPolicy(kAsyncNamespace); |
| 70 EXPECT_EQ(policy.name_space, kAsyncNamespace); | 110 EXPECT_EQ(policy.name_space, kAsyncNamespace); |
| 71 EXPECT_FALSE(isTemporary(policy)); | 111 EXPECT_FALSE(isTemporary(policy)); |
| 72 EXPECT_FALSE(controller()->IsRemovedOnCacheReset(kAsyncNamespace)); | 112 EXPECT_FALSE(controller()->IsRemovedOnCacheReset(kAsyncNamespace)); |
| 73 EXPECT_TRUE(controller()->IsSupportedByDownload(kAsyncNamespace)); | 113 ExpectDownloadSupport(kAsyncNamespace, true); |
| 114 ExpectRecentTab(kAsyncNamespace, false); |
| 115 ExpectOnlyOriginalTab(kAsyncNamespace, false); |
| 74 } | 116 } |
| 75 | 117 |
| 76 TEST_F(ClientPolicyControllerTest, CheckCCTDefined) { | 118 TEST_F(ClientPolicyControllerTest, CheckCCTDefined) { |
| 77 OfflinePageClientPolicy policy = controller()->GetPolicy(kCCTNamespace); | 119 OfflinePageClientPolicy policy = controller()->GetPolicy(kCCTNamespace); |
| 78 EXPECT_EQ(policy.name_space, kCCTNamespace); | 120 EXPECT_EQ(policy.name_space, kCCTNamespace); |
| 79 EXPECT_TRUE(isTemporary(policy)); | 121 EXPECT_TRUE(isTemporary(policy)); |
| 80 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kCCTNamespace)); | 122 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kCCTNamespace)); |
| 81 EXPECT_FALSE(controller()->IsSupportedByDownload(kCCTNamespace)); | 123 ExpectDownloadSupport(kCCTNamespace, false); |
| 124 ExpectRecentTab(kCCTNamespace, false); |
| 125 ExpectOnlyOriginalTab(kCCTNamespace, false); |
| 82 } | 126 } |
| 83 | 127 |
| 84 TEST_F(ClientPolicyControllerTest, CheckDownloadDefined) { | 128 TEST_F(ClientPolicyControllerTest, CheckDownloadDefined) { |
| 85 OfflinePageClientPolicy policy = controller()->GetPolicy(kDownloadNamespace); | 129 OfflinePageClientPolicy policy = controller()->GetPolicy(kDownloadNamespace); |
| 86 EXPECT_EQ(policy.name_space, kDownloadNamespace); | 130 EXPECT_EQ(policy.name_space, kDownloadNamespace); |
| 87 EXPECT_FALSE(isTemporary(policy)); | 131 EXPECT_FALSE(isTemporary(policy)); |
| 88 EXPECT_FALSE(controller()->IsRemovedOnCacheReset(kDownloadNamespace)); | 132 EXPECT_FALSE(controller()->IsRemovedOnCacheReset(kDownloadNamespace)); |
| 89 EXPECT_TRUE(controller()->IsSupportedByDownload(kDownloadNamespace)); | 133 ExpectDownloadSupport(kDownloadNamespace, true); |
| 134 ExpectRecentTab(kDownloadNamespace, false); |
| 135 ExpectOnlyOriginalTab(kDownloadNamespace, false); |
| 90 } | 136 } |
| 91 | 137 |
| 92 TEST_F(ClientPolicyControllerTest, CheckNTPSuggestionsDefined) { | 138 TEST_F(ClientPolicyControllerTest, CheckNTPSuggestionsDefined) { |
| 93 OfflinePageClientPolicy policy = | 139 OfflinePageClientPolicy policy = |
| 94 controller()->GetPolicy(kNTPSuggestionsNamespace); | 140 controller()->GetPolicy(kNTPSuggestionsNamespace); |
| 95 EXPECT_EQ(policy.name_space, kNTPSuggestionsNamespace); | 141 EXPECT_EQ(policy.name_space, kNTPSuggestionsNamespace); |
| 96 EXPECT_FALSE(isTemporary(policy)); | 142 EXPECT_FALSE(isTemporary(policy)); |
| 97 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kNTPSuggestionsNamespace)); | 143 EXPECT_TRUE(controller()->IsRemovedOnCacheReset(kNTPSuggestionsNamespace)); |
| 98 EXPECT_FALSE(controller()->IsSupportedByDownload(kNTPSuggestionsNamespace)); | 144 ExpectDownloadSupport(kNTPSuggestionsNamespace, false); |
| 145 ExpectRecentTab(kNTPSuggestionsNamespace, false); |
| 146 ExpectOnlyOriginalTab(kNTPSuggestionsNamespace, false); |
| 99 } | 147 } |
| 100 | 148 |
| 101 } // namespace offline_pages | 149 } // namespace offline_pages |
| OLD | NEW |