| 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 "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 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 ExtensionSet empty_set; | 189 ExtensionSet empty_set; |
| 190 ExpectProtectedBy(empty_set, kHttpUrl); | 190 ExpectProtectedBy(empty_set, kHttpUrl); |
| 191 | 191 |
| 192 // This one is just based on the scheme. | 192 // This one is just based on the scheme. |
| 193 EXPECT_TRUE(policy_->IsStorageProtected(kExtensionUrl)); | 193 EXPECT_TRUE(policy_->IsStorageProtected(kExtensionUrl)); |
| 194 EXPECT_TRUE(policy_->IsStorageProtected(app->url())); | 194 EXPECT_TRUE(policy_->IsStorageProtected(app->url())); |
| 195 } | 195 } |
| 196 | 196 |
| 197 TEST_F(ExtensionSpecialStoragePolicyTest, AppWithProtectedStorage) { | 197 TEST_F(ExtensionSpecialStoragePolicyTest, AppWithProtectedStorage) { |
| 198 scoped_refptr<Extension> extension(CreateProtectedApp()); | 198 scoped_refptr<Extension> extension(CreateProtectedApp()); |
| 199 policy_->GrantRightsForExtension(extension); | 199 policy_->GrantRightsForExtension(extension.get()); |
| 200 ExtensionSet protecting_extensions; | 200 ExtensionSet protecting_extensions; |
| 201 protecting_extensions.Insert(extension); | 201 protecting_extensions.Insert(extension); |
| 202 ExtensionSet empty_set; | 202 ExtensionSet empty_set; |
| 203 | 203 |
| 204 EXPECT_FALSE(policy_->IsStorageUnlimited(extension->url())); | 204 EXPECT_FALSE(policy_->IsStorageUnlimited(extension->url())); |
| 205 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); | 205 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); |
| 206 ExpectProtectedBy(protecting_extensions, GURL("http://explicit/")); | 206 ExpectProtectedBy(protecting_extensions, GURL("http://explicit/")); |
| 207 ExpectProtectedBy(protecting_extensions, GURL("http://explicit:6000/")); | 207 ExpectProtectedBy(protecting_extensions, GURL("http://explicit:6000/")); |
| 208 ExpectProtectedBy(protecting_extensions, GURL("http://foo.wildcards/")); | 208 ExpectProtectedBy(protecting_extensions, GURL("http://foo.wildcards/")); |
| 209 ExpectProtectedBy(protecting_extensions, GURL("https://bar.wildcards/")); | 209 ExpectProtectedBy(protecting_extensions, GURL("https://bar.wildcards/")); |
| 210 ExpectProtectedBy(empty_set, GURL("http://not_listed/")); | 210 ExpectProtectedBy(empty_set, GURL("http://not_listed/")); |
| 211 | 211 |
| 212 policy_->RevokeRightsForExtension(extension); | 212 policy_->RevokeRightsForExtension(extension.get()); |
| 213 ExpectProtectedBy(empty_set, GURL("http://explicit/")); | 213 ExpectProtectedBy(empty_set, GURL("http://explicit/")); |
| 214 ExpectProtectedBy(empty_set, GURL("http://foo.wildcards/")); | 214 ExpectProtectedBy(empty_set, GURL("http://foo.wildcards/")); |
| 215 ExpectProtectedBy(empty_set, GURL("https://bar.wildcards/")); | 215 ExpectProtectedBy(empty_set, GURL("https://bar.wildcards/")); |
| 216 } | 216 } |
| 217 | 217 |
| 218 TEST_F(ExtensionSpecialStoragePolicyTest, AppWithUnlimitedStorage) { | 218 TEST_F(ExtensionSpecialStoragePolicyTest, AppWithUnlimitedStorage) { |
| 219 scoped_refptr<Extension> extension(CreateUnlimitedApp()); | 219 scoped_refptr<Extension> extension(CreateUnlimitedApp()); |
| 220 policy_->GrantRightsForExtension(extension); | 220 policy_->GrantRightsForExtension(extension.get()); |
| 221 ExtensionSet protecting_extensions; | 221 ExtensionSet protecting_extensions; |
| 222 protecting_extensions.Insert(extension); | 222 protecting_extensions.Insert(extension); |
| 223 ExtensionSet empty_set; | 223 ExtensionSet empty_set; |
| 224 | 224 |
| 225 ExpectProtectedBy(protecting_extensions, GURL("http://explicit/")); | 225 ExpectProtectedBy(protecting_extensions, GURL("http://explicit/")); |
| 226 ExpectProtectedBy(protecting_extensions, GURL("http://explicit:6000/")); | 226 ExpectProtectedBy(protecting_extensions, GURL("http://explicit:6000/")); |
| 227 ExpectProtectedBy(protecting_extensions, GURL("https://foo.wildcards/")); | 227 ExpectProtectedBy(protecting_extensions, GURL("https://foo.wildcards/")); |
| 228 ExpectProtectedBy(protecting_extensions, GURL("https://foo.wildcards/")); | 228 ExpectProtectedBy(protecting_extensions, GURL("https://foo.wildcards/")); |
| 229 ExpectProtectedBy(protecting_extensions, GURL("http://bar.wildcards/")); | 229 ExpectProtectedBy(protecting_extensions, GURL("http://bar.wildcards/")); |
| 230 ExpectProtectedBy(empty_set, GURL("http://not_listed/")); | 230 ExpectProtectedBy(empty_set, GURL("http://not_listed/")); |
| 231 EXPECT_TRUE(policy_->IsStorageUnlimited(extension->url())); | 231 EXPECT_TRUE(policy_->IsStorageUnlimited(extension->url())); |
| 232 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); | 232 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); |
| 233 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("http://explicit:6000/"))); | 233 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("http://explicit:6000/"))); |
| 234 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("https://foo.wildcards/"))); | 234 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("https://foo.wildcards/"))); |
| 235 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/"))); | 235 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/"))); |
| 236 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://not_listed/"))); | 236 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://not_listed/"))); |
| 237 | 237 |
| 238 policy_->RevokeRightsForExtension(extension); | 238 policy_->RevokeRightsForExtension(extension.get()); |
| 239 ExpectProtectedBy(empty_set, GURL("http://explicit/")); | 239 ExpectProtectedBy(empty_set, GURL("http://explicit/")); |
| 240 ExpectProtectedBy(empty_set, GURL("https://foo.wildcards/")); | 240 ExpectProtectedBy(empty_set, GURL("https://foo.wildcards/")); |
| 241 ExpectProtectedBy(empty_set, GURL("https://foo.wildcards/")); | 241 ExpectProtectedBy(empty_set, GURL("https://foo.wildcards/")); |
| 242 ExpectProtectedBy(empty_set, GURL("http://bar.wildcards/")); | 242 ExpectProtectedBy(empty_set, GURL("http://bar.wildcards/")); |
| 243 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); | 243 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); |
| 244 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://foo.wildcards/"))); | 244 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://foo.wildcards/"))); |
| 245 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/"))); | 245 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/"))); |
| 246 } | 246 } |
| 247 | 247 |
| 248 TEST_F(ExtensionSpecialStoragePolicyTest, CanQueryDiskSize) { | 248 TEST_F(ExtensionSpecialStoragePolicyTest, CanQueryDiskSize) { |
| 249 const GURL kHttpUrl("http://foo"); | 249 const GURL kHttpUrl("http://foo"); |
| 250 const GURL kExtensionUrl("chrome-extension://bar"); | 250 const GURL kExtensionUrl("chrome-extension://bar"); |
| 251 scoped_refptr<Extension> regular_app(CreateRegularApp()); | 251 scoped_refptr<Extension> regular_app(CreateRegularApp()); |
| 252 scoped_refptr<Extension> protected_app(CreateProtectedApp()); | 252 scoped_refptr<Extension> protected_app(CreateProtectedApp()); |
| 253 scoped_refptr<Extension> unlimited_app(CreateUnlimitedApp()); | 253 scoped_refptr<Extension> unlimited_app(CreateUnlimitedApp()); |
| 254 policy_->GrantRightsForExtension(regular_app); | 254 policy_->GrantRightsForExtension(regular_app.get()); |
| 255 policy_->GrantRightsForExtension(protected_app); | 255 policy_->GrantRightsForExtension(protected_app.get()); |
| 256 policy_->GrantRightsForExtension(unlimited_app); | 256 policy_->GrantRightsForExtension(unlimited_app.get()); |
| 257 | 257 |
| 258 EXPECT_FALSE(policy_->CanQueryDiskSize(kHttpUrl)); | 258 EXPECT_FALSE(policy_->CanQueryDiskSize(kHttpUrl)); |
| 259 EXPECT_FALSE(policy_->CanQueryDiskSize(kExtensionUrl)); | 259 EXPECT_FALSE(policy_->CanQueryDiskSize(kExtensionUrl)); |
| 260 EXPECT_TRUE(policy_->CanQueryDiskSize(regular_app->url())); | 260 EXPECT_TRUE(policy_->CanQueryDiskSize(regular_app->url())); |
| 261 EXPECT_TRUE(policy_->CanQueryDiskSize(protected_app->url())); | 261 EXPECT_TRUE(policy_->CanQueryDiskSize(protected_app->url())); |
| 262 EXPECT_TRUE(policy_->CanQueryDiskSize(unlimited_app->url())); | 262 EXPECT_TRUE(policy_->CanQueryDiskSize(unlimited_app->url())); |
| 263 } | 263 } |
| 264 | 264 |
| 265 TEST_F(ExtensionSpecialStoragePolicyTest, HasIsolatedStorage) { | 265 TEST_F(ExtensionSpecialStoragePolicyTest, HasIsolatedStorage) { |
| 266 const GURL kHttpUrl("http://foo"); | 266 const GURL kHttpUrl("http://foo"); |
| 267 const GURL kExtensionUrl("chrome-extension://bar"); | 267 const GURL kExtensionUrl("chrome-extension://bar"); |
| 268 scoped_refptr<Extension> app(CreateRegularApp()); | 268 scoped_refptr<Extension> app(CreateRegularApp()); |
| 269 policy_->GrantRightsForExtension(app); | 269 policy_->GrantRightsForExtension(app.get()); |
| 270 | 270 |
| 271 EXPECT_FALSE(policy_->HasIsolatedStorage(kHttpUrl)); | 271 EXPECT_FALSE(policy_->HasIsolatedStorage(kHttpUrl)); |
| 272 EXPECT_FALSE(policy_->HasIsolatedStorage(kExtensionUrl)); | 272 EXPECT_FALSE(policy_->HasIsolatedStorage(kExtensionUrl)); |
| 273 EXPECT_TRUE(policy_->HasIsolatedStorage(app->url())); | 273 EXPECT_TRUE(policy_->HasIsolatedStorage(app->url())); |
| 274 } | 274 } |
| 275 | 275 |
| 276 TEST_F(ExtensionSpecialStoragePolicyTest, OverlappingApps) { | 276 TEST_F(ExtensionSpecialStoragePolicyTest, OverlappingApps) { |
| 277 scoped_refptr<Extension> protected_app(CreateProtectedApp()); | 277 scoped_refptr<Extension> protected_app(CreateProtectedApp()); |
| 278 scoped_refptr<Extension> unlimited_app(CreateUnlimitedApp()); | 278 scoped_refptr<Extension> unlimited_app(CreateUnlimitedApp()); |
| 279 policy_->GrantRightsForExtension(protected_app); | 279 policy_->GrantRightsForExtension(protected_app.get()); |
| 280 policy_->GrantRightsForExtension(unlimited_app); | 280 policy_->GrantRightsForExtension(unlimited_app.get()); |
| 281 ExtensionSet protecting_extensions; | 281 ExtensionSet protecting_extensions; |
| 282 ExtensionSet empty_set; | 282 ExtensionSet empty_set; |
| 283 protecting_extensions.Insert(protected_app); | 283 protecting_extensions.Insert(protected_app); |
| 284 protecting_extensions.Insert(unlimited_app); | 284 protecting_extensions.Insert(unlimited_app); |
| 285 | 285 |
| 286 ExpectProtectedBy(protecting_extensions, GURL("http://explicit/")); | 286 ExpectProtectedBy(protecting_extensions, GURL("http://explicit/")); |
| 287 ExpectProtectedBy(protecting_extensions, GURL("http://explicit:6000/")); | 287 ExpectProtectedBy(protecting_extensions, GURL("http://explicit:6000/")); |
| 288 ExpectProtectedBy(protecting_extensions, GURL("https://foo.wildcards/")); | 288 ExpectProtectedBy(protecting_extensions, GURL("https://foo.wildcards/")); |
| 289 ExpectProtectedBy(protecting_extensions, GURL("https://foo.wildcards/")); | 289 ExpectProtectedBy(protecting_extensions, GURL("https://foo.wildcards/")); |
| 290 ExpectProtectedBy(protecting_extensions, GURL("http://bar.wildcards/")); | 290 ExpectProtectedBy(protecting_extensions, GURL("http://bar.wildcards/")); |
| 291 ExpectProtectedBy(empty_set, GURL("http://not_listed/")); | 291 ExpectProtectedBy(empty_set, GURL("http://not_listed/")); |
| 292 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); | 292 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); |
| 293 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("http://explicit:6000/"))); | 293 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("http://explicit:6000/"))); |
| 294 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("https://foo.wildcards/"))); | 294 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("https://foo.wildcards/"))); |
| 295 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/"))); | 295 EXPECT_TRUE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/"))); |
| 296 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://not_listed/"))); | 296 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://not_listed/"))); |
| 297 | 297 |
| 298 policy_->RevokeRightsForExtension(unlimited_app); | 298 policy_->RevokeRightsForExtension(unlimited_app.get()); |
| 299 protecting_extensions.Remove(unlimited_app->id()); | 299 protecting_extensions.Remove(unlimited_app->id()); |
| 300 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); | 300 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("http://explicit/"))); |
| 301 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://foo.wildcards/"))); | 301 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://foo.wildcards/"))); |
| 302 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/"))); | 302 EXPECT_FALSE(policy_->IsStorageUnlimited(GURL("https://bar.wildcards/"))); |
| 303 ExpectProtectedBy(protecting_extensions, GURL("http://explicit/")); | 303 ExpectProtectedBy(protecting_extensions, GURL("http://explicit/")); |
| 304 ExpectProtectedBy(protecting_extensions, GURL("http://foo.wildcards/")); | 304 ExpectProtectedBy(protecting_extensions, GURL("http://foo.wildcards/")); |
| 305 ExpectProtectedBy(protecting_extensions, GURL("https://bar.wildcards/")); | 305 ExpectProtectedBy(protecting_extensions, GURL("https://bar.wildcards/")); |
| 306 | 306 |
| 307 policy_->RevokeRightsForExtension(protected_app); | 307 policy_->RevokeRightsForExtension(protected_app.get()); |
| 308 ExpectProtectedBy(empty_set, GURL("http://explicit/")); | 308 ExpectProtectedBy(empty_set, GURL("http://explicit/")); |
| 309 ExpectProtectedBy(empty_set, GURL("http://foo.wildcards/")); | 309 ExpectProtectedBy(empty_set, GURL("http://foo.wildcards/")); |
| 310 ExpectProtectedBy(empty_set, GURL("https://bar.wildcards/")); | 310 ExpectProtectedBy(empty_set, GURL("https://bar.wildcards/")); |
| 311 } | 311 } |
| 312 | 312 |
| 313 TEST_F(ExtensionSpecialStoragePolicyTest, HasSessionOnlyOrigins) { | 313 TEST_F(ExtensionSpecialStoragePolicyTest, HasSessionOnlyOrigins) { |
| 314 base::MessageLoop message_loop; | 314 base::MessageLoop message_loop; |
| 315 content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop); | 315 content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop); |
| 316 | 316 |
| 317 TestingProfile profile; | 317 TestingProfile profile; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 362 SpecialStoragePolicy::STORAGE_PROTECTED, | 362 SpecialStoragePolicy::STORAGE_PROTECTED, |
| 363 | 363 |
| 364 SpecialStoragePolicy::STORAGE_PROTECTED | | 364 SpecialStoragePolicy::STORAGE_PROTECTED | |
| 365 SpecialStoragePolicy::STORAGE_UNLIMITED, | 365 SpecialStoragePolicy::STORAGE_UNLIMITED, |
| 366 }; | 366 }; |
| 367 | 367 |
| 368 ASSERT_EQ(arraysize(apps), arraysize(change_flags)); | 368 ASSERT_EQ(arraysize(apps), arraysize(change_flags)); |
| 369 for (size_t i = 0; i < arraysize(apps); ++i) { | 369 for (size_t i = 0; i < arraysize(apps); ++i) { |
| 370 SCOPED_TRACE(testing::Message() << "i: " << i); | 370 SCOPED_TRACE(testing::Message() << "i: " << i); |
| 371 observer.ExpectGrant(apps[i]->id(), change_flags[i]); | 371 observer.ExpectGrant(apps[i]->id(), change_flags[i]); |
| 372 policy_->GrantRightsForExtension(apps[i]); | 372 policy_->GrantRightsForExtension(apps[i].get()); |
| 373 message_loop.RunUntilIdle(); | 373 message_loop.RunUntilIdle(); |
| 374 EXPECT_TRUE(observer.IsCompleted()); | 374 EXPECT_TRUE(observer.IsCompleted()); |
| 375 } | 375 } |
| 376 | 376 |
| 377 for (size_t i = 0; i < arraysize(apps); ++i) { | 377 for (size_t i = 0; i < arraysize(apps); ++i) { |
| 378 SCOPED_TRACE(testing::Message() << "i: " << i); | 378 SCOPED_TRACE(testing::Message() << "i: " << i); |
| 379 policy_->GrantRightsForExtension(apps[i]); | 379 policy_->GrantRightsForExtension(apps[i].get()); |
| 380 message_loop.RunUntilIdle(); | 380 message_loop.RunUntilIdle(); |
| 381 EXPECT_TRUE(observer.IsCompleted()); | 381 EXPECT_TRUE(observer.IsCompleted()); |
| 382 } | 382 } |
| 383 | 383 |
| 384 for (size_t i = 0; i < arraysize(apps); ++i) { | 384 for (size_t i = 0; i < arraysize(apps); ++i) { |
| 385 SCOPED_TRACE(testing::Message() << "i: " << i); | 385 SCOPED_TRACE(testing::Message() << "i: " << i); |
| 386 observer.ExpectRevoke(apps[i]->id(), change_flags[i]); | 386 observer.ExpectRevoke(apps[i]->id(), change_flags[i]); |
| 387 policy_->RevokeRightsForExtension(apps[i]); | 387 policy_->RevokeRightsForExtension(apps[i].get()); |
| 388 message_loop.RunUntilIdle(); | 388 message_loop.RunUntilIdle(); |
| 389 EXPECT_TRUE(observer.IsCompleted()); | 389 EXPECT_TRUE(observer.IsCompleted()); |
| 390 } | 390 } |
| 391 | 391 |
| 392 for (size_t i = 0; i < arraysize(apps); ++i) { | 392 for (size_t i = 0; i < arraysize(apps); ++i) { |
| 393 SCOPED_TRACE(testing::Message() << "i: " << i); | 393 SCOPED_TRACE(testing::Message() << "i: " << i); |
| 394 policy_->RevokeRightsForExtension(apps[i]); | 394 policy_->RevokeRightsForExtension(apps[i].get()); |
| 395 message_loop.RunUntilIdle(); | 395 message_loop.RunUntilIdle(); |
| 396 EXPECT_TRUE(observer.IsCompleted()); | 396 EXPECT_TRUE(observer.IsCompleted()); |
| 397 } | 397 } |
| 398 | 398 |
| 399 observer.ExpectClear(); | 399 observer.ExpectClear(); |
| 400 policy_->RevokeRightsForAllExtensions(); | 400 policy_->RevokeRightsForAllExtensions(); |
| 401 message_loop.RunUntilIdle(); | 401 message_loop.RunUntilIdle(); |
| 402 EXPECT_TRUE(observer.IsCompleted()); | 402 EXPECT_TRUE(observer.IsCompleted()); |
| 403 | 403 |
| 404 policy_->RemoveObserver(&observer); | 404 policy_->RemoveObserver(&observer); |
| 405 } | 405 } |
| OLD | NEW |