| Index: chrome/browser/extensions/sync_bundle.cc
|
| diff --git a/chrome/browser/extensions/sync_bundle.cc b/chrome/browser/extensions/sync_bundle.cc
|
| index 09afb3ad83a4bca9226547f4e6fb3fddbcf1e151..4e6a7756f1d7e5d468116add3cb2d2136e0a303a 100644
|
| --- a/chrome/browser/extensions/sync_bundle.cc
|
| +++ b/chrome/browser/extensions/sync_bundle.cc
|
| @@ -13,24 +13,12 @@
|
|
|
| namespace extensions {
|
|
|
| -SyncBundle::SyncBundle(ExtensionSyncService* sync_service)
|
| - : sync_service_(sync_service) {}
|
| -
|
| +SyncBundle::SyncBundle() {}
|
| SyncBundle::~SyncBundle() {}
|
|
|
| -void SyncBundle::MergeDataAndStartSyncing(
|
| - const syncer::SyncDataList& initial_sync_data,
|
| +void SyncBundle::StartSyncing(
|
| scoped_ptr<syncer::SyncChangeProcessor> sync_processor) {
|
| sync_processor_.reset(sync_processor.release());
|
| -
|
| - for (const syncer::SyncData& sync_data : initial_sync_data) {
|
| - scoped_ptr<ExtensionSyncData> extension_sync_data(
|
| - ExtensionSyncData::CreateFromSyncData(sync_data));
|
| - if (extension_sync_data.get()) {
|
| - AddSyncedExtension(extension_sync_data->id());
|
| - sync_service_->ApplySyncData(*extension_sync_data);
|
| - }
|
| - }
|
| }
|
|
|
| void SyncBundle::Reset() {
|
| @@ -43,17 +31,6 @@ bool SyncBundle::IsSyncing() const {
|
| return sync_processor_ != nullptr;
|
| }
|
|
|
| -bool SyncBundle::HasExtensionId(const std::string& id) const {
|
| - return synced_extensions_.find(id) != synced_extensions_.end();
|
| -}
|
| -
|
| -bool SyncBundle::ShouldIncludeInLocalSyncDataList(
|
| - const Extension& extension) const {
|
| - // If there is pending data for this extension, then this version is out of
|
| - // date. We'll sync back the version we got from sync.
|
| - return IsSyncing() && !HasPendingExtensionId(extension.id());
|
| -}
|
| -
|
| void SyncBundle::PushSyncDataList(
|
| const syncer::SyncDataList& sync_data_list) {
|
| syncer::SyncChangeList sync_change_list;
|
| @@ -71,6 +48,9 @@ void SyncBundle::PushSyncDataList(
|
|
|
| void SyncBundle::PushSyncDeletion(const std::string& extension_id,
|
| const syncer::SyncData& sync_data) {
|
| + if (!HasSyncedExtension(extension_id))
|
| + return;
|
| +
|
| RemoveSyncedExtension(extension_id);
|
| PushSyncChanges(syncer::SyncChangeList(1,
|
| syncer::SyncChange(FROM_HERE,
|
| @@ -78,26 +58,21 @@ void SyncBundle::PushSyncDeletion(const std::string& extension_id,
|
| sync_data)));
|
| }
|
|
|
| -void SyncBundle::PushSyncAddOrUpdate(const Extension& extension) {
|
| - syncer::SyncChangeList sync_change_list(
|
| - 1,
|
| - CreateSyncChange(extension.id(),
|
| - sync_service_->CreateSyncData(extension).GetSyncData()));
|
| - PushSyncChanges(sync_change_list);
|
| - MarkPendingExtensionSynced(extension.id());
|
| +void SyncBundle::PushSyncAddOrUpdate(const std::string& extension_id,
|
| + const syncer::SyncData& sync_data) {
|
| + PushSyncChanges(syncer::SyncChangeList(
|
| + 1, CreateSyncChange(extension_id, sync_data)));
|
| + AddSyncedExtension(extension_id);
|
| + // Now sync and local state agree. If we had any pending change from sync,
|
| + // clear it now.
|
| + pending_sync_data_.erase(extension_id);
|
| }
|
|
|
| -void SyncBundle::ApplySyncChange(const syncer::SyncChange& sync_change) {
|
| - scoped_ptr<ExtensionSyncData> extension_sync_data(
|
| - ExtensionSyncData::CreateFromSyncChange(sync_change));
|
| - if (!extension_sync_data.get())
|
| - return; // TODO(treib,kalman): Warning message?
|
| -
|
| - if (extension_sync_data->uninstalled())
|
| - RemoveSyncedExtension(extension_sync_data->id());
|
| +void SyncBundle::ApplySyncData(const ExtensionSyncData& extension_sync_data) {
|
| + if (extension_sync_data.uninstalled())
|
| + RemoveSyncedExtension(extension_sync_data.id());
|
| else
|
| - AddSyncedExtension(extension_sync_data->id());
|
| - sync_service_->ApplySyncData(*extension_sync_data);
|
| + AddSyncedExtension(extension_sync_data.id());
|
| }
|
|
|
| bool SyncBundle::HasPendingExtensionId(const std::string& id) const {
|
| @@ -123,8 +98,8 @@ syncer::SyncChange SyncBundle::CreateSyncChange(
|
| const syncer::SyncData& sync_data) const {
|
| return syncer::SyncChange(
|
| FROM_HERE,
|
| - HasExtensionId(extension_id) ? syncer::SyncChange::ACTION_UPDATE
|
| - : syncer::SyncChange::ACTION_ADD,
|
| + HasSyncedExtension(extension_id) ? syncer::SyncChange::ACTION_UPDATE
|
| + : syncer::SyncChange::ACTION_ADD,
|
| sync_data);
|
| }
|
|
|
| @@ -141,9 +116,8 @@ void SyncBundle::RemoveSyncedExtension(const std::string& id) {
|
| synced_extensions_.erase(id);
|
| }
|
|
|
| -void SyncBundle::MarkPendingExtensionSynced(const std::string& id) {
|
| - pending_sync_data_.erase(id);
|
| - AddSyncedExtension(id);
|
| +bool SyncBundle::HasSyncedExtension(const std::string& id) const {
|
| + return synced_extensions_.find(id) != synced_extensions_.end();
|
| }
|
|
|
| } // namespace extensions
|
|
|