| Index: chrome/browser/extensions/extension_prefs.cc
|
| diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
|
| index 3b536c0064e02ec4ec87ea3d52e3432c1f82d19b..15cd176595716c9e27ed13a4430de6317505c65b 100644
|
| --- a/chrome/browser/extensions/extension_prefs.cc
|
| +++ b/chrome/browser/extensions/extension_prefs.cc
|
| @@ -7,6 +7,7 @@
|
| #include "base/string_number_conversions.h"
|
| #include "base/string_util.h"
|
| #include "base/utf_string_conversions.h"
|
| +#include "base/version.h"
|
| #include "chrome/browser/extensions/admin_policy.h"
|
| #include "chrome/browser/extensions/api/omnibox/omnibox_api.h"
|
| #include "chrome/browser/extensions/extension_pref_store.h"
|
| @@ -15,6 +16,7 @@
|
| #include "chrome/browser/prefs/pref_service.h"
|
| #include "chrome/browser/prefs/scoped_user_pref_update.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| +#include "chrome/common/chrome_version_info.h"
|
| #include "chrome/common/extensions/extension_switch_utils.h"
|
| #include "chrome/common/extensions/manifest.h"
|
| #include "chrome/common/extensions/permissions/permission_set.h"
|
| @@ -205,6 +207,9 @@ const char kMediaGalleryIdKey[] = "id";
|
| // Key for Media Gallery Permission Value.
|
| const char kMediaGalleryHasPermissionKey[] = "has_permission";
|
|
|
| +// Key for what version chrome was last time the extension prefs were loaded.
|
| +const char kExtensionsLastChromeVersion[] = "extensions.last_chrome_version";
|
| +
|
| // Provider of write access to a dictionary storing extension prefs.
|
| class ScopedExtensionPrefUpdate : public DictionaryPrefUpdate {
|
| public:
|
| @@ -960,6 +965,17 @@ void ExtensionPrefs::MigrateDisableReasons(
|
| }
|
| }
|
|
|
| +void ExtensionPrefs::ClearRegisteredEvents() {
|
| + const DictionaryValue* extensions = prefs_->GetDictionary(kExtensionsPref);
|
| + if (!extensions)
|
| + return;
|
| +
|
| + for (DictionaryValue::key_iterator it = extensions->begin_keys();
|
| + it != extensions->end_keys(); ++it) {
|
| + UpdateExtensionPref(*it, kRegisteredEvents, NULL);
|
| + }
|
| +}
|
| +
|
| PermissionSet* ExtensionPrefs::GetGrantedPermissions(
|
| const std::string& extension_id) {
|
| CHECK(Extension::IdIsValid(extension_id));
|
| @@ -1015,6 +1031,26 @@ void ExtensionPrefs::SetActivePermissions(
|
| extension_id, kPrefActivePermissions, permissions);
|
| }
|
|
|
| +bool ExtensionPrefs::CheckRegisteredEventsUpToDate() {
|
| + Version version;
|
| + if (prefs_->HasPrefPath(kExtensionsLastChromeVersion)) {
|
| + std::string version_str = prefs_->GetString(kExtensionsLastChromeVersion);
|
| + version = Version(version_str);
|
| + }
|
| +
|
| + chrome::VersionInfo current_version_info;
|
| + std::string current_version = current_version_info.Version();
|
| + prefs_->SetString(kExtensionsLastChromeVersion, current_version);
|
| +
|
| + // If there was no version string in prefs, assume we're out of date.
|
| + if (!version.IsValid() || version.IsOlderThan(current_version)) {
|
| + ClearRegisteredEvents();
|
| + return false;
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| std::set<std::string> ExtensionPrefs::GetRegisteredEvents(
|
| const std::string& extension_id) {
|
| std::set<std::string> events;
|
| @@ -2140,6 +2176,9 @@ void ExtensionPrefs::RegisterUserPrefs(PrefService* prefs) {
|
| PrefService::UNSYNCABLE_PREF);
|
| prefs->RegisterListPref(prefs::kExtensionAllowedInstallSites,
|
| PrefService::UNSYNCABLE_PREF);
|
| + prefs->RegisterStringPref(kExtensionsLastChromeVersion,
|
| + std::string(), // default value
|
| + PrefService::UNSYNCABLE_PREF);
|
| }
|
|
|
| ExtensionPrefs::ExtensionIds ExtensionPrefs::GetExtensionPrefAsVector(
|
|
|