Index: google_apis/gcm/engine/registration_request.h |
diff --git a/google_apis/gcm/engine/registration_request.h b/google_apis/gcm/engine/registration_request.h |
index 1f707b9dd9ee276fd6ddb34609f8f4ddc9fb9595..c4c3ae7c063a3216a1228e14358f04479d97238e 100644 |
--- a/google_apis/gcm/engine/registration_request.h |
+++ b/google_apis/gcm/engine/registration_request.h |
@@ -6,6 +6,7 @@ |
#define GOOGLE_APIS_GCM_ENGINE_REGISTRATION_REQUEST_H_ |
#include <map> |
+#include <string> |
#include <vector> |
#include "base/basictypes.h" |
@@ -59,14 +60,12 @@ class GCM_EXPORT RegistrationRequest : public net::URLFetcherDelegate { |
const std::string& registration_id)> |
RegistrationCallback; |
- // Details of the of the Registration Request. Only user's android ID and |
- // its serial number are optional and can be set to 0. All other parameters |
- // have to be specified to successfully complete the call. |
+ // Defines the common info about a registration/token request. All parameters |
+ // are mandatory. |
struct GCM_EXPORT RequestInfo { |
RequestInfo(uint64 android_id, |
uint64 security_token, |
- const std::string& app_id, |
- const std::vector<std::string>& sender_ids); |
+ const std::string& app_id); |
~RequestInfo(); |
// Android ID of the device. |
@@ -75,20 +74,31 @@ class GCM_EXPORT RegistrationRequest : public net::URLFetcherDelegate { |
uint64 security_token; |
// Application ID. |
std::string app_id; |
- // Certificate of the application. |
- std::string cert; |
- // List of IDs of senders. Allowed up to 100. |
- std::vector<std::string> sender_ids; |
+ }; |
+ |
+ // Encapsulates the custom logic that is needed to build and process the |
+ // registration request. |
+ class GCM_EXPORT CustomRequestHandler { |
+ public: |
+ CustomRequestHandler(); |
+ virtual ~CustomRequestHandler(); |
+ |
+ // Builds the HTTP request body data. It is called after |
+ // RegistrationRequest::BuildRequestBody to append more custom info to |
+ // |body|. Note that the request body is encoded in HTTP form format. |
+ virtual void BuildRequestBody(std::string* body) = 0; |
}; |
RegistrationRequest( |
const GURL& registration_url, |
const RequestInfo& request_info, |
+ scoped_ptr<CustomRequestHandler> custom_request_handler, |
const net::BackoffEntry::Policy& backoff_policy, |
const RegistrationCallback& callback, |
int max_retry_count, |
scoped_refptr<net::URLRequestContextGetter> request_context_getter, |
- GCMStatsRecorder* recorder); |
+ GCMStatsRecorder* recorder, |
+ const std::string& source_to_record); |
~RegistrationRequest() override; |
void Start(); |
@@ -101,12 +111,16 @@ class GCM_EXPORT RegistrationRequest : public net::URLFetcherDelegate { |
// failure, when |update_backoff| is true. |
void RetryWithBackoff(bool update_backoff); |
+ void BuildRequestHeaders(std::string* extra_headers); |
+ void BuildRequestBody(std::string* body); |
+ |
// Parse the response returned by the URL fetcher into token, and returns the |
// status. |
Status ParseResponse(const net::URLFetcher* source, std::string* token); |
RegistrationCallback callback_; |
RequestInfo request_info_; |
+ scoped_ptr<CustomRequestHandler> custom_request_handler_; |
GURL registration_url_; |
net::BackoffEntry backoff_entry_; |
@@ -117,6 +131,7 @@ class GCM_EXPORT RegistrationRequest : public net::URLFetcherDelegate { |
// Recorder that records GCM activities for debugging purpose. Not owned. |
GCMStatsRecorder* recorder_; |
+ std::string source_to_record_; |
base::WeakPtrFactory<RegistrationRequest> weak_ptr_factory_; |