Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / invalidation / invalidation_logger.cc
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/invalidation/invalidation_logger.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "base/values.h"
9 #include "chrome/browser/invalidation/invalidation_logger_observer.h"
10
11 namespace syncer {
12 class ObjectIdInvalidationMap;
13 }
14
15 namespace invalidation {
16 class InvalidationLoggerObserver;
17
18 InvalidationLogger::InvalidationLogger()
19     : last_invalidator_state_(syncer::TRANSIENT_INVALIDATION_ERROR) {}
20
21 InvalidationLogger::~InvalidationLogger() {}
22
23 void InvalidationLogger::OnRegistration(const base::DictionaryValue& details) {
24   FOR_EACH_OBSERVER(
25       InvalidationLoggerObserver, observer_list_, OnRegistration(details));
26 }
27
28 void InvalidationLogger::OnUnregistration(
29     const base::DictionaryValue& details) {
30   FOR_EACH_OBSERVER(
31       InvalidationLoggerObserver, observer_list_, OnUnregistration(details));
32 }
33
34 void InvalidationLogger::OnStateChange(
35     const syncer::InvalidatorState& newState) {
36   last_invalidator_state_ = newState;
37   EmitState();
38 }
39
40 void InvalidationLogger::EmitState() {
41   FOR_EACH_OBSERVER(InvalidationLoggerObserver,
42                     observer_list_,
43                     OnStateChange(last_invalidator_state_));
44 }
45
46 void InvalidationLogger::OnUpdateIds(const base::DictionaryValue& details) {
47   FOR_EACH_OBSERVER(
48       InvalidationLoggerObserver, observer_list_, OnUpdateIds(details));
49 }
50
51 void InvalidationLogger::OnDebugMessage(const base::DictionaryValue& details) {
52   FOR_EACH_OBSERVER(
53       InvalidationLoggerObserver, observer_list_, OnDebugMessage(details));
54 }
55
56 void InvalidationLogger::OnInvalidation(
57     const syncer::ObjectIdInvalidationMap& details) {
58   FOR_EACH_OBSERVER(
59       InvalidationLoggerObserver, observer_list_, OnInvalidation(details));
60 }
61
62 void InvalidationLogger::EmitContent() {
63   // Here we add content to send to the observers not via real time push
64   // but on explicit request.
65   EmitState();
66 }
67
68 // Obtain a target object to call whenever we have
69 // debug messages to display
70 void InvalidationLogger::RegisterForDebug(
71     InvalidationLoggerObserver* debug_observer) {
72   observer_list_.AddObserver(debug_observer);
73 }
74
75 // Removes the target object to call whenever we have
76 // debug messages to display
77 void InvalidationLogger::UnregisterForDebug(
78     InvalidationLoggerObserver* debug_observer) {
79   observer_list_.RemoveObserver(debug_observer);
80 }
81 }  // namespace invalidation