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/extensions/extension_special_storage_policy.h" | 5 #include "chrome/browser/extensions/extension_special_storage_policy.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
12 #include "chrome/browser/content_settings/cookie_settings.h" | 12 #include "chrome/browser/content_settings/cookie_settings.h" |
13 #include "chrome/common/chrome_switches.h" | 13 #include "chrome/common/chrome_switches.h" |
14 #include "chrome/common/content_settings.h" | 14 #include "chrome/common/content_settings.h" |
15 #include "chrome/common/content_settings_types.h" | 15 #include "chrome/common/content_settings_types.h" |
16 #include "chrome/common/extensions/manifest_handlers/app_isolation_info.h" | 16 #include "chrome/common/extensions/manifest_handlers/app_isolation_info.h" |
17 #include "chrome/common/url_constants.h" | 17 #include "chrome/common/url_constants.h" |
18 #include "content/public/browser/browser_thread.h" | 18 #include "content/public/browser/browser_thread.h" |
19 #include "extensions/common/constants.h" | 19 #include "extensions/common/constants.h" |
20 #include "extensions/common/extension.h" | 20 #include "extensions/common/extension.h" |
| 21 #include "extensions/common/extension_set.h" |
21 | 22 |
22 using content::BrowserThread; | 23 using content::BrowserThread; |
23 using extensions::APIPermission; | 24 using extensions::APIPermission; |
24 using extensions::Extension; | 25 using extensions::Extension; |
25 using quota::SpecialStoragePolicy; | 26 using quota::SpecialStoragePolicy; |
26 | 27 |
27 ExtensionSpecialStoragePolicy::ExtensionSpecialStoragePolicy( | 28 ExtensionSpecialStoragePolicy::ExtensionSpecialStoragePolicy( |
28 CookieSettings* cookie_settings) | 29 CookieSettings* cookie_settings) |
29 : cookie_settings_(cookie_settings) {} | 30 : cookie_settings_(cookie_settings) {} |
30 | 31 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 bool ExtensionSpecialStoragePolicy::HasIsolatedStorage(const GURL& origin) { | 80 bool ExtensionSpecialStoragePolicy::HasIsolatedStorage(const GURL& origin) { |
80 base::AutoLock locker(lock_); | 81 base::AutoLock locker(lock_); |
81 return isolated_extensions_.Contains(origin); | 82 return isolated_extensions_.Contains(origin); |
82 } | 83 } |
83 | 84 |
84 bool ExtensionSpecialStoragePolicy::NeedsProtection( | 85 bool ExtensionSpecialStoragePolicy::NeedsProtection( |
85 const extensions::Extension* extension) { | 86 const extensions::Extension* extension) { |
86 return extension->is_hosted_app() && !extension->from_bookmark(); | 87 return extension->is_hosted_app() && !extension->from_bookmark(); |
87 } | 88 } |
88 | 89 |
89 const ExtensionSet* ExtensionSpecialStoragePolicy::ExtensionsProtectingOrigin( | 90 const extensions::ExtensionSet* |
| 91 ExtensionSpecialStoragePolicy::ExtensionsProtectingOrigin( |
90 const GURL& origin) { | 92 const GURL& origin) { |
91 base::AutoLock locker(lock_); | 93 base::AutoLock locker(lock_); |
92 return protected_apps_.ExtensionsContaining(origin); | 94 return protected_apps_.ExtensionsContaining(origin); |
93 } | 95 } |
94 | 96 |
95 void ExtensionSpecialStoragePolicy::GrantRightsForExtension( | 97 void ExtensionSpecialStoragePolicy::GrantRightsForExtension( |
96 const extensions::Extension* extension) { | 98 const extensions::Extension* extension) { |
97 DCHECK(extension); | 99 DCHECK(extension); |
98 if (!(NeedsProtection(extension) || | 100 if (!(NeedsProtection(extension) || |
99 extension->HasAPIPermission(APIPermission::kUnlimitedStorage) || | 101 extension->HasAPIPermission(APIPermission::kUnlimitedStorage) || |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 | 224 |
223 ExtensionSpecialStoragePolicy::SpecialCollection::~SpecialCollection() { | 225 ExtensionSpecialStoragePolicy::SpecialCollection::~SpecialCollection() { |
224 STLDeleteValues(&cached_results_); | 226 STLDeleteValues(&cached_results_); |
225 } | 227 } |
226 | 228 |
227 bool ExtensionSpecialStoragePolicy::SpecialCollection::Contains( | 229 bool ExtensionSpecialStoragePolicy::SpecialCollection::Contains( |
228 const GURL& origin) { | 230 const GURL& origin) { |
229 return !ExtensionsContaining(origin)->is_empty(); | 231 return !ExtensionsContaining(origin)->is_empty(); |
230 } | 232 } |
231 | 233 |
232 const ExtensionSet* | 234 const extensions::ExtensionSet* |
233 ExtensionSpecialStoragePolicy::SpecialCollection::ExtensionsContaining( | 235 ExtensionSpecialStoragePolicy::SpecialCollection::ExtensionsContaining( |
234 const GURL& origin) { | 236 const GURL& origin) { |
235 CachedResults::const_iterator found = cached_results_.find(origin); | 237 CachedResults::const_iterator found = cached_results_.find(origin); |
236 if (found != cached_results_.end()) | 238 if (found != cached_results_.end()) |
237 return found->second; | 239 return found->second; |
238 | 240 |
239 ExtensionSet* result = new ExtensionSet(); | 241 extensions::ExtensionSet* result = new extensions::ExtensionSet(); |
240 for (ExtensionSet::const_iterator iter = extensions_.begin(); | 242 for (extensions::ExtensionSet::const_iterator iter = extensions_.begin(); |
241 iter != extensions_.end(); ++iter) { | 243 iter != extensions_.end(); ++iter) { |
242 if ((*iter)->OverlapsWithOrigin(origin)) | 244 if ((*iter)->OverlapsWithOrigin(origin)) |
243 result->Insert(*iter); | 245 result->Insert(*iter); |
244 } | 246 } |
245 cached_results_[origin] = result; | 247 cached_results_[origin] = result; |
246 return result; | 248 return result; |
247 } | 249 } |
248 | 250 |
249 bool ExtensionSpecialStoragePolicy::SpecialCollection::ContainsExtension( | 251 bool ExtensionSpecialStoragePolicy::SpecialCollection::ContainsExtension( |
250 const std::string& extension_id) { | 252 const std::string& extension_id) { |
(...skipping 14 matching lines...) Expand all Loading... |
265 | 267 |
266 void ExtensionSpecialStoragePolicy::SpecialCollection::Clear() { | 268 void ExtensionSpecialStoragePolicy::SpecialCollection::Clear() { |
267 ClearCache(); | 269 ClearCache(); |
268 extensions_.Clear(); | 270 extensions_.Clear(); |
269 } | 271 } |
270 | 272 |
271 void ExtensionSpecialStoragePolicy::SpecialCollection::ClearCache() { | 273 void ExtensionSpecialStoragePolicy::SpecialCollection::ClearCache() { |
272 STLDeleteValues(&cached_results_); | 274 STLDeleteValues(&cached_results_); |
273 cached_results_.clear(); | 275 cached_results_.clear(); |
274 } | 276 } |
OLD | NEW |