| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef GOOGLE_APIS_GCM_ENGINE_GSERVICES_SETTINGS_H_ |
| #define GOOGLE_APIS_GCM_ENGINE_GSERVICES_SETTINGS_H_ |
| |
| #include <map> |
| #include <string> |
| |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| #include "base/time/time.h" |
| #include "google_apis/gcm/base/gcm_export.h" |
| #include "google_apis/gcm/engine/gcm_store.h" |
| #include "google_apis/gcm/protocol/checkin.pb.h" |
| #include "url/gurl.h" |
| |
| namespace gcm { |
| |
| // Class responsible for handling G-services settings. It takes care of |
| // extracting them from checkin response and storing in GCMStore. |
| class GCM_EXPORT GServicesSettings { |
| public: |
| typedef std::map<std::string, std::string> SettingsMap; |
| |
| // Minimum periodic checkin interval in seconds. |
| static const base::TimeDelta MinimumCheckinInterval(); |
| |
| // Calculates digest of provided settings. |
| static std::string CalculateDigest(const SettingsMap& settings); |
| |
| GServicesSettings(); |
| ~GServicesSettings(); |
| |
| // Updates the settings based on |checkin_response|. |
| bool UpdateFromCheckinResponse( |
| const checkin_proto::AndroidCheckinResponse& checkin_response); |
| |
| // Updates the settings based on |load_result|. Returns true if update was |
| // successful, false otherwise. |
| void UpdateFromLoadResult(const GCMStore::LoadResult& load_result); |
| |
| SettingsMap settings_map() const { return settings_; } |
| |
| std::string digest() const { return digest_; } |
| |
| // Gets the interval at which device should perform a checkin. |
| base::TimeDelta GetCheckinInterval() const; |
| |
| // Gets the URL to use when checking in. |
| GURL GetCheckinURL() const; |
| |
| // Gets address of main MCS endpoint. |
| GURL GetMCSMainEndpoint() const; |
| |
| // Gets address of fallback MCS endpoint. Will be empty if there isn't one. |
| GURL GetMCSFallbackEndpoint() const; |
| |
| // Gets the URL to use when registering or unregistering the apps. |
| GURL GetRegistrationURL() const; |
| |
| private: |
| // Digest (hash) of the settings, used to check whether settings need update. |
| // It is meant to be sent with checkin request, instead of sending the whole |
| // settings table. |
| std::string digest_; |
| |
| // G-services settings as provided by checkin response. |
| SettingsMap settings_; |
| |
| // Factory for creating references in callbacks. |
| base::WeakPtrFactory<GServicesSettings> weak_ptr_factory_; |
| |
| DISALLOW_COPY_AND_ASSIGN(GServicesSettings); |
| }; |
| |
| } // namespace gcm |
| |
| #endif // GOOGLE_APIS_GCM_ENGINE_GSERVICES_SETTINGS_H_ |