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

Side by Side Diff: chrome/browser/extensions/api/gcm/gcm_api.cc

Issue 270873002: Extract GCMClient data types into separate gcm_types.h (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reupload Created 6 years, 7 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 2013 The Chromium Authors. All rights reserved. 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 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 #include "chrome/browser/extensions/api/gcm/gcm_api.h" 5 #include "chrome/browser/extensions/api/gcm/gcm_api.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 17 matching lines...) Expand all
28 const char kInvalidParameter[] = 28 const char kInvalidParameter[] =
29 "Function was called with invalid parameters."; 29 "Function was called with invalid parameters.";
30 const char kNotSignedIn[] = "Profile was not signed in."; 30 const char kNotSignedIn[] = "Profile was not signed in.";
31 const char kAsyncOperationPending[] = 31 const char kAsyncOperationPending[] =
32 "Asynchronous operation is pending."; 32 "Asynchronous operation is pending.";
33 const char kNetworkError[] = "Network error occurred."; 33 const char kNetworkError[] = "Network error occurred.";
34 const char kServerError[] = "Server error occurred."; 34 const char kServerError[] = "Server error occurred.";
35 const char kTtlExceeded[] = "Time-to-live exceeded."; 35 const char kTtlExceeded[] = "Time-to-live exceeded.";
36 const char kUnknownError[] = "Unknown error occurred."; 36 const char kUnknownError[] = "Unknown error occurred.";
37 37
38 const char* GcmResultToError(gcm::GCMClient::Result result) { 38 const char* GcmResultToError(gcm::Result result) {
39 switch (result) { 39 switch (result) {
40 case gcm::GCMClient::SUCCESS: 40 case gcm::RESULT_SUCCESS:
41 return ""; 41 return "";
42 case gcm::GCMClient::INVALID_PARAMETER: 42 case gcm::RESULT_INVALID_PARAMETER:
43 return kInvalidParameter; 43 return kInvalidParameter;
44 case gcm::GCMClient::NOT_SIGNED_IN: 44 case gcm::RESULT_NOT_SIGNED_IN:
45 return kNotSignedIn; 45 return kNotSignedIn;
46 case gcm::GCMClient::ASYNC_OPERATION_PENDING: 46 case gcm::RESULT_ASYNC_OPERATION_PENDING:
47 return kAsyncOperationPending; 47 return kAsyncOperationPending;
48 case gcm::GCMClient::NETWORK_ERROR: 48 case gcm::RESULT_NETWORK_ERROR:
49 return kNetworkError; 49 return kNetworkError;
50 case gcm::GCMClient::SERVER_ERROR: 50 case gcm::RESULT_SERVER_ERROR:
51 return kServerError; 51 return kServerError;
52 case gcm::GCMClient::TTL_EXCEEDED: 52 case gcm::RESULT_TTL_EXCEEDED:
53 return kTtlExceeded; 53 return kTtlExceeded;
54 case gcm::GCMClient::UNKNOWN_ERROR: 54 case gcm::RESULT_UNKNOWN_ERROR:
55 return kUnknownError; 55 return kUnknownError;
56 default: 56 default:
57 NOTREACHED() << "Unexpected value of result cannot be converted: " 57 NOTREACHED() << "Unexpected value of result cannot be converted: "
58 << result; 58 << result;
59 } 59 }
60 60
61 // Never reached, but prevents missing return statement warning. 61 // Never reached, but prevents missing return statement warning.
62 return ""; 62 return "";
63 } 63 }
64 64
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 GCMProfileService()->Register( 113 GCMProfileService()->Register(
114 GetExtension()->id(), 114 GetExtension()->id(),
115 params->sender_ids, 115 params->sender_ids,
116 base::Bind(&GcmRegisterFunction::CompleteFunctionWithResult, this)); 116 base::Bind(&GcmRegisterFunction::CompleteFunctionWithResult, this));
117 117
118 return true; 118 return true;
119 } 119 }
120 120
121 void GcmRegisterFunction::CompleteFunctionWithResult( 121 void GcmRegisterFunction::CompleteFunctionWithResult(
122 const std::string& registration_id, 122 const std::string& registration_id,
123 gcm::GCMClient::Result result) { 123 gcm::Result result) {
124 SetResult(new base::StringValue(registration_id)); 124 SetResult(new base::StringValue(registration_id));
125 SetError(GcmResultToError(result)); 125 SetError(GcmResultToError(result));
126 SendResponse(gcm::GCMClient::SUCCESS == result); 126 SendResponse(gcm::RESULT_SUCCESS == result);
127 } 127 }
128 128
129 GcmUnregisterFunction::GcmUnregisterFunction() {} 129 GcmUnregisterFunction::GcmUnregisterFunction() {}
130 130
131 GcmUnregisterFunction::~GcmUnregisterFunction() {} 131 GcmUnregisterFunction::~GcmUnregisterFunction() {}
132 132
133 bool GcmUnregisterFunction::DoWork() { 133 bool GcmUnregisterFunction::DoWork() {
134 GCMProfileService()->Unregister( 134 GCMProfileService()->Unregister(
135 GetExtension()->id(), 135 GetExtension()->id(),
136 base::Bind(&GcmUnregisterFunction::CompleteFunctionWithResult, this)); 136 base::Bind(&GcmUnregisterFunction::CompleteFunctionWithResult, this));
137 137
138 return true; 138 return true;
139 } 139 }
140 140
141 void GcmUnregisterFunction::CompleteFunctionWithResult( 141 void GcmUnregisterFunction::CompleteFunctionWithResult(
142 gcm::GCMClient::Result result) { 142 gcm::Result result) {
143 SetError(GcmResultToError(result)); 143 SetError(GcmResultToError(result));
144 SendResponse(gcm::GCMClient::SUCCESS == result); 144 SendResponse(gcm::RESULT_SUCCESS == result);
145 } 145 }
146 146
147 GcmSendFunction::GcmSendFunction() {} 147 GcmSendFunction::GcmSendFunction() {}
148 148
149 GcmSendFunction::~GcmSendFunction() {} 149 GcmSendFunction::~GcmSendFunction() {}
150 150
151 bool GcmSendFunction::DoWork() { 151 bool GcmSendFunction::DoWork() {
152 scoped_ptr<api::gcm::Send::Params> params( 152 scoped_ptr<api::gcm::Send::Params> params(
153 api::gcm::Send::Params::Create(*args_)); 153 api::gcm::Send::Params::Create(*args_));
154 EXTENSION_FUNCTION_VALIDATE(params.get()); 154 EXTENSION_FUNCTION_VALIDATE(params.get());
155 EXTENSION_FUNCTION_VALIDATE( 155 EXTENSION_FUNCTION_VALIDATE(
156 ValidateMessageData(params->message.data.additional_properties)); 156 ValidateMessageData(params->message.data.additional_properties));
157 157
158 gcm::GCMClient::OutgoingMessage outgoing_message; 158 gcm::OutgoingMessage outgoing_message;
159 outgoing_message.id = params->message.message_id; 159 outgoing_message.id = params->message.message_id;
160 outgoing_message.data = params->message.data.additional_properties; 160 outgoing_message.data = params->message.data.additional_properties;
161 if (params->message.time_to_live.get()) 161 if (params->message.time_to_live.get())
162 outgoing_message.time_to_live = *params->message.time_to_live; 162 outgoing_message.time_to_live = *params->message.time_to_live;
163 163
164 GCMProfileService()->Send( 164 GCMProfileService()->Send(
165 GetExtension()->id(), 165 GetExtension()->id(),
166 params->message.destination_id, 166 params->message.destination_id,
167 outgoing_message, 167 outgoing_message,
168 base::Bind(&GcmSendFunction::CompleteFunctionWithResult, this)); 168 base::Bind(&GcmSendFunction::CompleteFunctionWithResult, this));
169 169
170 return true; 170 return true;
171 } 171 }
172 172
173 void GcmSendFunction::CompleteFunctionWithResult( 173 void GcmSendFunction::CompleteFunctionWithResult(
174 const std::string& message_id, 174 const std::string& message_id,
175 gcm::GCMClient::Result result) { 175 gcm::Result result) {
176 SetResult(new base::StringValue(message_id)); 176 SetResult(new base::StringValue(message_id));
177 SetError(GcmResultToError(result)); 177 SetError(GcmResultToError(result));
178 SendResponse(gcm::GCMClient::SUCCESS == result); 178 SendResponse(gcm::RESULT_SUCCESS == result);
179 } 179 }
180 180
181 bool GcmSendFunction::ValidateMessageData( 181 bool GcmSendFunction::ValidateMessageData(
182 const gcm::GCMClient::MessageData& data) const { 182 const gcm::MessageData& data) const {
183 size_t total_size = 0u; 183 size_t total_size = 0u;
184 for (std::map<std::string, std::string>::const_iterator iter = data.begin(); 184 for (std::map<std::string, std::string>::const_iterator iter = data.begin();
185 iter != data.end(); ++iter) { 185 iter != data.end(); ++iter) {
186 total_size += iter->first.size() + iter->second.size(); 186 total_size += iter->first.size() + iter->second.size();
187 187
188 if (!IsMessageKeyValid(iter->first) || 188 if (!IsMessageKeyValid(iter->first) ||
189 kMaximumMessageSize < iter->first.size() || 189 kMaximumMessageSize < iter->first.size() ||
190 kMaximumMessageSize < iter->second.size() || 190 kMaximumMessageSize < iter->second.size() ||
191 kMaximumMessageSize < total_size) 191 kMaximumMessageSize < total_size)
192 return false; 192 return false;
(...skipping 13 matching lines...) Expand all
206 } 206 }
207 207
208 GcmJsEventRouter::~GcmJsEventRouter() { 208 GcmJsEventRouter::~GcmJsEventRouter() {
209 EventRouter* event_router = EventRouter::Get(profile_); 209 EventRouter* event_router = EventRouter::Get(profile_);
210 if (event_router) 210 if (event_router)
211 event_router->UnregisterObserver(this); 211 event_router->UnregisterObserver(this);
212 } 212 }
213 213
214 void GcmJsEventRouter::OnMessage( 214 void GcmJsEventRouter::OnMessage(
215 const std::string& app_id, 215 const std::string& app_id,
216 const gcm::GCMClient::IncomingMessage& message) { 216 const gcm::IncomingMessage& message) {
217 api::gcm::OnMessage::Message message_arg; 217 api::gcm::OnMessage::Message message_arg;
218 message_arg.data.additional_properties = message.data; 218 message_arg.data.additional_properties = message.data;
219 if (!message.collapse_key.empty()) 219 if (!message.collapse_key.empty())
220 message_arg.collapse_key.reset(new std::string(message.collapse_key)); 220 message_arg.collapse_key.reset(new std::string(message.collapse_key));
221 221
222 scoped_ptr<Event> event(new Event( 222 scoped_ptr<Event> event(new Event(
223 api::gcm::OnMessage::kEventName, 223 api::gcm::OnMessage::kEventName,
224 api::gcm::OnMessage::Create(message_arg).Pass(), 224 api::gcm::OnMessage::Create(message_arg).Pass(),
225 profile_)); 225 profile_));
226 EventRouter::Get(profile_)->DispatchEventToExtension(app_id, event.Pass()); 226 EventRouter::Get(profile_)->DispatchEventToExtension(app_id, event.Pass());
227 } 227 }
228 228
229 void GcmJsEventRouter::OnMessagesDeleted(const std::string& app_id) { 229 void GcmJsEventRouter::OnMessagesDeleted(const std::string& app_id) {
230 scoped_ptr<Event> event(new Event( 230 scoped_ptr<Event> event(new Event(
231 api::gcm::OnMessagesDeleted::kEventName, 231 api::gcm::OnMessagesDeleted::kEventName,
232 api::gcm::OnMessagesDeleted::Create().Pass(), 232 api::gcm::OnMessagesDeleted::Create().Pass(),
233 profile_)); 233 profile_));
234 EventRouter::Get(profile_)->DispatchEventToExtension(app_id, event.Pass()); 234 EventRouter::Get(profile_)->DispatchEventToExtension(app_id, event.Pass());
235 } 235 }
236 236
237 void GcmJsEventRouter::OnSendError( 237 void GcmJsEventRouter::OnSendError(
238 const std::string& app_id, 238 const std::string& app_id,
239 const gcm::GCMClient::SendErrorDetails& send_error_details) { 239 const gcm::SendErrorDetails& send_error_details) {
240 api::gcm::OnSendError::Error error; 240 api::gcm::OnSendError::Error error;
241 error.message_id.reset(new std::string(send_error_details.message_id)); 241 error.message_id.reset(new std::string(send_error_details.message_id));
242 error.error_message = GcmResultToError(send_error_details.result); 242 error.error_message = GcmResultToError(send_error_details.result);
243 error.details.additional_properties = send_error_details.additional_data; 243 error.details.additional_properties = send_error_details.additional_data;
244 244
245 scoped_ptr<Event> event(new Event( 245 scoped_ptr<Event> event(new Event(
246 api::gcm::OnSendError::kEventName, 246 api::gcm::OnSendError::kEventName,
247 api::gcm::OnSendError::Create(error).Pass(), 247 api::gcm::OnSendError::Create(error).Pass(),
248 profile_)); 248 profile_));
249 EventRouter::Get(profile_)->DispatchEventToExtension(app_id, event.Pass()); 249 EventRouter::Get(profile_)->DispatchEventToExtension(app_id, event.Pass());
250 } 250 }
251 251
252 void GcmJsEventRouter::OnListenerAdded(const EventListenerInfo& details) { 252 void GcmJsEventRouter::OnListenerAdded(const EventListenerInfo& details) {
253 if (gcm::GCMProfileService::GetGCMEnabledState(profile_) == 253 if (gcm::GCMProfileService::GetGCMEnabledState(profile_) ==
254 gcm::GCMProfileService::ALWAYS_DISABLED) { 254 gcm::GCMProfileService::ALWAYS_DISABLED) {
255 return; 255 return;
256 } 256 }
257 gcm::GCMProfileServiceFactory::GetForProfile(profile_)->Start(); 257 gcm::GCMProfileServiceFactory::GetForProfile(profile_)->Start();
258 } 258 }
259 259
260 } // namespace extensions 260 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/gcm/gcm_api.h ('k') | chrome/browser/extensions/api/gcm/gcm_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698