| 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& product_category_for_subtypes) |
| 47 : android_id(android_id), |
| 48 security_token(security_token), |
| 49 app_id(app_id), |
| 50 use_subtype(use_subtype), |
| 51 product_category_for_subtypes(product_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_.product_category_for_subtypes, |
| 126 body); |
| 127 BuildFormEncoding(kSubtypeKey, request_info_.app_id, body); |
| 128 } else { |
| 129 BuildFormEncoding(kCategoryKey, request_info_.app_id, body); |
| 130 } |
| 131 |
| 118 BuildFormEncoding(kDeviceIdKey, | 132 BuildFormEncoding(kDeviceIdKey, |
| 119 base::Uint64ToString(request_info_.android_id), | 133 base::Uint64ToString(request_info_.android_id), |
| 120 body); | 134 body); |
| 121 BuildFormEncoding(kDeleteKey, kDeleteValue, body); | 135 BuildFormEncoding(kDeleteKey, kDeleteValue, body); |
| 122 | 136 |
| 123 DCHECK(custom_request_handler_.get()); | 137 DCHECK(custom_request_handler_.get()); |
| 124 custom_request_handler_->BuildRequestBody(body); | 138 custom_request_handler_->BuildRequestBody(body); |
| 125 } | 139 } |
| 126 | 140 |
| 127 UnregistrationRequest::Status UnregistrationRequest::ParseResponse( | 141 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()); | 218 custom_request_handler_->ReportUMAs(status, 0, base::TimeDelta()); |
| 205 } | 219 } |
| 206 | 220 |
| 207 // status == SUCCESS || INVALID_PARAMETERS || UNKNOWN_ERROR || | 221 // status == SUCCESS || INVALID_PARAMETERS || UNKNOWN_ERROR || |
| 208 // REACHED_MAX_RETRIES | 222 // REACHED_MAX_RETRIES |
| 209 | 223 |
| 210 callback_.Run(status); | 224 callback_.Run(status); |
| 211 } | 225 } |
| 212 | 226 |
| 213 } // namespace gcm | 227 } // namespace gcm |
| OLD | NEW |