Index: google_apis/gcm/engine/unregistration_request.h |
diff --git a/google_apis/gcm/engine/unregistration_request.h b/google_apis/gcm/engine/unregistration_request.h |
index c5c0eb5919b915e2672e0c3a4e8bfffe690130b9..92541935cef2f4d8910bd31940a8a14cfa61be1e 100644 |
--- a/google_apis/gcm/engine/unregistration_request.h |
+++ b/google_apis/gcm/engine/unregistration_request.h |
@@ -55,19 +55,83 @@ class GCM_EXPORT UnregistrationRequest : public net::URLFetcherDelegate { |
// Callback completing the unregistration request. |
typedef base::Callback<void(Status success)> UnregistrationCallback; |
- // Details of the of the Unregistration Request. All parameters are mandatory. |
- struct GCM_EXPORT RequestInfo { |
- RequestInfo(uint64 android_id, |
- uint64 security_token, |
- const std::string& app_id); |
- ~RequestInfo(); |
- |
+ // Encapsulates the common info about an unregistration/token-deletion |
+ // request. |
+ class GCM_EXPORT RequestInfo { |
+ public: |
+ RequestInfo(); |
+ virtual ~RequestInfo(); |
+ |
+ virtual void BuildRequestHeaders(std::string* extra_headers); |
+ virtual void BuildRequestBody(std::string* body); |
+ |
+ std::string app_id() const { return app_id_; } |
+ |
+ void set_chrome_version(const std::string& chrome_version) { |
+ chrome_version_ = chrome_version; |
+ } |
+ void set_android_id(uint64 android_id) { |
+ android_id_ = android_id; |
+ } |
+ void set_security_token(uint64 security_token) { |
+ security_token_ = security_token; |
+ } |
+ void set_app_id(const std::string& app_id) { |
+ app_id_ = app_id; |
+ } |
+ |
+ protected: |
+ // Version to pass. |
+ std::string chrome_version_; |
// Android ID of the device. |
- uint64 android_id; |
+ uint64 android_id_; |
// Security token of the device. |
- uint64 security_token; |
+ uint64 security_token_; |
// Application ID. |
- std::string app_id; |
+ std::string app_id_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(RequestInfo); |
+ }; |
+ |
+ // GCM unregistration request. |
+ class GCM_EXPORT GCMRequestInfo : public RequestInfo { |
+ public: |
+ GCMRequestInfo(); |
+ ~GCMRequestInfo() override; |
+ |
+ // RequestInfo overrides: |
+ void BuildRequestBody(std::string* body) override; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(GCMRequestInfo); |
+ }; |
+ |
+ // Instance ID token deletion request. |
+ class GCM_EXPORT InstanceIDRequestInfo : public RequestInfo { |
+ public: |
+ InstanceIDRequestInfo(); |
+ ~InstanceIDRequestInfo() override; |
+ |
+ // RequestInfo overrides: |
+ void BuildRequestBody(std::string* body) override; |
+ |
+ void set_instance_id(const std::string& instance_id) { |
+ instance_id_ = instance_id; |
+ } |
+ void set_authorized_entity(const std::string& authorized_entity) { |
+ authorized_entity_ = authorized_entity; |
+ } |
+ void set_scope(const std::string& scope) { |
+ scope_ = scope; |
+ } |
+ |
+ private: |
+ std::string instance_id_; |
+ std::string authorized_entity_; |
+ std::string scope_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(InstanceIDRequestInfo); |
}; |
// Creates an instance of UnregistrationRequest. |callback| will be called |
@@ -75,7 +139,7 @@ class GCM_EXPORT UnregistrationRequest : public net::URLFetcherDelegate { |
// further retries pointless. |
UnregistrationRequest( |
const GURL& registration_url, |
- const RequestInfo& request_info, |
+ scoped_ptr<RequestInfo> request_info, |
const net::BackoffEntry::Policy& backoff_policy, |
const UnregistrationCallback& callback, |
scoped_refptr<net::URLRequestContextGetter> request_context_getter, |
@@ -94,7 +158,7 @@ class GCM_EXPORT UnregistrationRequest : public net::URLFetcherDelegate { |
void RetryWithBackoff(bool update_backoff); |
UnregistrationCallback callback_; |
- RequestInfo request_info_; |
+ scoped_ptr<RequestInfo> request_info_; |
GURL registration_url_; |
net::BackoffEntry backoff_entry_; |