Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Side by Side Diff: sync/notifier/chrome_invalidation_client.h

Issue 10907070: [Sync] Rename classes in sync/ that start with Chrome (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 // A simple wrapper around invalidation::InvalidationClient that
6 // handles all the startup/shutdown details and hookups.
7
8 #ifndef SYNC_NOTIFIER_CHROME_INVALIDATION_CLIENT_H_
9 #define SYNC_NOTIFIER_CHROME_INVALIDATION_CLIENT_H_
10
11 #include <string>
12
13 #include "base/basictypes.h"
14 #include "base/callback_forward.h"
15 #include "base/compiler_specific.h"
16 #include "base/memory/scoped_ptr.h"
17 #include "base/memory/weak_ptr.h"
18 #include "base/threading/non_thread_safe.h"
19 #include "google/cacheinvalidation/include/invalidation-listener.h"
20 #include "jingle/notifier/listener/push_client_observer.h"
21 #include "sync/internal_api/public/util/weak_handle.h"
22 #include "sync/notifier/chrome_system_resources.h"
23 #include "sync/notifier/invalidation_state_tracker.h"
24 #include "sync/notifier/notifications_disabled_reason.h"
25 #include "sync/notifier/object_id_state_map.h"
26 #include "sync/notifier/state_writer.h"
27
28 namespace buzz {
29 class XmppTaskParentInterface;
30 } // namespace buzz
31
32 namespace notifier {
33 class PushClient;
34 } // namespace notifier
35
36 namespace syncer {
37
38 class RegistrationManager;
39
40 // ChromeInvalidationClient is not thread-safe and lives on the sync
41 // thread.
42 class ChromeInvalidationClient
43 : public invalidation::InvalidationListener,
44 public StateWriter,
45 public notifier::PushClientObserver,
46 public base::NonThreadSafe {
47 public:
48 typedef base::Callback<invalidation::InvalidationClient*(
49 invalidation::SystemResources*,
50 int,
51 const invalidation::string&,
52 const invalidation::string&,
53 invalidation::InvalidationListener*)> CreateInvalidationClientCallback;
54
55 class Listener {
56 public:
57 virtual ~Listener();
58
59 virtual void OnInvalidate(const ObjectIdStateMap& id_state_map) = 0;
60
61 virtual void OnNotificationsEnabled() = 0;
62
63 virtual void OnNotificationsDisabled(
64 NotificationsDisabledReason reason) = 0;
65 };
66
67 explicit ChromeInvalidationClient(
68 scoped_ptr<notifier::PushClient> push_client);
69
70 // Calls Stop().
71 virtual ~ChromeInvalidationClient();
72
73 // Does not take ownership of |listener| or |state_writer|.
74 // |invalidation_state_tracker| must be initialized.
75 void Start(
76 const CreateInvalidationClientCallback&
77 create_invalidation_client_callback,
78 const std::string& client_id, const std::string& client_info,
79 const std::string& state,
80 const InvalidationVersionMap& initial_max_invalidation_versions,
81 const WeakHandle<InvalidationStateTracker>& invalidation_state_tracker,
82 Listener* listener);
83
84 void UpdateCredentials(const std::string& email, const std::string& token);
85
86 // Update the set of object IDs that we're interested in getting
87 // notifications for. May be called at any time.
88 void UpdateRegisteredIds(const ObjectIdSet& ids);
89
90 // invalidation::InvalidationListener implementation.
91 virtual void Ready(
92 invalidation::InvalidationClient* client) OVERRIDE;
93 virtual void Invalidate(
94 invalidation::InvalidationClient* client,
95 const invalidation::Invalidation& invalidation,
96 const invalidation::AckHandle& ack_handle) OVERRIDE;
97 virtual void InvalidateUnknownVersion(
98 invalidation::InvalidationClient* client,
99 const invalidation::ObjectId& object_id,
100 const invalidation::AckHandle& ack_handle) OVERRIDE;
101 virtual void InvalidateAll(
102 invalidation::InvalidationClient* client,
103 const invalidation::AckHandle& ack_handle) OVERRIDE;
104 virtual void InformRegistrationStatus(
105 invalidation::InvalidationClient* client,
106 const invalidation::ObjectId& object_id,
107 invalidation::InvalidationListener::RegistrationState reg_state) OVERRIDE;
108 virtual void InformRegistrationFailure(
109 invalidation::InvalidationClient* client,
110 const invalidation::ObjectId& object_id,
111 bool is_transient,
112 const std::string& error_message) OVERRIDE;
113 virtual void ReissueRegistrations(
114 invalidation::InvalidationClient* client,
115 const std::string& prefix,
116 int prefix_length) OVERRIDE;
117 virtual void InformError(
118 invalidation::InvalidationClient* client,
119 const invalidation::ErrorInfo& error_info) OVERRIDE;
120
121 // StateWriter implementation.
122 virtual void WriteState(const std::string& state) OVERRIDE;
123
124 // notifier::PushClientObserver implementation.
125 virtual void OnNotificationsEnabled() OVERRIDE;
126 virtual void OnNotificationsDisabled(
127 notifier::NotificationsDisabledReason reason) OVERRIDE;
128 virtual void OnIncomingNotification(
129 const notifier::Notification& notification) OVERRIDE;
130
131 void StopForTest();
132
133 void DoRegistrationUpdate();
134
135 private:
136 void Stop();
137
138 NotificationsDisabledReason GetState() const;
139
140 void EmitStateChange();
141
142 void EmitInvalidation(const ObjectIdStateMap& id_state_map);
143
144 // Owned by |chrome_system_resources_|.
145 notifier::PushClient* const push_client_;
146 ChromeSystemResources chrome_system_resources_;
147 InvalidationVersionMap max_invalidation_versions_;
148 WeakHandle<InvalidationStateTracker> invalidation_state_tracker_;
149 Listener* listener_;
150 scoped_ptr<invalidation::InvalidationClient> invalidation_client_;
151 scoped_ptr<RegistrationManager> registration_manager_;
152 // Stored to pass to |registration_manager_| on start.
153 ObjectIdSet registered_ids_;
154
155 // The states of the ticl and the push client (with
156 // NO_NOTIFICATION_ERROR meaning notifications are enabled).
157 NotificationsDisabledReason ticl_state_;
158 NotificationsDisabledReason push_client_state_;
159
160 DISALLOW_COPY_AND_ASSIGN(ChromeInvalidationClient);
161 };
162
163 } // namespace syncer
164
165 #endif // SYNC_NOTIFIER_CHROME_INVALIDATION_CLIENT_H_
OLDNEW
« no previous file with comments | « no previous file | sync/notifier/chrome_invalidation_client.cc » ('j') | tools/valgrind/memcheck/suppressions.txt » ('J')

Powered by Google App Engine
This is Rietveld 408576698