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

Side by Side Diff: components/gcm_driver/gcm_driver.h

Issue 914693002: Push API: Fix unsubscribing from GCM on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tweak comment per jianli Created 5 years, 10 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 #ifndef COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ 5 #ifndef COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_
6 #define COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ 6 #define COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 19 matching lines...) Expand all
30 GCMClient::Result result)> RegisterCallback; 30 GCMClient::Result result)> RegisterCallback;
31 typedef base::Callback<void(const std::string& message_id, 31 typedef base::Callback<void(const std::string& message_id,
32 GCMClient::Result result)> SendCallback; 32 GCMClient::Result result)> SendCallback;
33 typedef base::Callback<void(GCMClient::Result result)> UnregisterCallback; 33 typedef base::Callback<void(GCMClient::Result result)> UnregisterCallback;
34 typedef base::Callback<void(const GCMClient::GCMStatistics& stats)> 34 typedef base::Callback<void(const GCMClient::GCMStatistics& stats)>
35 GetGCMStatisticsCallback; 35 GetGCMStatisticsCallback;
36 36
37 GCMDriver(); 37 GCMDriver();
38 virtual ~GCMDriver(); 38 virtual ~GCMDriver();
39 39
40 // Registers |sender_id| for an app. A registration ID will be returned by 40 // Registers |sender_ids| for an app. A registration ID will be returned by
41 // the GCM server. 41 // the GCM server. On Android, only a single sender ID is supported, but
42 // instead multiple simultaneous registrations are allowed.
42 // |app_id|: application ID. 43 // |app_id|: application ID.
43 // |sender_ids|: list of IDs of the servers that are allowed to send the 44 // |sender_ids|: list of IDs of the servers that are allowed to send the
44 // messages to the application. These IDs are assigned by the 45 // messages to the application. These IDs are assigned by the
45 // Google API Console. 46 // Google API Console.
46 // |callback|: to be called once the asynchronous operation is done. 47 // |callback|: to be called once the asynchronous operation is done.
47 void Register(const std::string& app_id, 48 void Register(const std::string& app_id,
48 const std::vector<std::string>& sender_ids, 49 const std::vector<std::string>& sender_ids,
49 const RegisterCallback& callback); 50 const RegisterCallback& callback);
50 51
51 // Unregisters an app from using GCM. 52 // Unregisters all sender_ids for an app. Only works on non-Android.
52 // |app_id|: application ID. 53 // |app_id|: application ID.
53 // |callback|: to be called once the asynchronous operation is done. 54 // |callback|: to be called once the asynchronous operation is done.
54 void Unregister(const std::string& app_id, 55 void Unregister(const std::string& app_id,
55 const UnregisterCallback& callback); 56 const UnregisterCallback& callback);
56 57
58 // Unregisters an (app_id, sender_id) pair from using GCM. Only works on
59 // Android.
60 // TODO(jianli): Switch to using GCM's unsubscribe API.
61 // |app_id|: application ID.
62 // |sender_id|: the sender ID that was passed when registering.
63 // |callback|: to be called once the asynchronous operation is done.
64 void UnregisterWithSenderId(const std::string& app_id,
65 const std::string& sender_id,
66 const UnregisterCallback& callback);
67
57 // Sends a message to a given receiver. 68 // Sends a message to a given receiver.
58 // |app_id|: application ID. 69 // |app_id|: application ID.
59 // |receiver_id|: registration ID of the receiver party. 70 // |receiver_id|: registration ID of the receiver party.
60 // |message|: message to be sent. 71 // |message|: message to be sent.
61 // |callback|: to be called once the asynchronous operation is done. 72 // |callback|: to be called once the asynchronous operation is done.
62 void Send(const std::string& app_id, 73 void Send(const std::string& app_id,
63 const std::string& receiver_id, 74 const std::string& receiver_id,
64 const GCMClient::OutgoingMessage& message, 75 const GCMClient::OutgoingMessage& message,
65 const SendCallback& callback); 76 const SendCallback& callback);
66 77
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 // Ensures that the GCM service starts (if necessary conditions are met). 150 // Ensures that the GCM service starts (if necessary conditions are met).
140 virtual GCMClient::Result EnsureStarted(GCMClient::StartMode start_mode) = 0; 151 virtual GCMClient::Result EnsureStarted(GCMClient::StartMode start_mode) = 0;
141 152
142 // Platform-specific implementation of Register. 153 // Platform-specific implementation of Register.
143 virtual void RegisterImpl(const std::string& app_id, 154 virtual void RegisterImpl(const std::string& app_id,
144 const std::vector<std::string>& sender_ids) = 0; 155 const std::vector<std::string>& sender_ids) = 0;
145 156
146 // Platform-specific implementation of Unregister. 157 // Platform-specific implementation of Unregister.
147 virtual void UnregisterImpl(const std::string& app_id) = 0; 158 virtual void UnregisterImpl(const std::string& app_id) = 0;
148 159
160 // Platform-specific implementation of UnregisterWithSenderId.
161 virtual void UnregisterWithSenderIdImpl(const std::string& app_id,
162 const std::string& sender_id);
163
149 // Platform-specific implementation of Send. 164 // Platform-specific implementation of Send.
150 virtual void SendImpl(const std::string& app_id, 165 virtual void SendImpl(const std::string& app_id,
151 const std::string& receiver_id, 166 const std::string& receiver_id,
152 const GCMClient::OutgoingMessage& message) = 0; 167 const GCMClient::OutgoingMessage& message) = 0;
153 168
154 // Runs the Register callback. 169 // Runs the Register callback.
155 void RegisterFinished(const std::string& app_id, 170 void RegisterFinished(const std::string& app_id,
156 const std::string& registration_id, 171 const std::string& registration_id,
157 GCMClient::Result result); 172 GCMClient::Result result);
158 173
159 // Runs the Unregister callback. 174 // Runs the Unregister callback.
160 void UnregisterFinished(const std::string& app_id, 175 void UnregisterFinished(const std::string& app_id,
161 GCMClient::Result result); 176 GCMClient::Result result);
162 177
163 // Runs the Send callback. 178 // Runs the Send callback.
164 void SendFinished(const std::string& app_id, 179 void SendFinished(const std::string& app_id,
165 const std::string& message_id, 180 const std::string& message_id,
166 GCMClient::Result result); 181 GCMClient::Result result);
167 182
168 bool HasRegisterCallback(const std::string& app_id); 183 bool HasRegisterCallback(const std::string& app_id);
169 184
170 void ClearCallbacks(); 185 void ClearCallbacks();
171 186
172 private: 187 private:
188 // Common code shared by Unregister and UnregisterWithSenderId.
189 void UnregisterInternal(const std::string& app_id,
190 const std::string* sender_id,
191 const UnregisterCallback& callback);
192
173 // Called after unregistration completes in order to trigger the pending 193 // Called after unregistration completes in order to trigger the pending
174 // registration. 194 // registration.
175 void RegisterAfterUnregister( 195 void RegisterAfterUnregister(
176 const std::string& app_id, 196 const std::string& app_id,
177 const std::vector<std::string>& normalized_sender_ids, 197 const std::vector<std::string>& normalized_sender_ids,
178 const UnregisterCallback& unregister_callback, 198 const UnregisterCallback& unregister_callback,
179 GCMClient::Result result); 199 GCMClient::Result result);
180 200
181 // Callback map (from app_id to callback) for Register. 201 // Callback map (from app_id to callback) for Register.
182 std::map<std::string, RegisterCallback> register_callbacks_; 202 std::map<std::string, RegisterCallback> register_callbacks_;
(...skipping 12 matching lines...) Expand all
195 DefaultGCMAppHandler default_app_handler_; 215 DefaultGCMAppHandler default_app_handler_;
196 216
197 base::WeakPtrFactory<GCMDriver> weak_ptr_factory_; 217 base::WeakPtrFactory<GCMDriver> weak_ptr_factory_;
198 218
199 DISALLOW_COPY_AND_ASSIGN(GCMDriver); 219 DISALLOW_COPY_AND_ASSIGN(GCMDriver);
200 }; 220 };
201 221
202 } // namespace gcm 222 } // namespace gcm
203 223
204 #endif // COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_ 224 #endif // COMPONENTS_GCM_DRIVER_GCM_DRIVER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698