Home | History | Annotate | Download | only in notifier
      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