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

Unified Diff: chrome/browser/sync/test/integration/p2p_invalidation_forwarder.cc

Issue 167913002: sync: Add helper class for P2P invalidations (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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: chrome/browser/sync/test/integration/p2p_invalidation_forwarder.cc
diff --git a/chrome/browser/sync/test/integration/p2p_invalidation_forwarder.cc b/chrome/browser/sync/test/integration/p2p_invalidation_forwarder.cc
new file mode 100644
index 0000000000000000000000000000000000000000..fef2541bef41c7f5625de5ce96d3113846a18fe5
--- /dev/null
+++ b/chrome/browser/sync/test/integration/p2p_invalidation_forwarder.cc
@@ -0,0 +1,36 @@
+// Copyright 2014 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 "chrome/browser/sync/test/integration/p2p_invalidation_forwarder.h"
+
+#include "chrome/browser/invalidation/p2p_invalidation_service.h"
+#include "chrome/browser/sync/profile_sync_service.h"
+#include "sync/internal_api/public/sessions/sync_session_snapshot.h"
+
+P2PInvalidationForwarder::P2PInvalidationForwarder(
+ ProfileSyncService* sync_service,
+ invalidation::P2PInvalidationService* invalidation_service)
+ : sync_service_(sync_service),
+ invalidation_service_(invalidation_service) {
+ sync_service_->AddObserver(this);
+}
+
+P2PInvalidationForwarder::~P2PInvalidationForwarder() {
+ sync_service_->RemoveObserver(this);
+}
+
+void P2PInvalidationForwarder::OnStateChanged() {}
+
+void P2PInvalidationForwarder::OnSyncCycleCompleted() {
+ const syncer::sessions::SyncSessionSnapshot& snap =
+ sync_service_->GetLastSessionSnapshot();
+ bool is_notifiable_commit =
+ (snap.model_neutral_state().num_successful_commits > 0);
+ if (is_notifiable_commit && invalidation_service_) {
+ syncer::ModelTypeSet model_types =
+ snap.model_neutral_state().commit_request_types;
+ syncer::ObjectIdSet ids = ModelTypeSetToObjectIdSet(model_types);
+ invalidation_service_->SendInvalidation(ids);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698