- add sources.
[platform/framework/web/crosswalk.git] / src / sync / notifier / dropped_invalidation_tracker.cc
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