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

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

Issue 10545170: [Sync] Propagate XMPP auth errors to SyncNotifierObservers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile error Created 8 years, 6 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // A simple wrapper around invalidation::InvalidationClient that 5 // A simple wrapper around invalidation::InvalidationClient that
6 // handles all the startup/shutdown details and hookups. 6 // handles all the startup/shutdown details and hookups.
7 7
8 #ifndef SYNC_NOTIFIER_CHROME_INVALIDATION_CLIENT_H_ 8 #ifndef SYNC_NOTIFIER_CHROME_INVALIDATION_CLIENT_H_
9 #define SYNC_NOTIFIER_CHROME_INVALIDATION_CLIENT_H_ 9 #define SYNC_NOTIFIER_CHROME_INVALIDATION_CLIENT_H_
10 #pragma once 10 #pragma once
11 11
12 #include <string> 12 #include <string>
13 13
14 #include "base/basictypes.h" 14 #include "base/basictypes.h"
15 #include "base/compiler_specific.h" 15 #include "base/compiler_specific.h"
16 #include "base/memory/scoped_ptr.h" 16 #include "base/memory/scoped_ptr.h"
17 #include "base/memory/weak_ptr.h" 17 #include "base/memory/weak_ptr.h"
18 #include "base/threading/non_thread_safe.h" 18 #include "base/threading/non_thread_safe.h"
19 #include "google/cacheinvalidation/include/invalidation-listener.h" 19 #include "google/cacheinvalidation/include/invalidation-listener.h"
20 #include "jingle/notifier/listener/push_client_observer.h"
20 #include "sync/internal_api/public/syncable/model_type.h" 21 #include "sync/internal_api/public/syncable/model_type.h"
21 #include "sync/internal_api/public/syncable/model_type_payload_map.h" 22 #include "sync/internal_api/public/syncable/model_type_payload_map.h"
22 #include "sync/notifier/chrome_system_resources.h" 23 #include "sync/notifier/chrome_system_resources.h"
23 #include "sync/notifier/invalidation_state_tracker.h" 24 #include "sync/notifier/invalidation_state_tracker.h"
24 #include "sync/notifier/state_writer.h" 25 #include "sync/notifier/state_writer.h"
26 #include "sync/notifier/sync_notifier_state.h"
25 #include "sync/util/weak_handle.h" 27 #include "sync/util/weak_handle.h"
26 28
27 namespace buzz { 29 namespace buzz {
28 class XmppTaskParentInterface; 30 class XmppTaskParentInterface;
29 } // namespace buzz 31 } // namespace buzz
30 32
31 namespace notifier { 33 namespace notifier {
32 class PushClient; 34 class PushClient;
33 } // namespace notifier 35 } // namespace notifier
34 36
35 namespace sync_notifier { 37 namespace sync_notifier {
36 38
37 using invalidation::InvalidationListener; 39 using invalidation::InvalidationListener;
38 40
39 class RegistrationManager; 41 class RegistrationManager;
40 42
41 // ChromeInvalidationClient is not thread-safe and lives on the sync 43 // ChromeInvalidationClient is not thread-safe and lives on the sync
42 // thread. 44 // thread.
43 class ChromeInvalidationClient 45 class ChromeInvalidationClient
44 : public InvalidationListener, 46 : public InvalidationListener,
45 public StateWriter, 47 public StateWriter,
48 public notifier::PushClientObserver,
46 public base::NonThreadSafe { 49 public base::NonThreadSafe {
47 public: 50 public:
48 class Listener { 51 class Listener {
49 public: 52 public:
50 virtual ~Listener(); 53 virtual ~Listener();
51 54
52 virtual void OnInvalidate( 55 virtual void OnInvalidate(
53 const syncable::ModelTypePayloadMap& type_payloads) = 0; 56 const syncable::ModelTypePayloadMap& type_payloads) = 0;
54 57
55 virtual void OnSessionStatusChanged(bool has_session) = 0; 58 virtual void OnSyncNotifierStateChange(
59 SyncNotifierState sync_notifier_state) = 0;
56 }; 60 };
57 61
58 explicit ChromeInvalidationClient( 62 explicit ChromeInvalidationClient(
59 scoped_ptr<notifier::PushClient> push_client); 63 scoped_ptr<notifier::PushClient> push_client);
60 64
61 // Calls Stop(). 65 // Calls Stop().
62 virtual ~ChromeInvalidationClient(); 66 virtual ~ChromeInvalidationClient();
63 67
64 // Does not take ownership of |listener| or |state_writer|. 68 // Does not take ownership of |listener| or |state_writer|.
65 // |invalidation_state_tracker| must be initialized. 69 // |invalidation_state_tracker| must be initialized.
66 void Start( 70 void Start(
67 const std::string& client_id, const std::string& client_info, 71 const std::string& client_id, const std::string& client_info,
68 const std::string& state, 72 const std::string& state,
69 const InvalidationVersionMap& initial_max_invalidation_versions, 73 const InvalidationVersionMap& initial_max_invalidation_versions,
70 const browser_sync::WeakHandle<InvalidationStateTracker>& 74 const browser_sync::WeakHandle<InvalidationStateTracker>&
71 invalidation_state_tracker, 75 invalidation_state_tracker,
72 Listener* listener); 76 Listener* listener);
73 77
74 void UpdateCredentials(const std::string& email, const std::string& token); 78 void UpdateCredentials(const std::string& email, const std::string& token);
75 79
76 // Register the sync types that we're interested in getting 80 // Register the sync types that we're interested in getting
77 // notifications for. May be called at any time. 81 // notifications for. May be called at any time.
78 void RegisterTypes(syncable::ModelTypeSet types); 82 void RegisterTypes(syncable::ModelTypeSet types);
79 83
80 virtual void WriteState(const std::string& state) OVERRIDE;
81
82 // invalidation::InvalidationListener implementation. 84 // invalidation::InvalidationListener implementation.
83 virtual void Ready( 85 virtual void Ready(
84 invalidation::InvalidationClient* client) OVERRIDE; 86 invalidation::InvalidationClient* client) OVERRIDE;
85 virtual void Invalidate( 87 virtual void Invalidate(
86 invalidation::InvalidationClient* client, 88 invalidation::InvalidationClient* client,
87 const invalidation::Invalidation& invalidation, 89 const invalidation::Invalidation& invalidation,
88 const invalidation::AckHandle& ack_handle) OVERRIDE; 90 const invalidation::AckHandle& ack_handle) OVERRIDE;
89 virtual void InvalidateUnknownVersion( 91 virtual void InvalidateUnknownVersion(
90 invalidation::InvalidationClient* client, 92 invalidation::InvalidationClient* client,
91 const invalidation::ObjectId& object_id, 93 const invalidation::ObjectId& object_id,
(...skipping 11 matching lines...) Expand all
103 bool is_transient, 105 bool is_transient,
104 const std::string& error_message) OVERRIDE; 106 const std::string& error_message) OVERRIDE;
105 virtual void ReissueRegistrations( 107 virtual void ReissueRegistrations(
106 invalidation::InvalidationClient* client, 108 invalidation::InvalidationClient* client,
107 const std::string& prefix, 109 const std::string& prefix,
108 int prefix_length) OVERRIDE; 110 int prefix_length) OVERRIDE;
109 virtual void InformError( 111 virtual void InformError(
110 invalidation::InvalidationClient* client, 112 invalidation::InvalidationClient* client,
111 const invalidation::ErrorInfo& error_info) OVERRIDE; 113 const invalidation::ErrorInfo& error_info) OVERRIDE;
112 114
115 // StateWriter implementation.
116 virtual void WriteState(const std::string& state) OVERRIDE;
117
118 // notifier::PushClientObserver implementation.
119 virtual void OnPushClientStateChange(
120 notifier::PushClientState push_client_state) OVERRIDE;
121 virtual void OnIncomingNotification(
122 const notifier::Notification& notification) OVERRIDE;
123
113 private: 124 private:
114 friend class ChromeInvalidationClientTest; 125 friend class ChromeInvalidationClientTest;
115 126
127 SyncNotifierState GetSyncNotifierState() const;
128
116 void Stop(); 129 void Stop();
117 130
131 void EmitStateChange();
132
118 void EmitInvalidation( 133 void EmitInvalidation(
119 syncable::ModelTypeSet types, const std::string& payload); 134 syncable::ModelTypeSet types, const std::string& payload);
120 135
136 // Owned by |chrome_system_resources_|.
137 notifier::PushClient* const push_client_;
121 ChromeSystemResources chrome_system_resources_; 138 ChromeSystemResources chrome_system_resources_;
122 InvalidationVersionMap max_invalidation_versions_; 139 InvalidationVersionMap max_invalidation_versions_;
123 browser_sync::WeakHandle<InvalidationStateTracker> 140 browser_sync::WeakHandle<InvalidationStateTracker>
124 invalidation_state_tracker_; 141 invalidation_state_tracker_;
125 Listener* listener_; 142 Listener* listener_;
126 scoped_ptr<invalidation::InvalidationClient> invalidation_client_; 143 scoped_ptr<invalidation::InvalidationClient> invalidation_client_;
127 scoped_ptr<RegistrationManager> registration_manager_; 144 scoped_ptr<RegistrationManager> registration_manager_;
128 // Stored to pass to |registration_manager_| on start. 145 // Stored to pass to |registration_manager_| on start.
129 syncable::ModelTypeSet registered_types_; 146 syncable::ModelTypeSet registered_types_;
130 bool ticl_ready_; 147
148 // The sync notifier states of our child objects.
149 SyncNotifierState ticl_sync_notifier_state_;
150 SyncNotifierState push_client_sync_notifier_state_;
131 151
132 DISALLOW_COPY_AND_ASSIGN(ChromeInvalidationClient); 152 DISALLOW_COPY_AND_ASSIGN(ChromeInvalidationClient);
133 }; 153 };
134 154
135 } // namespace sync_notifier 155 } // namespace sync_notifier
136 156
137 #endif // SYNC_NOTIFIER_CHROME_INVALIDATION_CLIENT_H_ 157 #endif // SYNC_NOTIFIER_CHROME_INVALIDATION_CLIENT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698