OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/browsing_data_helper.h" | |
6 | |
7 #include "base/stringprintf.h" | |
8 #include "chrome/browser/extensions/mock_extension_special_storage_policy.h" | |
9 #include "chrome/common/url_constants.h" | |
10 #include "content/public/common/url_constants.h" | |
11 #include "googleurl/src/gurl.h" | |
12 #include "testing/gtest/include/gtest/gtest.h" | |
13 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" | |
14 | |
15 namespace { | |
16 | |
17 const char kTestOrigin1[] = "http://host1:1/"; | |
18 const char kTestOrigin2[] = "http://host2:1/"; | |
19 const char kTestOrigin3[] = "http://host3:1/"; | |
20 const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/"; | |
21 const char kTestOriginDevTools[] = "chrome-devtools://abcdefghijklmnopqrstuvw/"; | |
22 | |
23 const GURL kOrigin1(kTestOrigin1); | |
24 const GURL kOrigin2(kTestOrigin2); | |
25 const GURL kOrigin3(kTestOrigin3); | |
26 const GURL kOriginExt(kTestOriginExt); | |
27 const GURL kOriginDevTools(kTestOriginDevTools); | |
28 | |
29 const int kExtension = BrowsingDataHelper::EXTENSION; | |
30 const int kProtected = BrowsingDataHelper::PROTECTED_WEB; | |
31 const int kUnprotected = BrowsingDataHelper::UNPROTECTED_WEB; | |
32 | |
33 class BrowsingDataHelperTest : public testing::Test { | |
34 public: | |
35 BrowsingDataHelperTest() {} | |
36 virtual ~BrowsingDataHelperTest() {} | |
37 | |
38 bool IsWebScheme(const std::string& scheme) { | |
39 GURL test(scheme + "://example.com"); | |
40 return (BrowsingDataHelper::HasWebScheme(test) && | |
41 BrowsingDataHelper::IsWebScheme(scheme) && | |
42 BrowsingDataHelper::IsWebScheme( | |
43 WebKit::WebString::fromUTF8(scheme))); | |
44 } | |
45 | |
46 bool IsExtensionScheme(const std::string& scheme) { | |
47 GURL test(scheme + "://example.com"); | |
48 return (BrowsingDataHelper::HasExtensionScheme(test) && | |
49 BrowsingDataHelper::IsExtensionScheme(scheme) && | |
50 BrowsingDataHelper::IsExtensionScheme( | |
51 WebKit::WebString::fromUTF8(scheme))); | |
52 } | |
53 | |
54 bool Match(const GURL& origin, | |
55 int mask, | |
56 ExtensionSpecialStoragePolicy* policy) { | |
57 return BrowsingDataHelper::DoesOriginMatchMask(origin, mask, policy); | |
58 } | |
59 | |
60 private: | |
61 DISALLOW_COPY_AND_ASSIGN(BrowsingDataHelperTest); | |
62 }; | |
63 | |
64 TEST_F(BrowsingDataHelperTest, WebSafeSchemesAreWebSafe) { | |
65 EXPECT_TRUE(IsWebScheme(chrome::kHttpScheme)); | |
66 EXPECT_TRUE(IsWebScheme(chrome::kHttpsScheme)); | |
67 EXPECT_TRUE(IsWebScheme(chrome::kFtpScheme)); | |
68 EXPECT_TRUE(IsWebScheme(chrome::kDataScheme)); | |
69 EXPECT_TRUE(IsWebScheme("feed")); | |
70 EXPECT_TRUE(IsWebScheme(chrome::kBlobScheme)); | |
71 EXPECT_TRUE(IsWebScheme(chrome::kFileSystemScheme)); | |
72 EXPECT_FALSE(IsWebScheme("invalid-scheme-i-just-made-up")); | |
73 } | |
74 | |
75 TEST_F(BrowsingDataHelperTest, ChromeSchemesAreNotWebSafe) { | |
76 EXPECT_FALSE(IsWebScheme(chrome::kExtensionScheme)); | |
77 EXPECT_FALSE(IsWebScheme(chrome::kAboutScheme)); | |
78 EXPECT_FALSE(IsWebScheme(chrome::kChromeDevToolsScheme)); | |
79 EXPECT_FALSE(IsWebScheme(chrome::kChromeInternalScheme)); | |
80 EXPECT_FALSE(IsWebScheme(chrome::kChromeUIScheme)); | |
81 EXPECT_FALSE(IsWebScheme(chrome::kJavaScriptScheme)); | |
82 EXPECT_FALSE(IsWebScheme(chrome::kMailToScheme)); | |
83 EXPECT_FALSE(IsWebScheme(chrome::kMetadataScheme)); | |
84 EXPECT_FALSE(IsWebScheme(chrome::kSwappedOutScheme)); | |
85 EXPECT_FALSE(IsWebScheme(chrome::kViewSourceScheme)); | |
86 } | |
87 | |
88 TEST_F(BrowsingDataHelperTest, WebSafeSchemesAreNotExtensions) { | |
89 EXPECT_FALSE(IsExtensionScheme(chrome::kHttpScheme)); | |
90 EXPECT_FALSE(IsExtensionScheme(chrome::kHttpsScheme)); | |
91 EXPECT_FALSE(IsExtensionScheme(chrome::kFtpScheme)); | |
92 EXPECT_FALSE(IsExtensionScheme(chrome::kDataScheme)); | |
93 EXPECT_FALSE(IsExtensionScheme("feed")); | |
94 EXPECT_FALSE(IsExtensionScheme(chrome::kBlobScheme)); | |
95 EXPECT_FALSE(IsExtensionScheme(chrome::kFileSystemScheme)); | |
96 EXPECT_FALSE(IsExtensionScheme("invalid-scheme-i-just-made-up")); | |
97 } | |
98 | |
99 TEST_F(BrowsingDataHelperTest, ChromeSchemesAreNotAllExtension) { | |
100 EXPECT_TRUE(IsExtensionScheme(chrome::kExtensionScheme)); | |
101 | |
102 EXPECT_FALSE(IsExtensionScheme(chrome::kAboutScheme)); | |
103 EXPECT_FALSE(IsExtensionScheme(chrome::kChromeDevToolsScheme)); | |
104 EXPECT_FALSE(IsExtensionScheme(chrome::kChromeInternalScheme)); | |
105 EXPECT_FALSE(IsExtensionScheme(chrome::kChromeUIScheme)); | |
106 EXPECT_FALSE(IsExtensionScheme(chrome::kJavaScriptScheme)); | |
107 EXPECT_FALSE(IsExtensionScheme(chrome::kMailToScheme)); | |
108 EXPECT_FALSE(IsExtensionScheme(chrome::kMetadataScheme)); | |
109 EXPECT_FALSE(IsExtensionScheme(chrome::kSwappedOutScheme)); | |
110 EXPECT_FALSE(IsExtensionScheme(chrome::kViewSourceScheme)); | |
111 } | |
112 | |
113 TEST_F(BrowsingDataHelperTest, TestMatches) { | |
114 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = | |
115 new MockExtensionSpecialStoragePolicy; | |
116 // Protect kOrigin1. | |
117 mock_policy->AddProtected(kOrigin1.GetOrigin()); | |
118 | |
119 EXPECT_FALSE(Match(kOrigin1, kUnprotected, mock_policy)); | |
120 EXPECT_TRUE(Match(kOrigin2, kUnprotected, mock_policy)); | |
121 EXPECT_FALSE(Match(kOriginExt, kUnprotected, mock_policy)); | |
122 EXPECT_FALSE(Match(kOriginDevTools, kUnprotected, mock_policy)); | |
123 | |
124 EXPECT_TRUE(Match(kOrigin1, kProtected, mock_policy)); | |
125 EXPECT_FALSE(Match(kOrigin2, kProtected, mock_policy)); | |
126 EXPECT_FALSE(Match(kOriginExt, kProtected, mock_policy)); | |
127 EXPECT_FALSE(Match(kOriginDevTools, kProtected, mock_policy)); | |
128 | |
129 EXPECT_FALSE(Match(kOrigin1, kExtension, mock_policy)); | |
130 EXPECT_FALSE(Match(kOrigin2, kExtension, mock_policy)); | |
131 EXPECT_TRUE(Match(kOriginExt, kExtension, mock_policy)); | |
132 EXPECT_FALSE(Match(kOriginDevTools, kExtension, mock_policy)); | |
133 | |
134 EXPECT_TRUE(Match(kOrigin1, kUnprotected | kProtected, mock_policy)); | |
135 EXPECT_TRUE(Match(kOrigin2, kUnprotected | kProtected, mock_policy)); | |
136 EXPECT_FALSE(Match(kOriginExt, kUnprotected | kProtected, mock_policy)); | |
137 EXPECT_FALSE(Match(kOriginDevTools, kUnprotected | kProtected, mock_policy)); | |
138 | |
139 EXPECT_FALSE(Match(kOrigin1, kUnprotected | kExtension, mock_policy)); | |
140 EXPECT_TRUE(Match(kOrigin2, kUnprotected | kExtension, mock_policy)); | |
141 EXPECT_TRUE(Match(kOriginExt, kUnprotected | kExtension, mock_policy)); | |
142 EXPECT_FALSE(Match(kOriginDevTools, kUnprotected | kExtension, mock_policy)); | |
143 | |
144 EXPECT_TRUE(Match(kOrigin1, kProtected | kExtension, mock_policy)); | |
145 EXPECT_FALSE(Match(kOrigin2, kProtected | kExtension, mock_policy)); | |
146 EXPECT_TRUE(Match(kOriginExt, kProtected | kExtension, mock_policy)); | |
147 EXPECT_FALSE(Match(kOriginDevTools, kProtected | kExtension, mock_policy)); | |
148 | |
149 EXPECT_TRUE(Match(kOrigin1, kUnprotected | kProtected | kExtension, | |
150 mock_policy)); | |
151 EXPECT_TRUE(Match(kOrigin2, kUnprotected | kProtected | kExtension, | |
152 mock_policy)); | |
153 EXPECT_TRUE(Match(kOriginExt, kUnprotected | kProtected | kExtension, | |
154 mock_policy)); | |
155 EXPECT_FALSE(Match(kOriginDevTools, kUnprotected | kProtected | kExtension, | |
156 mock_policy)); | |
157 } | |
158 | |
159 } // namespace | |
OLD | NEW |