| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/stateful_external_extension_provider.h" | 5 #include "chrome/browser/extensions/stateful_external_extension_provider.h" |
| 6 | 6 |
| 7 #include "app/app_paths.h" | 7 #include "app/app_paths.h" |
| 8 #include "base/file_path.h" | 8 #include "base/file_path.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 Extension::Location download_location) | 27 Extension::Location download_location) |
| 28 : crx_location_(crx_location), | 28 : crx_location_(crx_location), |
| 29 download_location_(download_location) { | 29 download_location_(download_location) { |
| 30 } | 30 } |
| 31 | 31 |
| 32 StatefulExternalExtensionProvider::~StatefulExternalExtensionProvider() { | 32 StatefulExternalExtensionProvider::~StatefulExternalExtensionProvider() { |
| 33 } | 33 } |
| 34 | 34 |
| 35 void StatefulExternalExtensionProvider::VisitRegisteredExtension( | 35 void StatefulExternalExtensionProvider::VisitRegisteredExtension( |
| 36 Visitor* visitor) const { | 36 Visitor* visitor) const { |
| 37 DCHECK(prefs_.get()); |
| 37 for (DictionaryValue::key_iterator i = prefs_->begin_keys(); | 38 for (DictionaryValue::key_iterator i = prefs_->begin_keys(); |
| 38 i != prefs_->end_keys(); ++i) { | 39 i != prefs_->end_keys(); ++i) { |
| 39 const std::string& extension_id = *i; | 40 const std::string& extension_id = *i; |
| 40 DictionaryValue* extension; | 41 DictionaryValue* extension; |
| 41 if (!prefs_->GetDictionaryWithoutPathExpansion(extension_id, &extension)) | 42 if (!prefs_->GetDictionaryWithoutPathExpansion(extension_id, &extension)) |
| 42 continue; | 43 continue; |
| 43 | 44 |
| 44 FilePath::StringType external_crx; | 45 FilePath::StringType external_crx; |
| 45 std::string external_version; | 46 std::string external_version; |
| 46 std::string external_update_url; | 47 std::string external_update_url; |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 continue; | 114 continue; |
| 114 } | 115 } |
| 115 visitor->OnExternalExtensionUpdateUrlFound( | 116 visitor->OnExternalExtensionUpdateUrlFound( |
| 116 extension_id, update_url, download_location_); | 117 extension_id, update_url, download_location_); |
| 117 } | 118 } |
| 118 } | 119 } |
| 119 } | 120 } |
| 120 | 121 |
| 121 bool StatefulExternalExtensionProvider::HasExtension( | 122 bool StatefulExternalExtensionProvider::HasExtension( |
| 122 const std::string& id) const { | 123 const std::string& id) const { |
| 124 DCHECK(prefs_.get()); |
| 123 return prefs_->HasKey(id); | 125 return prefs_->HasKey(id); |
| 124 } | 126 } |
| 125 | 127 |
| 126 bool StatefulExternalExtensionProvider::GetExtensionDetails( | 128 bool StatefulExternalExtensionProvider::GetExtensionDetails( |
| 127 const std::string& id, Extension::Location* location, | 129 const std::string& id, Extension::Location* location, |
| 128 scoped_ptr<Version>* version) const { | 130 scoped_ptr<Version>* version) const { |
| 131 DCHECK(prefs_.get()); |
| 129 DictionaryValue* extension = NULL; | 132 DictionaryValue* extension = NULL; |
| 130 if (!prefs_->GetDictionary(id, &extension)) | 133 if (!prefs_->GetDictionary(id, &extension)) |
| 131 return false; | 134 return false; |
| 132 | 135 |
| 133 Extension::Location loc = Extension::INVALID; | 136 Extension::Location loc = Extension::INVALID; |
| 134 if (extension->HasKey(kExternalUpdateUrl)) { | 137 if (extension->HasKey(kExternalUpdateUrl)) { |
| 135 loc = download_location_; | 138 loc = download_location_; |
| 136 | 139 |
| 137 } else if (extension->HasKey(kExternalCrx)) { | 140 } else if (extension->HasKey(kExternalCrx)) { |
| 138 loc = crx_location_; | 141 loc = crx_location_; |
| 139 | 142 |
| 140 std::string external_version; | 143 std::string external_version; |
| 141 if (!extension->GetString(kExternalVersion, &external_version)) | 144 if (!extension->GetString(kExternalVersion, &external_version)) |
| 142 return false; | 145 return false; |
| 143 | 146 |
| 144 if (version) | 147 if (version) |
| 145 version->reset(Version::GetVersionFromString(external_version)); | 148 version->reset(Version::GetVersionFromString(external_version)); |
| 146 | 149 |
| 147 } else { | 150 } else { |
| 148 NOTREACHED(); // Chrome should not allow prefs to get into this state. | 151 NOTREACHED(); // Chrome should not allow prefs to get into this state. |
| 149 return false; | 152 return false; |
| 150 } | 153 } |
| 151 | 154 |
| 152 if (location) | 155 if (location) |
| 153 *location = loc; | 156 *location = loc; |
| 154 | 157 |
| 155 return true; | 158 return true; |
| 156 } | 159 } |
| 160 |
| 161 void StatefulExternalExtensionProvider::set_prefs(DictionaryValue* prefs) { |
| 162 prefs_.reset(prefs); |
| 163 } |
| OLD | NEW |