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