1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/sync/test/integration/p2p_invalidation_forwarder.h" 6 7 #include "chrome/browser/sync/glue/invalidation_helper.h" 8 #include "chrome/browser/sync/profile_sync_service.h" 9 #include "components/invalidation/p2p_invalidation_service.h" 10 #include "sync/internal_api/public/sessions/sync_session_snapshot.h" 11 12 P2PInvalidationForwarder::P2PInvalidationForwarder( 13 ProfileSyncService* sync_service, 14 invalidation::P2PInvalidationService* invalidation_service) 15 : sync_service_(sync_service), 16 invalidation_service_(invalidation_service) { 17 sync_service_->AddObserver(this); 18 } 19 20 P2PInvalidationForwarder::~P2PInvalidationForwarder() { 21 sync_service_->RemoveObserver(this); 22 } 23 24 void P2PInvalidationForwarder::OnStateChanged() {} 25 26 void P2PInvalidationForwarder::OnSyncCycleCompleted() { 27 const syncer::sessions::SyncSessionSnapshot& snap = 28 sync_service_->GetLastSessionSnapshot(); 29 bool is_notifiable_commit = 30 (snap.model_neutral_state().num_successful_commits > 0); 31 if (is_notifiable_commit && invalidation_service_) { 32 syncer::ModelTypeSet model_types = 33 snap.model_neutral_state().commit_request_types; 34 syncer::ObjectIdSet ids = ModelTypeSetToObjectIdSet(model_types); 35 invalidation_service_->SendInvalidation(ids); 36 } 37 } 38