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 
     16 DroppedInvalidationTracker::~DroppedInvalidationTracker() {}
     17 
     18 const invalidation::ObjectId& DroppedInvalidationTracker::object_id() const {
     19   return id_;
     20 }
     21 
     22 void DroppedInvalidationTracker::RecordDropEvent(
     23     WeakHandle<AckHandler> handler, AckHandle handle) {
     24   drop_ack_handler_ = handler;
     25   drop_ack_handle_ = handle;
     26 }
     27 
     28 void DroppedInvalidationTracker::RecordRecoveryFromDropEvent() {
     29   if (drop_ack_handler_.IsInitialized()) {
     30     drop_ack_handler_.Call(FROM_HERE,
     31                            &AckHandler::Acknowledge,
     32                            id_,
     33                            drop_ack_handle_);
     34   }
     35   drop_ack_handler_ = syncer::WeakHandle<AckHandler>();
     36 }
     37 
     38 bool DroppedInvalidationTracker::IsRecoveringFromDropEvent() const {
     39   return drop_ack_handler_.IsInitialized();
     40 }
     41 
     42 }  // namespace syncer
     43