| OLD | NEW |
| 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 #include "chrome/browser/browsing_data/browsing_data_helper.h" | 5 #include "chrome/browser/browsing_data/browsing_data_helper.h" |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "chrome/common/url_constants.h" | 8 #include "chrome/common/url_constants.h" |
| 9 #include "extensions/common/constants.h" | 9 #include "extensions/common/constants.h" |
| 10 #include "extensions/features/features.h" | 10 #include "extensions/features/features.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 #include "url/gurl.h" | 12 #include "url/gurl.h" |
| 13 #include "url/url_constants.h" | 13 #include "url/url_constants.h" |
| 14 | 14 |
| 15 #if BUILDFLAG(ENABLE_EXTENSIONS) | |
| 16 #include "chrome/browser/extensions/mock_extension_special_storage_policy.h" | |
| 17 #endif | |
| 18 | |
| 19 namespace { | 15 namespace { |
| 20 | 16 |
| 21 const char kTestOrigin1[] = "http://host1:1/"; | 17 const char kTestOrigin1[] = "http://host1:1/"; |
| 22 const char kTestOrigin2[] = "http://host2:1/"; | 18 const char kTestOrigin2[] = "http://host2:1/"; |
| 23 const char kTestOrigin3[] = "http://host3:1/"; | 19 const char kTestOrigin3[] = "http://host3:1/"; |
| 24 const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/"; | 20 const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/"; |
| 25 const char kTestOriginDevTools[] = "chrome-devtools://abcdefghijklmnopqrstuvw/"; | 21 const char kTestOriginDevTools[] = "chrome-devtools://abcdefghijklmnopqrstuvw/"; |
| 26 | 22 |
| 27 const GURL kOrigin1(kTestOrigin1); | 23 const GURL kOrigin1(kTestOrigin1); |
| 28 const GURL kOrigin2(kTestOrigin2); | 24 const GURL kOrigin2(kTestOrigin2); |
| 29 const GURL kOrigin3(kTestOrigin3); | 25 const GURL kOrigin3(kTestOrigin3); |
| 30 const GURL kOriginExt(kTestOriginExt); | 26 const GURL kOriginExt(kTestOriginExt); |
| 31 const GURL kOriginDevTools(kTestOriginDevTools); | 27 const GURL kOriginDevTools(kTestOriginDevTools); |
| 32 | 28 |
| 33 const int kExtension = BrowsingDataHelper::EXTENSION; | |
| 34 const int kProtected = BrowsingDataHelper::PROTECTED_WEB; | |
| 35 const int kUnprotected = BrowsingDataHelper::UNPROTECTED_WEB; | |
| 36 | |
| 37 class BrowsingDataHelperTest : public testing::Test { | 29 class BrowsingDataHelperTest : public testing::Test { |
| 38 public: | 30 public: |
| 39 BrowsingDataHelperTest() {} | 31 BrowsingDataHelperTest() {} |
| 40 ~BrowsingDataHelperTest() override {} | 32 ~BrowsingDataHelperTest() override {} |
| 41 | 33 |
| 42 bool IsWebScheme(const std::string& scheme) { | 34 bool IsWebScheme(const std::string& scheme) { |
| 43 GURL test(scheme + "://example.com"); | 35 GURL test(scheme + "://example.com"); |
| 44 return (BrowsingDataHelper::HasWebScheme(test) && | 36 return (BrowsingDataHelper::HasWebScheme(test) && |
| 45 BrowsingDataHelper::IsWebScheme(scheme)); | 37 BrowsingDataHelper::IsWebScheme(scheme)); |
| 46 } | 38 } |
| 47 | 39 |
| 48 bool IsExtensionScheme(const std::string& scheme) { | 40 bool IsExtensionScheme(const std::string& scheme) { |
| 49 GURL test(scheme + "://example.com"); | 41 GURL test(scheme + "://example.com"); |
| 50 return (BrowsingDataHelper::HasExtensionScheme(test) && | 42 return (BrowsingDataHelper::HasExtensionScheme(test) && |
| 51 BrowsingDataHelper::IsExtensionScheme(scheme)); | 43 BrowsingDataHelper::IsExtensionScheme(scheme)); |
| 52 } | 44 } |
| 53 | 45 |
| 54 bool Match(const GURL& origin, | |
| 55 int mask, | |
| 56 storage::SpecialStoragePolicy* policy) { | |
| 57 return BrowsingDataHelper::DoesOriginMatchMask(origin, mask, policy); | |
| 58 } | |
| 59 | |
| 60 private: | 46 private: |
| 61 DISALLOW_COPY_AND_ASSIGN(BrowsingDataHelperTest); | 47 DISALLOW_COPY_AND_ASSIGN(BrowsingDataHelperTest); |
| 62 }; | 48 }; |
| 63 | 49 |
| 64 TEST_F(BrowsingDataHelperTest, WebStorageSchemesAreWebSchemes) { | 50 TEST_F(BrowsingDataHelperTest, WebStorageSchemesAreWebSchemes) { |
| 65 EXPECT_TRUE(IsWebScheme(url::kHttpScheme)); | 51 EXPECT_TRUE(IsWebScheme(url::kHttpScheme)); |
| 66 EXPECT_TRUE(IsWebScheme(url::kHttpsScheme)); | 52 EXPECT_TRUE(IsWebScheme(url::kHttpsScheme)); |
| 67 EXPECT_TRUE(IsWebScheme(url::kFileScheme)); | 53 EXPECT_TRUE(IsWebScheme(url::kFileScheme)); |
| 68 EXPECT_TRUE(IsWebScheme(url::kFtpScheme)); | 54 EXPECT_TRUE(IsWebScheme(url::kFtpScheme)); |
| 69 EXPECT_TRUE(IsWebScheme(url::kWsScheme)); | 55 EXPECT_TRUE(IsWebScheme(url::kWsScheme)); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 EXPECT_FALSE(IsWebScheme(url::kBlobScheme)); | 96 EXPECT_FALSE(IsWebScheme(url::kBlobScheme)); |
| 111 EXPECT_FALSE(IsExtensionScheme(url::kBlobScheme)); | 97 EXPECT_FALSE(IsExtensionScheme(url::kBlobScheme)); |
| 112 | 98 |
| 113 EXPECT_FALSE(IsWebScheme(url::kFileSystemScheme)); | 99 EXPECT_FALSE(IsWebScheme(url::kFileSystemScheme)); |
| 114 EXPECT_FALSE(IsExtensionScheme(url::kFileSystemScheme)); | 100 EXPECT_FALSE(IsExtensionScheme(url::kFileSystemScheme)); |
| 115 | 101 |
| 116 EXPECT_FALSE(IsWebScheme("invalid-scheme-i-just-made-up")); | 102 EXPECT_FALSE(IsWebScheme("invalid-scheme-i-just-made-up")); |
| 117 EXPECT_FALSE(IsExtensionScheme("invalid-scheme-i-just-made-up")); | 103 EXPECT_FALSE(IsExtensionScheme("invalid-scheme-i-just-made-up")); |
| 118 } | 104 } |
| 119 | 105 |
| 120 #if BUILDFLAG(ENABLE_EXTENSIONS) | |
| 121 TEST_F(BrowsingDataHelperTest, TestMatches) { | |
| 122 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = | |
| 123 new MockExtensionSpecialStoragePolicy; | |
| 124 // Protect kOrigin1. | |
| 125 mock_policy->AddProtected(kOrigin1.GetOrigin()); | |
| 126 | |
| 127 EXPECT_FALSE(Match(kOrigin1, kUnprotected, mock_policy.get())); | |
| 128 EXPECT_TRUE(Match(kOrigin2, kUnprotected, mock_policy.get())); | |
| 129 EXPECT_FALSE(Match(kOriginExt, kUnprotected, mock_policy.get())); | |
| 130 EXPECT_FALSE(Match(kOriginDevTools, kUnprotected, mock_policy.get())); | |
| 131 | |
| 132 EXPECT_TRUE(Match(kOrigin1, kProtected, mock_policy.get())); | |
| 133 EXPECT_FALSE(Match(kOrigin2, kProtected, mock_policy.get())); | |
| 134 EXPECT_FALSE(Match(kOriginExt, kProtected, mock_policy.get())); | |
| 135 EXPECT_FALSE(Match(kOriginDevTools, kProtected, mock_policy.get())); | |
| 136 | |
| 137 EXPECT_FALSE(Match(kOrigin1, kExtension, mock_policy.get())); | |
| 138 EXPECT_FALSE(Match(kOrigin2, kExtension, mock_policy.get())); | |
| 139 EXPECT_TRUE(Match(kOriginExt, kExtension, mock_policy.get())); | |
| 140 EXPECT_FALSE(Match(kOriginDevTools, kExtension, mock_policy.get())); | |
| 141 | |
| 142 EXPECT_TRUE(Match(kOrigin1, kUnprotected | kProtected, mock_policy.get())); | |
| 143 EXPECT_TRUE(Match(kOrigin2, kUnprotected | kProtected, mock_policy.get())); | |
| 144 EXPECT_FALSE(Match(kOriginExt, kUnprotected | kProtected, mock_policy.get())); | |
| 145 EXPECT_FALSE( | |
| 146 Match(kOriginDevTools, kUnprotected | kProtected, mock_policy.get())); | |
| 147 | |
| 148 EXPECT_FALSE(Match(kOrigin1, kUnprotected | kExtension, mock_policy.get())); | |
| 149 EXPECT_TRUE(Match(kOrigin2, kUnprotected | kExtension, mock_policy.get())); | |
| 150 EXPECT_TRUE(Match(kOriginExt, kUnprotected | kExtension, mock_policy.get())); | |
| 151 EXPECT_FALSE( | |
| 152 Match(kOriginDevTools, kUnprotected | kExtension, mock_policy.get())); | |
| 153 | |
| 154 EXPECT_TRUE(Match(kOrigin1, kProtected | kExtension, mock_policy.get())); | |
| 155 EXPECT_FALSE(Match(kOrigin2, kProtected | kExtension, mock_policy.get())); | |
| 156 EXPECT_TRUE(Match(kOriginExt, kProtected | kExtension, mock_policy.get())); | |
| 157 EXPECT_FALSE( | |
| 158 Match(kOriginDevTools, kProtected | kExtension, mock_policy.get())); | |
| 159 | |
| 160 EXPECT_TRUE(Match( | |
| 161 kOrigin1, kUnprotected | kProtected | kExtension, mock_policy.get())); | |
| 162 EXPECT_TRUE(Match( | |
| 163 kOrigin2, kUnprotected | kProtected | kExtension, mock_policy.get())); | |
| 164 EXPECT_TRUE(Match( | |
| 165 kOriginExt, kUnprotected | kProtected | kExtension, mock_policy.get())); | |
| 166 EXPECT_FALSE(Match(kOriginDevTools, | |
| 167 kUnprotected | kProtected | kExtension, | |
| 168 mock_policy.get())); | |
| 169 } | |
| 170 #endif | |
| 171 | |
| 172 // If extensions are disabled, there is no policy. | |
| 173 TEST_F(BrowsingDataHelperTest, TestNoPolicyMatches) { | |
| 174 EXPECT_FALSE(Match(kOrigin1, kExtension, nullptr)); | |
| 175 EXPECT_TRUE(Match(kOrigin1, kUnprotected, nullptr)); | |
| 176 EXPECT_FALSE(Match(kOrigin1, kProtected, nullptr)); | |
| 177 | |
| 178 EXPECT_TRUE(Match(kOriginExt, kExtension, nullptr)); | |
| 179 EXPECT_FALSE(Match(kOriginExt, kUnprotected, nullptr)); | |
| 180 EXPECT_FALSE(Match(kOriginExt, kProtected, nullptr)); | |
| 181 | |
| 182 EXPECT_FALSE(Match(kOriginDevTools, kExtension, nullptr)); | |
| 183 EXPECT_FALSE(Match(kOriginDevTools, kUnprotected, nullptr)); | |
| 184 EXPECT_FALSE(Match(kOriginDevTools, kProtected, nullptr)); | |
| 185 } | |
| 186 | |
| 187 } // namespace | 106 } // namespace |
| OLD | NEW |