| 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 |