• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)11 P2PInvalidationForwarder::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()19 P2PInvalidationForwarder::~P2PInvalidationForwarder() {
20   sync_service_->RemoveObserver(this);
21 }
22 
OnStateChanged()23 void P2PInvalidationForwarder::OnStateChanged() {}
24 
OnSyncCycleCompleted()25 void 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