OLD | NEW |
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 #include "google_apis/gcm/engine/unregistration_request.h" | 5 #include "google_apis/gcm/engine/unregistration_request.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 #include "net/url_request/url_request_context_getter.h" | 22 #include "net/url_request/url_request_context_getter.h" |
23 #include "net/url_request/url_request_status.h" | 23 #include "net/url_request/url_request_status.h" |
24 | 24 |
25 namespace gcm { | 25 namespace gcm { |
26 | 26 |
27 namespace { | 27 namespace { |
28 | 28 |
29 const char kRequestContentType[] = "application/x-www-form-urlencoded"; | 29 const char kRequestContentType[] = "application/x-www-form-urlencoded"; |
30 | 30 |
31 // Request constants. | 31 // Request constants. |
32 const char kAppIdKey[] = "app"; | 32 const char kCategoryKey[] = "app"; |
| 33 const char kSubtypeKey[] = "X-subtype"; |
33 const char kDeleteKey[] = "delete"; | 34 const char kDeleteKey[] = "delete"; |
34 const char kDeleteValue[] = "true"; | 35 const char kDeleteValue[] = "true"; |
35 const char kDeviceIdKey[] = "device"; | 36 const char kDeviceIdKey[] = "device"; |
36 const char kLoginHeader[] = "AidLogin"; | 37 const char kLoginHeader[] = "AidLogin"; |
37 | 38 |
38 } // namespace | 39 } // namespace |
39 | 40 |
40 UnregistrationRequest::RequestInfo::RequestInfo(uint64_t android_id, | 41 UnregistrationRequest::RequestInfo::RequestInfo( |
41 uint64_t security_token, | 42 uint64_t android_id, |
42 const std::string& app_id) | 43 uint64_t security_token, |
43 : android_id(android_id), security_token(security_token), app_id(app_id) { | 44 const std::string& app_id, |
| 45 bool use_subtype, |
| 46 const std::string& category_for_subtypes) |
| 47 : android_id(android_id), |
| 48 security_token(security_token), |
| 49 app_id(app_id), |
| 50 use_subtype(use_subtype), |
| 51 category_for_subtypes(category_for_subtypes) { |
44 DCHECK(android_id != 0UL); | 52 DCHECK(android_id != 0UL); |
45 DCHECK(security_token != 0UL); | 53 DCHECK(security_token != 0UL); |
46 } | 54 } |
47 | 55 |
48 UnregistrationRequest::RequestInfo::~RequestInfo() {} | 56 UnregistrationRequest::RequestInfo::~RequestInfo() {} |
49 | 57 |
50 UnregistrationRequest::CustomRequestHandler::CustomRequestHandler() {} | 58 UnregistrationRequest::CustomRequestHandler::CustomRequestHandler() {} |
51 | 59 |
52 UnregistrationRequest::CustomRequestHandler::~CustomRequestHandler() {} | 60 UnregistrationRequest::CustomRequestHandler::~CustomRequestHandler() {} |
53 | 61 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 url_fetcher_->Start(); | 110 url_fetcher_->Start(); |
103 } | 111 } |
104 | 112 |
105 void UnregistrationRequest::BuildRequestHeaders(std::string* extra_headers) { | 113 void UnregistrationRequest::BuildRequestHeaders(std::string* extra_headers) { |
106 net::HttpRequestHeaders headers; | 114 net::HttpRequestHeaders headers; |
107 headers.SetHeader( | 115 headers.SetHeader( |
108 net::HttpRequestHeaders::kAuthorization, | 116 net::HttpRequestHeaders::kAuthorization, |
109 std::string(kLoginHeader) + " " + | 117 std::string(kLoginHeader) + " " + |
110 base::Uint64ToString(request_info_.android_id) + ":" + | 118 base::Uint64ToString(request_info_.android_id) + ":" + |
111 base::Uint64ToString(request_info_.security_token)); | 119 base::Uint64ToString(request_info_.security_token)); |
112 headers.SetHeader(kAppIdKey, request_info_.app_id); | |
113 *extra_headers = headers.ToString(); | 120 *extra_headers = headers.ToString(); |
114 } | 121 } |
115 | 122 |
116 void UnregistrationRequest::BuildRequestBody(std::string* body) { | 123 void UnregistrationRequest::BuildRequestBody(std::string* body) { |
117 BuildFormEncoding(kAppIdKey, request_info_.app_id, body); | 124 if (request_info_.use_subtype) { |
| 125 BuildFormEncoding(kCategoryKey, request_info_.category_for_subtypes, body); |
| 126 BuildFormEncoding(kSubtypeKey, request_info_.app_id, body); |
| 127 } else { |
| 128 BuildFormEncoding(kCategoryKey, request_info_.app_id, body); |
| 129 } |
| 130 |
118 BuildFormEncoding(kDeviceIdKey, | 131 BuildFormEncoding(kDeviceIdKey, |
119 base::Uint64ToString(request_info_.android_id), | 132 base::Uint64ToString(request_info_.android_id), |
120 body); | 133 body); |
121 BuildFormEncoding(kDeleteKey, kDeleteValue, body); | 134 BuildFormEncoding(kDeleteKey, kDeleteValue, body); |
122 | 135 |
123 DCHECK(custom_request_handler_.get()); | 136 DCHECK(custom_request_handler_.get()); |
124 custom_request_handler_->BuildRequestBody(body); | 137 custom_request_handler_->BuildRequestBody(body); |
125 } | 138 } |
126 | 139 |
127 UnregistrationRequest::Status UnregistrationRequest::ParseResponse( | 140 UnregistrationRequest::Status UnregistrationRequest::ParseResponse( |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 custom_request_handler_->ReportUMAs(status, 0, base::TimeDelta()); | 217 custom_request_handler_->ReportUMAs(status, 0, base::TimeDelta()); |
205 } | 218 } |
206 | 219 |
207 // status == SUCCESS || INVALID_PARAMETERS || UNKNOWN_ERROR || | 220 // status == SUCCESS || INVALID_PARAMETERS || UNKNOWN_ERROR || |
208 // REACHED_MAX_RETRIES | 221 // REACHED_MAX_RETRIES |
209 | 222 |
210 callback_.Run(status); | 223 callback_.Run(status); |
211 } | 224 } |
212 | 225 |
213 } // namespace gcm | 226 } // namespace gcm |
OLD | NEW |