| 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_prefs.h" | 5 #include "chrome/browser/extensions/extension_prefs.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/prefs/pref_notifier.h" | 8 #include "base/prefs/pref_notifier.h" |
| 9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| 11 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
| 12 #include "base/version.h" | 12 #include "base/version.h" |
| 13 #include "chrome/browser/extensions/admin_policy.h" | 13 #include "chrome/browser/extensions/admin_policy.h" |
| 14 #include "chrome/browser/extensions/api/omnibox/omnibox_api.h" | 14 #include "chrome/browser/extensions/api/omnibox/omnibox_api.h" |
| 15 #include "chrome/browser/extensions/extension_pref_store.h" | 15 #include "chrome/browser/extensions/extension_pref_store.h" |
| 16 #include "chrome/browser/extensions/extension_sorting.h" | 16 #include "chrome/browser/extensions/extension_sorting.h" |
| 17 #include "chrome/browser/prefs/pref_registry_syncable.h" |
| 17 #include "chrome/browser/prefs/pref_service.h" | 18 #include "chrome/browser/prefs/pref_service.h" |
| 18 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 19 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
| 19 #include "chrome/common/chrome_notification_types.h" | 20 #include "chrome/common/chrome_notification_types.h" |
| 20 #include "chrome/common/chrome_switches.h" | 21 #include "chrome/common/chrome_switches.h" |
| 21 #include "chrome/common/chrome_version_info.h" | 22 #include "chrome/common/chrome_version_info.h" |
| 22 #include "chrome/common/extensions/feature_switch.h" | 23 #include "chrome/common/extensions/feature_switch.h" |
| 23 #include "chrome/common/extensions/manifest.h" | 24 #include "chrome/common/extensions/manifest.h" |
| 24 #include "chrome/common/extensions/permissions/permission_set.h" | 25 #include "chrome/common/extensions/permissions/permission_set.h" |
| 25 #include "chrome/common/extensions/permissions/permissions_info.h" | 26 #include "chrome/common/extensions/permissions/permissions_info.h" |
| 26 #include "chrome/common/pref_names.h" | 27 #include "chrome/common/pref_names.h" |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 base::Time ExtensionPrefs::TimeProvider::GetCurrentTime() const { | 364 base::Time ExtensionPrefs::TimeProvider::GetCurrentTime() const { |
| 364 return base::Time::Now(); | 365 return base::Time::Now(); |
| 365 } | 366 } |
| 366 | 367 |
| 367 // | 368 // |
| 368 // ExtensionPrefs | 369 // ExtensionPrefs |
| 369 // | 370 // |
| 370 | 371 |
| 371 // static | 372 // static |
| 372 scoped_ptr<ExtensionPrefs> ExtensionPrefs::Create( | 373 scoped_ptr<ExtensionPrefs> ExtensionPrefs::Create( |
| 373 PrefServiceSyncable* prefs, | 374 PrefService* prefs, |
| 374 const FilePath& root_dir, | 375 const FilePath& root_dir, |
| 375 ExtensionPrefValueMap* extension_pref_value_map, | 376 ExtensionPrefValueMap* extension_pref_value_map, |
| 376 bool extensions_disabled) { | 377 bool extensions_disabled) { |
| 377 return ExtensionPrefs::Create(prefs, | 378 return ExtensionPrefs::Create(prefs, |
| 378 root_dir, | 379 root_dir, |
| 379 extension_pref_value_map, | 380 extension_pref_value_map, |
| 380 extensions_disabled, | 381 extensions_disabled, |
| 381 make_scoped_ptr(new TimeProvider())); | 382 make_scoped_ptr(new TimeProvider())); |
| 382 } | 383 } |
| 383 | 384 |
| 384 // static | 385 // static |
| 385 scoped_ptr<ExtensionPrefs> ExtensionPrefs::Create( | 386 scoped_ptr<ExtensionPrefs> ExtensionPrefs::Create( |
| 386 PrefServiceSyncable* pref_service, | 387 PrefService* pref_service, |
| 387 const FilePath& root_dir, | 388 const FilePath& root_dir, |
| 388 ExtensionPrefValueMap* extension_pref_value_map, | 389 ExtensionPrefValueMap* extension_pref_value_map, |
| 389 bool extensions_disabled, | 390 bool extensions_disabled, |
| 390 scoped_ptr<TimeProvider> time_provider) { | 391 scoped_ptr<TimeProvider> time_provider) { |
| 391 scoped_ptr<ExtensionPrefs> prefs( | 392 scoped_ptr<ExtensionPrefs> prefs( |
| 392 new ExtensionPrefs(pref_service, | 393 new ExtensionPrefs(pref_service, |
| 393 root_dir, | 394 root_dir, |
| 394 extension_pref_value_map, | 395 extension_pref_value_map, |
| 395 time_provider.Pass())); | 396 time_provider.Pass())); |
| 396 prefs->Init(extensions_disabled); | 397 prefs->Init(extensions_disabled); |
| (...skipping 1780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2177 return ext; | 2178 return ext; |
| 2178 } | 2179 } |
| 2179 | 2180 |
| 2180 void ExtensionPrefs::SetGeometryCache( | 2181 void ExtensionPrefs::SetGeometryCache( |
| 2181 const std::string& extension_id, | 2182 const std::string& extension_id, |
| 2182 scoped_ptr<base::DictionaryValue> cache) { | 2183 scoped_ptr<base::DictionaryValue> cache) { |
| 2183 UpdateExtensionPref(extension_id, kPrefGeometryCache, cache.release()); | 2184 UpdateExtensionPref(extension_id, kPrefGeometryCache, cache.release()); |
| 2184 } | 2185 } |
| 2185 | 2186 |
| 2186 ExtensionPrefs::ExtensionPrefs( | 2187 ExtensionPrefs::ExtensionPrefs( |
| 2187 PrefServiceSyncable* prefs, | 2188 PrefService* prefs, |
| 2188 const FilePath& root_dir, | 2189 const FilePath& root_dir, |
| 2189 ExtensionPrefValueMap* extension_pref_value_map, | 2190 ExtensionPrefValueMap* extension_pref_value_map, |
| 2190 scoped_ptr<TimeProvider> time_provider) | 2191 scoped_ptr<TimeProvider> time_provider) |
| 2191 : prefs_(prefs), | 2192 : prefs_(prefs), |
| 2192 install_directory_(root_dir), | 2193 install_directory_(root_dir), |
| 2193 extension_pref_value_map_(extension_pref_value_map), | 2194 extension_pref_value_map_(extension_pref_value_map), |
| 2194 ALLOW_THIS_IN_INITIALIZER_LIST(extension_sorting_( | 2195 ALLOW_THIS_IN_INITIALIZER_LIST(extension_sorting_( |
| 2195 new ExtensionSorting(this, prefs))), | 2196 new ExtensionSorting(this, prefs))), |
| 2196 content_settings_store_(new ContentSettingsStore()), | 2197 content_settings_store_(new ContentSettingsStore()), |
| 2197 time_provider_(time_provider.Pass()) { | 2198 time_provider_(time_provider.Pass()) { |
| 2198 } | 2199 } |
| 2199 | 2200 |
| 2200 void ExtensionPrefs::Init(bool extensions_disabled) { | 2201 void ExtensionPrefs::Init(bool extensions_disabled) { |
| 2201 MakePathsRelative(); | 2202 MakePathsRelative(); |
| 2202 | 2203 |
| 2203 InitPrefStore(extensions_disabled); | 2204 InitPrefStore(extensions_disabled); |
| 2204 | 2205 |
| 2205 content_settings_store_->AddObserver(this); | 2206 content_settings_store_->AddObserver(this); |
| 2206 } | 2207 } |
| 2207 | 2208 |
| 2208 void ExtensionPrefs::SetNeedsStorageGarbageCollection(bool value) { | 2209 void ExtensionPrefs::SetNeedsStorageGarbageCollection(bool value) { |
| 2209 prefs_->SetBoolean(prefs::kExtensionStorageGarbageCollect, value); | 2210 prefs_->SetBoolean(prefs::kExtensionStorageGarbageCollect, value); |
| 2210 } | 2211 } |
| 2211 | 2212 |
| 2212 bool ExtensionPrefs::NeedsStorageGarbageCollection() { | 2213 bool ExtensionPrefs::NeedsStorageGarbageCollection() { |
| 2213 return prefs_->GetBoolean(prefs::kExtensionStorageGarbageCollect); | 2214 return prefs_->GetBoolean(prefs::kExtensionStorageGarbageCollect); |
| 2214 } | 2215 } |
| 2215 | 2216 |
| 2216 // static | 2217 // static |
| 2217 void ExtensionPrefs::RegisterUserPrefs(PrefServiceSyncable* prefs) { | 2218 void ExtensionPrefs::RegisterUserPrefs(PrefRegistrySyncable* registry) { |
| 2218 prefs->RegisterDictionaryPref(kExtensionsPref, | 2219 registry->RegisterDictionaryPref(kExtensionsPref, |
| 2219 PrefServiceSyncable::UNSYNCABLE_PREF); | 2220 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2220 prefs->RegisterListPref(kExtensionToolbar, | 2221 registry->RegisterListPref(kExtensionToolbar, |
| 2221 PrefServiceSyncable::UNSYNCABLE_PREF); | 2222 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2222 prefs->RegisterListPref(kExtensionActionBox, | 2223 registry->RegisterListPref(kExtensionActionBox, |
| 2223 PrefServiceSyncable::UNSYNCABLE_PREF); | 2224 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2224 prefs->RegisterListPref(kExtensionActionBoxBar, | 2225 registry->RegisterListPref(kExtensionActionBoxBar, |
| 2225 PrefServiceSyncable::UNSYNCABLE_PREF); | 2226 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2226 prefs->RegisterIntegerPref(prefs::kExtensionToolbarSize, | 2227 registry->RegisterIntegerPref(prefs::kExtensionToolbarSize, |
| 2227 -1, // default value | 2228 -1, // default value |
| 2228 PrefServiceSyncable::UNSYNCABLE_PREF); | 2229 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2229 prefs->RegisterDictionaryPref(kExtensionsBlacklistUpdate, | 2230 registry->RegisterDictionaryPref(kExtensionsBlacklistUpdate, |
| 2230 PrefServiceSyncable::UNSYNCABLE_PREF); | 2231 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2231 prefs->RegisterListPref(prefs::kExtensionInstallAllowList, | 2232 registry->RegisterListPref(prefs::kExtensionInstallAllowList, |
| 2232 PrefServiceSyncable::UNSYNCABLE_PREF); | 2233 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2233 prefs->RegisterListPref(prefs::kExtensionInstallDenyList, | 2234 registry->RegisterListPref(prefs::kExtensionInstallDenyList, |
| 2234 PrefServiceSyncable::UNSYNCABLE_PREF); | 2235 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2235 prefs->RegisterDictionaryPref(prefs::kExtensionInstallForceList, | 2236 registry->RegisterDictionaryPref(prefs::kExtensionInstallForceList, |
| 2236 PrefServiceSyncable::UNSYNCABLE_PREF); | 2237 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2237 prefs->RegisterListPref(prefs::kExtensionAllowedTypes, | 2238 registry->RegisterListPref(prefs::kExtensionAllowedTypes, |
| 2238 PrefServiceSyncable::UNSYNCABLE_PREF); | 2239 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2239 prefs->RegisterStringPref(kWebStoreLogin, | 2240 registry->RegisterStringPref(kWebStoreLogin, |
| 2240 std::string(), // default value | 2241 std::string(), // default value |
| 2241 PrefServiceSyncable::UNSYNCABLE_PREF); | 2242 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2242 prefs->RegisterStringPref(prefs::kExtensionBlacklistUpdateVersion, | 2243 registry->RegisterStringPref(prefs::kExtensionBlacklistUpdateVersion, |
| 2243 "0", // default value | 2244 "0", // default value |
| 2244 PrefServiceSyncable::UNSYNCABLE_PREF); | 2245 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2245 prefs->RegisterBooleanPref(prefs::kExtensionStorageGarbageCollect, | 2246 registry->RegisterBooleanPref(prefs::kExtensionStorageGarbageCollect, |
| 2246 false, // default value | 2247 false, // default value |
| 2247 PrefServiceSyncable::UNSYNCABLE_PREF); | 2248 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2248 prefs->RegisterInt64Pref(prefs::kLastExtensionsUpdateCheck, | 2249 registry->RegisterInt64Pref(prefs::kLastExtensionsUpdateCheck, |
| 2249 0, // default value | 2250 0, // default value |
| 2250 PrefServiceSyncable::UNSYNCABLE_PREF); | 2251 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2251 prefs->RegisterInt64Pref(prefs::kNextExtensionsUpdateCheck, | 2252 registry->RegisterInt64Pref(prefs::kNextExtensionsUpdateCheck, |
| 2252 0, // default value | 2253 0, // default value |
| 2253 PrefServiceSyncable::UNSYNCABLE_PREF); | 2254 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2254 prefs->RegisterListPref(prefs::kExtensionAllowedInstallSites, | 2255 registry->RegisterListPref(prefs::kExtensionAllowedInstallSites, |
| 2255 PrefServiceSyncable::UNSYNCABLE_PREF); | 2256 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2256 prefs->RegisterStringPref(kExtensionsLastChromeVersion, | 2257 registry->RegisterStringPref(kExtensionsLastChromeVersion, |
| 2257 std::string(), // default value | 2258 std::string(), // default value |
| 2258 PrefServiceSyncable::UNSYNCABLE_PREF); | 2259 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2259 prefs->RegisterBooleanPref(kSideloadWipeoutDone, | 2260 registry->RegisterBooleanPref(kSideloadWipeoutDone, |
| 2260 false, | 2261 false, |
| 2261 PrefServiceSyncable::UNSYNCABLE_PREF); | 2262 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 2262 } | 2263 } |
| 2263 | 2264 |
| 2264 ExtensionIdList ExtensionPrefs::GetExtensionPrefAsVector( | 2265 ExtensionIdList ExtensionPrefs::GetExtensionPrefAsVector( |
| 2265 const char* pref) { | 2266 const char* pref) { |
| 2266 ExtensionIdList extension_ids; | 2267 ExtensionIdList extension_ids; |
| 2267 const ListValue* list_of_values = prefs_->GetList(pref); | 2268 const ListValue* list_of_values = prefs_->GetList(pref); |
| 2268 if (!list_of_values) | 2269 if (!list_of_values) |
| 2269 return extension_ids; | 2270 return extension_ids; |
| 2270 | 2271 |
| 2271 std::string extension_id; | 2272 std::string extension_id; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2359 is_enabled = initial_state == Extension::ENABLED; | 2360 is_enabled = initial_state == Extension::ENABLED; |
| 2360 } | 2361 } |
| 2361 | 2362 |
| 2362 extension_pref_value_map_->RegisterExtension(extension_id, install_time, | 2363 extension_pref_value_map_->RegisterExtension(extension_id, install_time, |
| 2363 is_enabled); | 2364 is_enabled); |
| 2364 content_settings_store_->RegisterExtension(extension_id, install_time, | 2365 content_settings_store_->RegisterExtension(extension_id, install_time, |
| 2365 is_enabled); | 2366 is_enabled); |
| 2366 } | 2367 } |
| 2367 | 2368 |
| 2368 } // namespace extensions | 2369 } // namespace extensions |
| OLD | NEW |