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

Unified Diff: sync/engine/sync_directory_update_handler.cc

Issue 38803003: sync: Implement per-type update processing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix integration tests Created 7 years, 2 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
Index: sync/engine/sync_directory_update_handler.cc
diff --git a/sync/engine/sync_directory_update_handler.cc b/sync/engine/sync_directory_update_handler.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e93b8bf6467fbac7b554407f438ee9c560d03b27
--- /dev/null
+++ b/sync/engine/sync_directory_update_handler.cc
@@ -0,0 +1,57 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "sync/engine/sync_directory_update_handler.h"
+
+#include "sync/engine/process_updates_util.h"
+#include "sync/sessions/status_controller.h"
+#include "sync/syncable/directory.h"
+#include "sync/syncable/syncable_model_neutral_write_transaction.h"
+
+namespace syncer {
+
+using syncable::SYNCER;
+
+SyncDirectoryUpdateHandler::SyncDirectoryUpdateHandler(
+ syncable::Directory* dir, ModelType type)
+ : dir_(dir),
+ type_(type) {}
+
+SyncDirectoryUpdateHandler::~SyncDirectoryUpdateHandler() {}
+
+void SyncDirectoryUpdateHandler::GetDownloadProgress(
+ sync_pb::DataTypeProgressMarker* progress_marker) const {
+ dir_->GetDownloadProgress(type_, progress_marker);
+}
+
+void SyncDirectoryUpdateHandler::ProcessGetUpdatesResponse(
+ const sync_pb::DataTypeProgressMarker& progress_marker,
Nicolas Zea 2013/10/25 21:04:41 fix indent
rlarocque 2013/10/25 22:29:47 Done.
+ const SyncEntityList& applicable_updates,
+ sessions::StatusController* status) {
+ syncable::ModelNeutralWriteTransaction trans(FROM_HERE, SYNCER, dir_);
+ UpdateSyncEntities(&trans, applicable_updates, status);
+ UpdateProgressMarkers(progress_marker);
+}
+
+void SyncDirectoryUpdateHandler::UpdateSyncEntities(
+ syncable::ModelNeutralWriteTransaction* trans,
+ const SyncEntityList& applicable_updates,
+ sessions::StatusController* status) {
+ ProcessDownloadedUpdates(dir_, trans, type_, applicable_updates, status);
+}
+
+void SyncDirectoryUpdateHandler::UpdateProgressMarkers(
+ const sync_pb::DataTypeProgressMarker& progress_marker) {
Nicolas Zea 2013/10/25 21:04:41 fix indent
rlarocque 2013/10/25 22:29:47 Done.
+ int field_number = progress_marker.data_type_id();
+ ModelType model_type = GetModelTypeFromSpecificsFieldNumber(field_number);
+ if (!IsRealDataType(model_type) || type_ != model_type) {
+ NOTREACHED()
+ << "Update handler of type " << ModelTypeToString(type_)
+ << " asked to process progress marker with invalid type "
+ << field_number;
+ }
+ dir_->SetDownloadProgress(type_, progress_marker);
+}
+
+} // namespace syncer

Powered by Google App Engine
This is Rietveld 408576698