summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/glue/extension_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/sync/glue/extension_util.cc')
-rw-r--r--chrome/browser/sync/glue/extension_util.cc21
1 files changed, 14 insertions, 7 deletions
diff --git a/chrome/browser/sync/glue/extension_util.cc b/chrome/browser/sync/glue/extension_util.cc
index 67b5856..e94ba11 100644
--- a/chrome/browser/sync/glue/extension_util.cc
+++ b/chrome/browser/sync/glue/extension_util.cc
@@ -143,11 +143,12 @@ bool AreExtensionSpecificsNonUserPropertiesEqual(
}
void GetExtensionSpecifics(const Extension& extension,
- ExtensionServiceInterface* extension_service,
+ ExtensionPrefs* extension_prefs,
sync_pb::ExtensionSpecifics* specifics) {
const std::string& id = extension.id();
- bool enabled = extension_service->IsExtensionEnabled(id);
- bool incognito_enabled = extension_service->IsIncognitoEnabled(id);
+ bool enabled =
+ extension_prefs->GetExtensionState(id) == Extension::ENABLED;
+ bool incognito_enabled = extension_prefs->IsIncognitoEnabled(id);
GetExtensionSpecificsHelper(extension, enabled, incognito_enabled,
specifics);
}
@@ -194,12 +195,18 @@ void SetExtensionProperties(
<< "has a different update URL than the extension: "
<< update_url.spec() << " vs. " << extension->update_url();
}
- if (specifics.enabled()) {
- extensions_service->EnableExtension(id);
- } else {
+ ExtensionPrefs* extension_prefs = extensions_service->extension_prefs();
+ bool enabled = extension_prefs->GetExtensionState(id) == Extension::ENABLED;
+ if (enabled && !specifics.enabled()) {
extensions_service->DisableExtension(id);
+ } else if (!enabled && specifics.enabled()) {
+ extensions_service->EnableExtension(id);
+ }
+ bool incognito_enabled = extension_prefs->IsIncognitoEnabled(id);
+ if (incognito_enabled != specifics.incognito_enabled()) {
+ extensions_service->SetIsIncognitoEnabled(
+ extension, specifics.incognito_enabled());
}
- extensions_service->SetIsIncognitoEnabled(id, specifics.incognito_enabled());
if (specifics.name() != extension->name()) {
LOG(WARNING) << "specifics for extension " << id
<< "has a different name than the extension: "