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/profile_sync_service.h" 8 #include "components/invalidation/p2p_invalidation_service.h" 9 #include "sync/internal_api/public/sessions/sync_session_snapshot.h" 10 P2PInvalidationForwarder(ProfileSyncService * sync_service,invalidation::P2PInvalidationService * invalidation_service)11P2PInvalidationForwarder::P2PInvalidationForwarder( 12 ProfileSyncService* sync_service, 13 invalidation::P2PInvalidationService* invalidation_service) 14 : sync_service_(sync_service), 15 invalidation_service_(invalidation_service) { 16 sync_service_->AddObserver(this); 17 } 18 ~P2PInvalidationForwarder()19P2PInvalidationForwarder::~P2PInvalidationForwarder() { 20 sync_service_->RemoveObserver(this); 21 } 22 OnStateChanged()23void P2PInvalidationForwarder::OnStateChanged() {} 24 OnSyncCycleCompleted()25void P2PInvalidationForwarder::OnSyncCycleCompleted() { 26 const syncer::sessions::SyncSessionSnapshot& snap = 27 sync_service_->GetLastSessionSnapshot(); 28 bool is_notifiable_commit = 29 (snap.model_neutral_state().num_successful_commits > 0); 30 if (is_notifiable_commit && invalidation_service_) { 31 syncer::ModelTypeSet model_types = 32 snap.model_neutral_state().commit_request_types; 33 syncer::ObjectIdSet ids = ModelTypeSetToObjectIdSet(model_types); 34 invalidation_service_->SendInvalidation(ids); 35 } 36 } 37