Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6756)

Unified Diff: chrome/browser/sync/glue/extension_change_processor.cc

Issue 6852029: [Sync] Move some extension-sync-related logic to ExtensionService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address asargent's comments Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/mock_extension_service.h ('k') | chrome/browser/sync/glue/extension_sync.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/glue/extension_change_processor.cc
diff --git a/chrome/browser/sync/glue/extension_change_processor.cc b/chrome/browser/sync/glue/extension_change_processor.cc
index 8a1bf727142284565e955bfcaf241bf0fbf248ac..dd0da34460f69262d1ea06975c28f1f8627d1e2c 100644
--- a/chrome/browser/sync/glue/extension_change_processor.cc
+++ b/chrome/browser/sync/glue/extension_change_processor.cc
@@ -10,6 +10,7 @@
#include "base/logging.h"
#include "base/stl_util-inl.h"
#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/extension_sync_data.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/sync/glue/extension_sync.h"
#include "chrome/browser/sync/glue/extension_util.h"
@@ -101,6 +102,7 @@ void ExtensionChangeProcessor::ApplyChangesFromSyncModel(
}
for (int i = 0; i < change_count; ++i) {
const sync_api::SyncManager::ChangeRecord& change = changes[i];
+ sync_pb::ExtensionSpecifics specifics;
switch (change.action) {
case sync_api::SyncManager::ChangeRecord::ACTION_ADD:
case sync_api::SyncManager::ChangeRecord::ACTION_UPDATE: {
@@ -113,30 +115,14 @@ void ExtensionChangeProcessor::ApplyChangesFromSyncModel(
return;
}
DCHECK_EQ(node.GetModelType(), traits_.model_type);
- const sync_pb::ExtensionSpecifics& specifics =
- (*traits_.extension_specifics_getter)(node);
- if (!IsExtensionSpecificsValid(specifics)) {
- std::string error =
- std::string("Invalid server specifics: ") +
- ExtensionSpecificsToString(specifics);
- error_handler()->OnUnrecoverableError(FROM_HERE, error);
- return;
- }
- StopObserving();
- UpdateClient(traits_, specifics, extension_service_);
- StartObserving();
+ specifics = (*traits_.extension_specifics_getter)(node);
break;
}
case sync_api::SyncManager::ChangeRecord::ACTION_DELETE: {
- sync_pb::ExtensionSpecifics specifics;
- if ((*traits_.extension_specifics_entity_getter)(
+ if (!(*traits_.extension_specifics_entity_getter)(
change.specifics, &specifics)) {
- StopObserving();
- RemoveFromClient(traits_, specifics.id(), extension_service_);
- StartObserving();
- } else {
std::stringstream error;
- error << "Could not get extension ID for deleted node "
+ error << "Could not get extension specifics from deleted node "
<< change.id;
error_handler()->OnUnrecoverableError(FROM_HERE, error.str());
LOG(DFATAL) << error.str();
@@ -144,6 +130,21 @@ void ExtensionChangeProcessor::ApplyChangesFromSyncModel(
break;
}
}
+ ExtensionSyncData sync_data;
+ if (!GetExtensionSyncData(specifics, &sync_data)) {
+ // TODO(akalin): Should probably recover or drop.
+ std::string error =
+ std::string("Invalid server specifics: ") +
+ ExtensionSpecificsToString(specifics);
+ error_handler()->OnUnrecoverableError(FROM_HERE, error);
+ return;
+ }
+ sync_data.uninstalled =
+ (change.action == sync_api::SyncManager::ChangeRecord::ACTION_DELETE);
+ StopObserving();
+ extension_service_->ProcessSyncData(sync_data,
+ traits_.is_valid_and_syncable);
+ StartObserving();
}
}
« no previous file with comments | « chrome/browser/extensions/mock_extension_service.h ('k') | chrome/browser/sync/glue/extension_sync.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698