OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/logging.h" | 8 #include "base/logging.h" |
9 #include "chrome/browser/content_settings/cookie_settings.h" | 9 #include "chrome/browser/content_settings/cookie_settings.h" |
10 #include "chrome/common/content_settings.h" | 10 #include "chrome/common/content_settings.h" |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 return false; | 54 return false; |
55 } | 55 } |
56 | 56 |
57 bool ExtensionSpecialStoragePolicy::IsFileHandler( | 57 bool ExtensionSpecialStoragePolicy::IsFileHandler( |
58 const std::string& extension_id) { | 58 const std::string& extension_id) { |
59 base::AutoLock locker(lock_); | 59 base::AutoLock locker(lock_); |
60 return file_handler_extensions_.ContainsExtension(extension_id); | 60 return file_handler_extensions_.ContainsExtension(extension_id); |
61 } | 61 } |
62 | 62 |
63 void ExtensionSpecialStoragePolicy::GrantRightsForExtension( | 63 void ExtensionSpecialStoragePolicy::GrantRightsForExtension( |
64 const Extension* extension) { | 64 const extensions::Extension* extension) { |
65 DCHECK(extension); | 65 DCHECK(extension); |
66 if (!extension->is_hosted_app() && | 66 if (!extension->is_hosted_app() && |
67 !extension->HasAPIPermission( | 67 !extension->HasAPIPermission( |
68 ExtensionAPIPermission::kUnlimitedStorage) && | 68 ExtensionAPIPermission::kUnlimitedStorage) && |
69 !extension->HasAPIPermission( | 69 !extension->HasAPIPermission( |
70 ExtensionAPIPermission::kFileBrowserHandler)) { | 70 ExtensionAPIPermission::kFileBrowserHandler)) { |
71 return; | 71 return; |
72 } | 72 } |
73 { | 73 { |
74 base::AutoLock locker(lock_); | 74 base::AutoLock locker(lock_); |
75 if (extension->is_hosted_app() && !extension->from_bookmark()) | 75 if (extension->is_hosted_app() && !extension->from_bookmark()) |
76 protected_apps_.Add(extension); | 76 protected_apps_.Add(extension); |
77 if (extension->HasAPIPermission(ExtensionAPIPermission::kUnlimitedStorage)) | 77 if (extension->HasAPIPermission(ExtensionAPIPermission::kUnlimitedStorage)) |
78 unlimited_extensions_.Add(extension); | 78 unlimited_extensions_.Add(extension); |
79 if (extension->HasAPIPermission( | 79 if (extension->HasAPIPermission( |
80 ExtensionAPIPermission::kFileBrowserHandler)) { | 80 ExtensionAPIPermission::kFileBrowserHandler)) { |
81 file_handler_extensions_.Add(extension); | 81 file_handler_extensions_.Add(extension); |
82 } | 82 } |
83 } | 83 } |
84 NotifyChanged(); | 84 NotifyChanged(); |
85 } | 85 } |
86 | 86 |
87 void ExtensionSpecialStoragePolicy::RevokeRightsForExtension( | 87 void ExtensionSpecialStoragePolicy::RevokeRightsForExtension( |
88 const Extension* extension) { | 88 const extensions::Extension* extension) { |
89 DCHECK(extension); | 89 DCHECK(extension); |
90 if (!extension->is_hosted_app() && | 90 if (!extension->is_hosted_app() && |
91 !extension->HasAPIPermission( | 91 !extension->HasAPIPermission( |
92 ExtensionAPIPermission::kUnlimitedStorage) && | 92 ExtensionAPIPermission::kUnlimitedStorage) && |
93 !extension->HasAPIPermission( | 93 !extension->HasAPIPermission( |
94 ExtensionAPIPermission::kFileBrowserHandler)) { | 94 ExtensionAPIPermission::kFileBrowserHandler)) { |
95 return; | 95 return; |
96 } | 96 } |
97 { | 97 { |
98 base::AutoLock locker(lock_); | 98 base::AutoLock locker(lock_); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 cached_results_[origin] = false; | 151 cached_results_[origin] = false; |
152 return false; | 152 return false; |
153 } | 153 } |
154 | 154 |
155 bool ExtensionSpecialStoragePolicy::SpecialCollection::ContainsExtension( | 155 bool ExtensionSpecialStoragePolicy::SpecialCollection::ContainsExtension( |
156 const std::string& extension_id) { | 156 const std::string& extension_id) { |
157 return extensions_.find(extension_id) != extensions_.end(); | 157 return extensions_.find(extension_id) != extensions_.end(); |
158 } | 158 } |
159 | 159 |
160 void ExtensionSpecialStoragePolicy::SpecialCollection::Add( | 160 void ExtensionSpecialStoragePolicy::SpecialCollection::Add( |
161 const Extension* extension) { | 161 const extensions::Extension* extension) { |
162 cached_results_.clear(); | 162 cached_results_.clear(); |
163 extensions_[extension->id()] = extension; | 163 extensions_[extension->id()] = extension; |
164 } | 164 } |
165 | 165 |
166 void ExtensionSpecialStoragePolicy::SpecialCollection::Remove( | 166 void ExtensionSpecialStoragePolicy::SpecialCollection::Remove( |
167 const Extension* extension) { | 167 const extensions::Extension* extension) { |
168 cached_results_.clear(); | 168 cached_results_.clear(); |
169 extensions_.erase(extension->id()); | 169 extensions_.erase(extension->id()); |
170 } | 170 } |
171 | 171 |
172 void ExtensionSpecialStoragePolicy::SpecialCollection::Clear() { | 172 void ExtensionSpecialStoragePolicy::SpecialCollection::Clear() { |
173 cached_results_.clear(); | 173 cached_results_.clear(); |
174 extensions_.clear(); | 174 extensions_.clear(); |
175 } | 175 } |
OLD | NEW |