Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: chrome/browser/extensions/extension_special_storage_policy_unittest.cc

Issue 13994010: Fix ExtensionSpecialStoragePolicy.IsInstalledApp (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "base/message_loop.h" 5 #include "base/message_loop.h"
6 #include "base/values.h" 6 #include "base/values.h"
7 #include "chrome/browser/content_settings/cookie_settings.h" 7 #include "chrome/browser/content_settings/cookie_settings.h"
8 #include "chrome/browser/extensions/extension_special_storage_policy.h" 8 #include "chrome/browser/extensions/extension_special_storage_policy.h"
9 #include "chrome/common/content_settings.h" 9 #include "chrome/common/content_settings.h"
10 #include "chrome/common/content_settings_types.h" 10 #include "chrome/common/content_settings_types.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 list->Append(Value::CreateStringValue("fileSystem")); 122 list->Append(Value::CreateStringValue("fileSystem"));
123 manifest.Set(keys::kPermissions, list); 123 manifest.Set(keys::kPermissions, list);
124 std::string error; 124 std::string error;
125 scoped_refptr<Extension> handler_app = Extension::Create( 125 scoped_refptr<Extension> handler_app = Extension::Create(
126 path, Manifest::INVALID_LOCATION, manifest, 126 path, Manifest::INVALID_LOCATION, manifest,
127 Extension::NO_FLAGS, &error); 127 Extension::NO_FLAGS, &error);
128 EXPECT_TRUE(handler_app.get()) << error; 128 EXPECT_TRUE(handler_app.get()) << error;
129 return handler_app; 129 return handler_app;
130 } 130 }
131 131
132 scoped_refptr<Extension> CreateRegularApp() {
133 #if defined(OS_WIN)
134 base::FilePath path(FILE_PATH_LITERAL("c:\\app"));
135 #elif defined(OS_POSIX)
136 base::FilePath path(FILE_PATH_LITERAL("/app"));
137 #endif
138 DictionaryValue manifest;
139 manifest.SetString(keys::kName, "App");
140 manifest.SetString(keys::kVersion, "1");
141 manifest.SetString(keys::kPlatformAppBackgroundPage, "background.html");
142 std::string error;
143 scoped_refptr<Extension> app = Extension::Create(
144 path, Manifest::INVALID_LOCATION, manifest,
145 Extension::NO_FLAGS, &error);
146 EXPECT_TRUE(app.get()) << error;
147 return app;
148 }
149
132 // Verifies that the set of extensions protecting |url| is *exactly* equal to 150 // Verifies that the set of extensions protecting |url| is *exactly* equal to
133 // |expected_extensions|. Pass in an empty set to verify that an origin is not 151 // |expected_extensions|. Pass in an empty set to verify that an origin is not
134 // protected. 152 // protected.
135 void ExpectProtectedBy(const ExtensionSet& expected_extensions, 153 void ExpectProtectedBy(const ExtensionSet& expected_extensions,
136 const GURL& url) { 154 const GURL& url) {
137 const ExtensionSet* extensions = policy_->ExtensionsProtectingOrigin(url); 155 const ExtensionSet* extensions = policy_->ExtensionsProtectingOrigin(url);
138 EXPECT_EQ(expected_extensions.size(), extensions->size()); 156 EXPECT_EQ(expected_extensions.size(), extensions->size());
139 for (ExtensionSet::const_iterator it = expected_extensions.begin(); 157 for (ExtensionSet::const_iterator it = expected_extensions.begin();
140 it != expected_extensions.end(); ++it) { 158 it != expected_extensions.end(); ++it) {
141 EXPECT_TRUE(extensions->Contains((*it)->id())) 159 EXPECT_TRUE(extensions->Contains((*it)->id()))
142 << "Origin " << url << "not protected by extension ID " 160 << "Origin " << url << "not protected by extension ID "
143 << (*it)->id(); 161 << (*it)->id();
144 } 162 }
145 } 163 }
146 164
147 scoped_refptr<ExtensionSpecialStoragePolicy> policy_; 165 scoped_refptr<ExtensionSpecialStoragePolicy> policy_;
148 }; 166 };
149 167
150 TEST_F(ExtensionSpecialStoragePolicyTest, EmptyPolicy) { 168 TEST_F(ExtensionSpecialStoragePolicyTest, EmptyPolicy) {
151 const GURL kHttpUrl("http://foo"); 169 const GURL kHttpUrl("http://foo");
152 const GURL kExtensionUrl("chrome-extension://bar"); 170 const GURL kExtensionUrl("chrome-extension://bar");
171 scoped_refptr<Extension> app(CreateRegularApp());
153 172
154 EXPECT_FALSE(policy_->IsStorageUnlimited(kHttpUrl)); 173 EXPECT_FALSE(policy_->IsStorageUnlimited(kHttpUrl));
155 EXPECT_FALSE(policy_->IsStorageUnlimited(kHttpUrl)); // test cached result 174 EXPECT_FALSE(policy_->IsStorageUnlimited(kHttpUrl)); // test cached result
156 EXPECT_FALSE(policy_->IsStorageUnlimited(kExtensionUrl)); 175 EXPECT_FALSE(policy_->IsStorageUnlimited(kExtensionUrl));
176 EXPECT_FALSE(policy_->IsStorageUnlimited(app->url()));
157 ExtensionSet empty_set; 177 ExtensionSet empty_set;
158 ExpectProtectedBy(empty_set, kHttpUrl); 178 ExpectProtectedBy(empty_set, kHttpUrl);
159 179
160 // This one is just based on the scheme. 180 // This one is just based on the scheme.
161 EXPECT_TRUE(policy_->IsStorageProtected(kExtensionUrl)); 181 EXPECT_TRUE(policy_->IsStorageProtected(kExtensionUrl));
182 EXPECT_TRUE(policy_->IsStorageProtected(app->url()));
162 } 183 }
163 184
164
165 TEST_F(ExtensionSpecialStoragePolicyTest, AppWithProtectedStorage) { 185 TEST_F(ExtensionSpecialStoragePolicyTest, AppWithProtectedStorage) {
166 scoped_refptr<Extension> extension(CreateProtectedApp()); 186 scoped_refptr<Extension> extension(CreateProtectedApp());
167 policy_->GrantRightsForExtension(extension); 187 policy_->GrantRightsForExtension(extension);
168 ExtensionSet protecting_extensions; 188 ExtensionSet protecting_extensions;
169 protecting_extensions.Insert(extension); 189 protecting_extensions.Insert(extension);
170 ExtensionSet empty_set; 190 ExtensionSet empty_set;
171 191
172 EXPECT_FALSE(policy_->IsStorageUnlimited(extension->url())); 192 EXPECT_FALSE(policy_->IsStorageUnlimited(extension->url()));
173 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); 193 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://explicit/")));
174 ExpectProtectedBy(protecting_extensions, GURL("http://explicit/")); 194 ExpectProtectedBy(protecting_extensions, GURL("http://explicit/"));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 policy_->RevokeRightsForExtension(extension); 226 policy_->RevokeRightsForExtension(extension);
207 ExpectProtectedBy(empty_set, GURL("http://explicit/")); 227 ExpectProtectedBy(empty_set, GURL("http://explicit/"));
208 ExpectProtectedBy(empty_set, GURL("https://foo.wildcards/")); 228 ExpectProtectedBy(empty_set, GURL("https://foo.wildcards/"));
209 ExpectProtectedBy(empty_set, GURL("https://foo.wildcards/")); 229 ExpectProtectedBy(empty_set, GURL("https://foo.wildcards/"));
210 ExpectProtectedBy(empty_set, GURL("http://bar.wildcards/")); 230 ExpectProtectedBy(empty_set, GURL("http://bar.wildcards/"));
211 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); 231 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://explicit/")));
212 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://foo.wildcards/"))); 232 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://foo.wildcards/")));
213 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/"))); 233 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/")));
214 } 234 }
215 235
236 TEST_F(ExtensionSpecialStoragePolicyTest, IsInstalled) {
237 const GURL kHttpUrl("http://foo");
238 const GURL kExtensionUrl("chrome-extension://bar");
239 scoped_refptr<Extension> regular_app(CreateRegularApp());
240 scoped_refptr<Extension> protected_app(CreateProtectedApp());
241 scoped_refptr<Extension> unlimited_app(CreateUnlimitedApp());
242 policy_->GrantRightsForExtension(regular_app);
243 policy_->GrantRightsForExtension(protected_app);
244 policy_->GrantRightsForExtension(unlimited_app);
245
246 EXPECT_FALSE(policy_->IsInstalledApp(kHttpUrl));
247 EXPECT_FALSE(policy_->IsInstalledApp(kExtensionUrl));
248 EXPECT_TRUE(policy_->IsInstalledApp(regular_app->url()));
249 EXPECT_TRUE(policy_->IsInstalledApp(protected_app->url()));
250 EXPECT_TRUE(policy_->IsInstalledApp(unlimited_app->url()));
251 }
252
216 TEST_F(ExtensionSpecialStoragePolicyTest, OverlappingApps) { 253 TEST_F(ExtensionSpecialStoragePolicyTest, OverlappingApps) {
217 scoped_refptr<Extension> protected_app(CreateProtectedApp()); 254 scoped_refptr<Extension> protected_app(CreateProtectedApp());
218 scoped_refptr<Extension> unlimited_app(CreateUnlimitedApp()); 255 scoped_refptr<Extension> unlimited_app(CreateUnlimitedApp());
219 policy_->GrantRightsForExtension(protected_app); 256 policy_->GrantRightsForExtension(protected_app);
220 policy_->GrantRightsForExtension(unlimited_app); 257 policy_->GrantRightsForExtension(unlimited_app);
221 ExtensionSet protecting_extensions; 258 ExtensionSet protecting_extensions;
222 ExtensionSet empty_set; 259 ExtensionSet empty_set;
223 protecting_extensions.Insert(protected_app); 260 protecting_extensions.Insert(protected_app);
224 protecting_extensions.Insert(unlimited_app); 261 protecting_extensions.Insert(unlimited_app);
225 262
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 CONTENT_SETTING_SESSION_ONLY); 314 CONTENT_SETTING_SESSION_ONLY);
278 315
279 EXPECT_TRUE(policy_->HasSessionOnlyOrigins()); 316 EXPECT_TRUE(policy_->HasSessionOnlyOrigins());
280 317
281 // Clearing an origin-specific rule. 318 // Clearing an origin-specific rule.
282 cookie_settings->ResetCookieSetting(pattern, 319 cookie_settings->ResetCookieSetting(pattern,
283 ContentSettingsPattern::Wildcard()); 320 ContentSettingsPattern::Wildcard());
284 321
285 EXPECT_FALSE(policy_->HasSessionOnlyOrigins()); 322 EXPECT_FALSE(policy_->HasSessionOnlyOrigins());
286 } 323 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698