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_util.h" | 9 #include "base/string_util.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.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 base::FilePath& root_dir, | 375 const base::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 base::FilePath& root_dir, | 388 const base::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 1784 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2181 return ext; | 2182 return ext; |
2182 } | 2183 } |
2183 | 2184 |
2184 void ExtensionPrefs::SetGeometryCache( | 2185 void ExtensionPrefs::SetGeometryCache( |
2185 const std::string& extension_id, | 2186 const std::string& extension_id, |
2186 scoped_ptr<base::DictionaryValue> cache) { | 2187 scoped_ptr<base::DictionaryValue> cache) { |
2187 UpdateExtensionPref(extension_id, kPrefGeometryCache, cache.release()); | 2188 UpdateExtensionPref(extension_id, kPrefGeometryCache, cache.release()); |
2188 } | 2189 } |
2189 | 2190 |
2190 ExtensionPrefs::ExtensionPrefs( | 2191 ExtensionPrefs::ExtensionPrefs( |
2191 PrefServiceSyncable* prefs, | 2192 PrefService* prefs, |
2192 const base::FilePath& root_dir, | 2193 const base::FilePath& root_dir, |
2193 ExtensionPrefValueMap* extension_pref_value_map, | 2194 ExtensionPrefValueMap* extension_pref_value_map, |
2194 scoped_ptr<TimeProvider> time_provider) | 2195 scoped_ptr<TimeProvider> time_provider) |
2195 : prefs_(prefs), | 2196 : prefs_(prefs), |
2196 install_directory_(root_dir), | 2197 install_directory_(root_dir), |
2197 extension_pref_value_map_(extension_pref_value_map), | 2198 extension_pref_value_map_(extension_pref_value_map), |
2198 ALLOW_THIS_IN_INITIALIZER_LIST(extension_sorting_( | 2199 ALLOW_THIS_IN_INITIALIZER_LIST(extension_sorting_( |
2199 new ExtensionSorting(this, prefs))), | 2200 new ExtensionSorting(this, prefs))), |
2200 content_settings_store_(new ContentSettingsStore()), | 2201 content_settings_store_(new ContentSettingsStore()), |
2201 time_provider_(time_provider.Pass()) { | 2202 time_provider_(time_provider.Pass()) { |
2202 } | 2203 } |
2203 | 2204 |
2204 void ExtensionPrefs::Init(bool extensions_disabled) { | 2205 void ExtensionPrefs::Init(bool extensions_disabled) { |
2205 MakePathsRelative(); | 2206 MakePathsRelative(); |
2206 | 2207 |
2207 InitPrefStore(extensions_disabled); | 2208 InitPrefStore(extensions_disabled); |
2208 | 2209 |
2209 content_settings_store_->AddObserver(this); | 2210 content_settings_store_->AddObserver(this); |
2210 } | 2211 } |
2211 | 2212 |
2212 void ExtensionPrefs::SetNeedsStorageGarbageCollection(bool value) { | 2213 void ExtensionPrefs::SetNeedsStorageGarbageCollection(bool value) { |
2213 prefs_->SetBoolean(prefs::kExtensionStorageGarbageCollect, value); | 2214 prefs_->SetBoolean(prefs::kExtensionStorageGarbageCollect, value); |
2214 } | 2215 } |
2215 | 2216 |
2216 bool ExtensionPrefs::NeedsStorageGarbageCollection() { | 2217 bool ExtensionPrefs::NeedsStorageGarbageCollection() { |
2217 return prefs_->GetBoolean(prefs::kExtensionStorageGarbageCollect); | 2218 return prefs_->GetBoolean(prefs::kExtensionStorageGarbageCollect); |
2218 } | 2219 } |
2219 | 2220 |
2220 // static | 2221 // static |
2221 void ExtensionPrefs::RegisterUserPrefs(PrefServiceSyncable* prefs) { | 2222 void ExtensionPrefs::RegisterUserPrefs(PrefRegistrySyncable* registry) { |
2222 prefs->RegisterDictionaryPref(kExtensionsPref, | 2223 registry->RegisterDictionaryPref(kExtensionsPref, |
2223 PrefServiceSyncable::UNSYNCABLE_PREF); | 2224 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2224 prefs->RegisterListPref(kExtensionToolbar, | 2225 registry->RegisterListPref(kExtensionToolbar, |
2225 PrefServiceSyncable::UNSYNCABLE_PREF); | 2226 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2226 prefs->RegisterListPref(kExtensionActionBox, | 2227 registry->RegisterListPref(kExtensionActionBox, |
2227 PrefServiceSyncable::UNSYNCABLE_PREF); | 2228 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2228 prefs->RegisterListPref(kExtensionActionBoxBar, | 2229 registry->RegisterListPref(kExtensionActionBoxBar, |
2229 PrefServiceSyncable::UNSYNCABLE_PREF); | 2230 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2230 prefs->RegisterIntegerPref(prefs::kExtensionToolbarSize, | 2231 registry->RegisterIntegerPref(prefs::kExtensionToolbarSize, |
2231 -1, // default value | 2232 -1, // default value |
2232 PrefServiceSyncable::UNSYNCABLE_PREF); | 2233 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2233 prefs->RegisterDictionaryPref(kExtensionsBlacklistUpdate, | 2234 registry->RegisterDictionaryPref(kExtensionsBlacklistUpdate, |
2234 PrefServiceSyncable::UNSYNCABLE_PREF); | 2235 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2235 prefs->RegisterListPref(prefs::kExtensionInstallAllowList, | 2236 registry->RegisterListPref(prefs::kExtensionInstallAllowList, |
2236 PrefServiceSyncable::UNSYNCABLE_PREF); | 2237 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2237 prefs->RegisterListPref(prefs::kExtensionInstallDenyList, | 2238 registry->RegisterListPref(prefs::kExtensionInstallDenyList, |
2238 PrefServiceSyncable::UNSYNCABLE_PREF); | 2239 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2239 prefs->RegisterDictionaryPref(prefs::kExtensionInstallForceList, | 2240 registry->RegisterDictionaryPref(prefs::kExtensionInstallForceList, |
2240 PrefServiceSyncable::UNSYNCABLE_PREF); | 2241 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2241 prefs->RegisterListPref(prefs::kExtensionAllowedTypes, | 2242 registry->RegisterListPref(prefs::kExtensionAllowedTypes, |
2242 PrefServiceSyncable::UNSYNCABLE_PREF); | 2243 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2243 prefs->RegisterStringPref(kWebStoreLogin, | 2244 registry->RegisterStringPref(kWebStoreLogin, |
2244 std::string(), // default value | 2245 std::string(), // default value |
2245 PrefServiceSyncable::UNSYNCABLE_PREF); | 2246 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2246 prefs->RegisterStringPref(prefs::kExtensionBlacklistUpdateVersion, | 2247 registry->RegisterStringPref(prefs::kExtensionBlacklistUpdateVersion, |
2247 "0", // default value | 2248 "0", // default value |
2248 PrefServiceSyncable::UNSYNCABLE_PREF); | 2249 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2249 prefs->RegisterBooleanPref(prefs::kExtensionStorageGarbageCollect, | 2250 registry->RegisterBooleanPref(prefs::kExtensionStorageGarbageCollect, |
2250 false, // default value | 2251 false, // default value |
2251 PrefServiceSyncable::UNSYNCABLE_PREF); | 2252 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2252 prefs->RegisterInt64Pref(prefs::kLastExtensionsUpdateCheck, | 2253 registry->RegisterInt64Pref(prefs::kLastExtensionsUpdateCheck, |
2253 0, // default value | 2254 0, // default value |
2254 PrefServiceSyncable::UNSYNCABLE_PREF); | 2255 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2255 prefs->RegisterInt64Pref(prefs::kNextExtensionsUpdateCheck, | 2256 registry->RegisterInt64Pref(prefs::kNextExtensionsUpdateCheck, |
2256 0, // default value | 2257 0, // default value |
2257 PrefServiceSyncable::UNSYNCABLE_PREF); | 2258 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2258 prefs->RegisterListPref(prefs::kExtensionAllowedInstallSites, | 2259 registry->RegisterListPref(prefs::kExtensionAllowedInstallSites, |
2259 PrefServiceSyncable::UNSYNCABLE_PREF); | 2260 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2260 prefs->RegisterStringPref(kExtensionsLastChromeVersion, | 2261 registry->RegisterStringPref(kExtensionsLastChromeVersion, |
2261 std::string(), // default value | 2262 std::string(), // default value |
2262 PrefServiceSyncable::UNSYNCABLE_PREF); | 2263 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2263 prefs->RegisterBooleanPref(kSideloadWipeoutDone, | 2264 registry->RegisterBooleanPref(kSideloadWipeoutDone, |
2264 false, | 2265 false, |
2265 PrefServiceSyncable::UNSYNCABLE_PREF); | 2266 PrefRegistrySyncable::UNSYNCABLE_PREF); |
2266 } | 2267 } |
2267 | 2268 |
2268 ExtensionIdList ExtensionPrefs::GetExtensionPrefAsVector( | 2269 ExtensionIdList ExtensionPrefs::GetExtensionPrefAsVector( |
2269 const char* pref) { | 2270 const char* pref) { |
2270 ExtensionIdList extension_ids; | 2271 ExtensionIdList extension_ids; |
2271 const ListValue* list_of_values = prefs_->GetList(pref); | 2272 const ListValue* list_of_values = prefs_->GetList(pref); |
2272 if (!list_of_values) | 2273 if (!list_of_values) |
2273 return extension_ids; | 2274 return extension_ids; |
2274 | 2275 |
2275 std::string extension_id; | 2276 std::string extension_id; |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2363 is_enabled = initial_state == Extension::ENABLED; | 2364 is_enabled = initial_state == Extension::ENABLED; |
2364 } | 2365 } |
2365 | 2366 |
2366 extension_pref_value_map_->RegisterExtension(extension_id, install_time, | 2367 extension_pref_value_map_->RegisterExtension(extension_id, install_time, |
2367 is_enabled); | 2368 is_enabled); |
2368 content_settings_store_->RegisterExtension(extension_id, install_time, | 2369 content_settings_store_->RegisterExtension(extension_id, install_time, |
2369 is_enabled); | 2370 is_enabled); |
2370 } | 2371 } |
2371 | 2372 |
2372 } // namespace extensions | 2373 } // namespace extensions |
OLD | NEW |