1 // Copyright 2013 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 "sync/notifier/dropped_invalidation_tracker.h" 6 7 #include "sync/internal_api/public/base/invalidation.h" 8 9 namespace syncer { 10 11 DroppedInvalidationTracker::DroppedInvalidationTracker( 12 const invalidation::ObjectId& id) 13 : id_(id), 14 drop_ack_handle_(AckHandle::InvalidAckHandle()), 15 recovering_from_drop_(false) {} 16 17 DroppedInvalidationTracker::~DroppedInvalidationTracker() {} 18 19 const invalidation::ObjectId& DroppedInvalidationTracker::object_id() const { 20 return id_; 21 } 22 23 void DroppedInvalidationTracker::RecordDropEvent( 24 WeakHandle<AckHandler> handler, AckHandle handle) { 25 drop_ack_handler_ = handler; 26 drop_ack_handle_ = handle; 27 recovering_from_drop_ = true; 28 } 29 30 void DroppedInvalidationTracker::RecordRecoveryFromDropEvent() { 31 if (drop_ack_handler_.IsInitialized()) { 32 drop_ack_handler_.Call(FROM_HERE, 33 &AckHandler::Acknowledge, 34 id_, 35 drop_ack_handle_); 36 } 37 drop_ack_handler_ = syncer::WeakHandle<AckHandler>(); 38 recovering_from_drop_ = false; 39 } 40 41 bool DroppedInvalidationTracker::IsRecoveringFromDropEvent() const { 42 return recovering_from_drop_; 43 } 44 45 } // namespace syncer 46