• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef GOOGLE_APIS_GCM_ENGINE_GSERVICES_SETTINGS_H_
6 #define GOOGLE_APIS_GCM_ENGINE_GSERVICES_SETTINGS_H_
7 
8 #include <map>
9 #include <string>
10 
11 #include "base/memory/weak_ptr.h"
12 #include "base/time/time.h"
13 #include "google_apis/gcm/base/gcm_export.h"
14 #include "google_apis/gcm/engine/gcm_store.h"
15 #include "google_apis/gcm/protocol/checkin.pb.h"
16 #include "url/gurl.h"
17 
18 namespace gcm {
19 
20 // Class responsible for handling G-services settings. It takes care of
21 // extracting them from checkin response and storing in GCMStore.
22 class GCM_EXPORT GServicesSettings {
23  public:
24   typedef std::map<std::string, std::string> SettingsMap;
25 
26   // Minimum periodic checkin interval in seconds.
27   static const base::TimeDelta MinimumCheckinInterval();
28 
29   // Default checkin URL.
30   static const GURL DefaultCheckinURL();
31 
32   // Calculates digest of provided settings.
33   static std::string CalculateDigest(const SettingsMap& settings);
34 
35   GServicesSettings();
36   ~GServicesSettings();
37 
38   // Updates the settings based on |checkin_response|.
39   bool UpdateFromCheckinResponse(
40       const checkin_proto::AndroidCheckinResponse& checkin_response);
41 
42   // Updates the settings based on |load_result|. Returns true if update was
43   // successful, false otherwise.
44   void UpdateFromLoadResult(const GCMStore::LoadResult& load_result);
45 
settings_map()46   SettingsMap settings_map() const { return settings_; }
47 
digest()48   std::string digest() const { return digest_; }
49 
50   // Gets the interval at which device should perform a checkin.
51   base::TimeDelta GetCheckinInterval() const;
52 
53   // Gets the URL to use when checking in.
54   GURL GetCheckinURL() const;
55 
56   // Gets address of main MCS endpoint.
57   GURL GetMCSMainEndpoint() const;
58 
59   // Gets address of fallback MCS endpoint.
60   GURL GetMCSFallbackEndpoint() const;
61 
62   // Gets the URL to use when registering or unregistering the apps.
63   GURL GetRegistrationURL() const;
64 
65  private:
66   // Digest (hash) of the settings, used to check whether settings need update.
67   // It is meant to be sent with checkin request, instead of sending the whole
68   // settings table.
69   std::string digest_;
70 
71   // G-services settings as provided by checkin response.
72   SettingsMap settings_;
73 
74   // Factory for creating references in callbacks.
75   base::WeakPtrFactory<GServicesSettings> weak_ptr_factory_;
76 
77   DISALLOW_COPY_AND_ASSIGN(GServicesSettings);
78 };
79 
80 }  // namespace gcm
81 
82 #endif  // GOOGLE_APIS_GCM_ENGINE_GSERVICES_SETTINGS_H_
83