Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(317)

Side by Side Diff: chrome/browser/chromeos/policy/heartbeat_scheduler.h

Issue 1258313002: Send GCM id to DMServer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressing #8 Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 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 #ifndef CHROME_BROWSER_CHROMEOS_POLICY_HEARTBEAT_SCHEDULER_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_POLICY_HEARTBEAT_SCHEDULER_H_
6 #define CHROME_BROWSER_CHROMEOS_POLICY_HEARTBEAT_SCHEDULER_H_ 6 #define CHROME_BROWSER_CHROMEOS_POLICY_HEARTBEAT_SCHEDULER_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/cancelable_callback.h" 11 #include "base/cancelable_callback.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/memory/ref_counted.h" 13 #include "base/memory/ref_counted.h"
14 #include "base/memory/weak_ptr.h" 14 #include "base/memory/weak_ptr.h"
15 #include "base/time/time.h" 15 #include "base/time/time.h"
16 #include "chrome/browser/chromeos/settings/cros_settings.h" 16 #include "chrome/browser/chromeos/settings/cros_settings.h"
17 #include "components/gcm_driver/gcm_app_handler.h" 17 #include "components/gcm_driver/gcm_app_handler.h"
18 #include "components/gcm_driver/gcm_client.h" 18 #include "components/gcm_driver/gcm_client.h"
19 #include "components/policy/core/common/cloud/cloud_policy_client.h"
19 20
20 namespace base { 21 namespace base {
21 class SequencedTaskRunner; 22 class SequencedTaskRunner;
22 } 23 }
23 24
24 namespace gcm { 25 namespace gcm {
25 class GCMDriver; 26 class GCMDriver;
26 } 27 }
27 28
28 namespace policy { 29 namespace policy {
29 30
30 class EnterpriseInstallAttributes; 31 class EnterpriseInstallAttributes;
31 class HeartbeatRegistrationHelper; 32 class HeartbeatRegistrationHelper;
32 33
33 // Class responsible for periodically sending heartbeats to the policy service 34 // Class responsible for periodically sending heartbeats to the policy service
34 // for monitoring device connectivity. 35 // for monitoring device connectivity.
35 class HeartbeatScheduler : public gcm::GCMAppHandler { 36 class HeartbeatScheduler : public gcm::GCMAppHandler {
36 public: 37 public:
37 // Default interval for how often we send up a heartbeat. 38 // Default interval for how often we send up a heartbeat.
38 static const int64 kDefaultHeartbeatIntervalMs; 39 static const int64 kDefaultHeartbeatIntervalMs;
39 40
40 // Constructor. |driver| can be null for tests. 41 // Constructor. |cloud_policy_client| will be used to send registered GCM id
42 // to DM server, and can be null. |driver| can be null for tests.
41 HeartbeatScheduler( 43 HeartbeatScheduler(
42 gcm::GCMDriver* driver, 44 gcm::GCMDriver* driver,
45 policy::CloudPolicyClient* cloud_policy_client,
43 const std::string& enrollment_domain, 46 const std::string& enrollment_domain,
44 const std::string& device_id, 47 const std::string& device_id,
45 const scoped_refptr<base::SequencedTaskRunner>& task_runner); 48 const scoped_refptr<base::SequencedTaskRunner>& task_runner);
46 49
47 ~HeartbeatScheduler() override; 50 ~HeartbeatScheduler() override;
48 51
49 // Returns the time of the last heartbeat, or Time(0) if no heartbeat 52 // Returns the time of the last heartbeat, or Time(0) if no heartbeat
50 // has ever happened. 53 // has ever happened.
51 base::Time last_heartbeat() const { return last_heartbeat_; } 54 base::Time last_heartbeat() const { return last_heartbeat_; }
52 55
53 // GCMAppHandler overrides. 56 // GCMAppHandler overrides.
54 void ShutdownHandler() override; 57 void ShutdownHandler() override;
55 void OnMessage(const std::string& app_id, 58 void OnMessage(const std::string& app_id,
56 const gcm::IncomingMessage& message) override; 59 const gcm::IncomingMessage& message) override;
57 void OnMessagesDeleted(const std::string& app_id) override; 60 void OnMessagesDeleted(const std::string& app_id) override;
58 void OnSendError(const std::string& app_id, 61 void OnSendError(const std::string& app_id,
59 const gcm::GCMClient::SendErrorDetails& details) override; 62 const gcm::GCMClient::SendErrorDetails& details) override;
60 void OnSendAcknowledged(const std::string& app_id, 63 void OnSendAcknowledged(const std::string& app_id,
61 const std::string& message_id) override; 64 const std::string& message_id) override;
62 65
66 void SetCloudPolicyClientForTesting(policy::CloudPolicyClient* client);
67
63 private: 68 private:
64 // Callback invoked periodically to send a heartbeat to the policy service. 69 // Callback invoked periodically to send a heartbeat to the policy service.
65 void SendHeartbeat(); 70 void SendHeartbeat();
66 71
67 // Invoked after GCM registration has successfully completed. 72 // Invoked after GCM registration has successfully completed.
68 void OnRegistrationComplete(const std::string& registration_id); 73 void OnRegistrationComplete(const std::string& registration_id);
69 74
70 // Invoked after a heartbeat has been sent to the server. 75 // Invoked after a heartbeat has been sent to the server.
71 void OnHeartbeatSent(const std::string& message_id, 76 void OnHeartbeatSent(const std::string& message_id,
72 gcm::GCMClient::Result result); 77 gcm::GCMClient::Result result);
73 78
74 // Helper method that figures out when the next heartbeat should 79 // Helper method that figures out when the next heartbeat should
75 // be scheduled. 80 // be scheduled.
76 void ScheduleNextHeartbeat(); 81 void ScheduleNextHeartbeat();
77 82
78 // Updates the heartbeat-enabled status and frequency from settings and 83 // Updates the heartbeat-enabled status and frequency from settings and
79 // schedules the next heartbeat. 84 // schedules the next heartbeat.
80 void RefreshHeartbeatSettings(); 85 void RefreshHeartbeatSettings();
81 86
82 // Ensures that the passed interval is within a valid range (not too large or 87 // Ensures that the passed interval is within a valid range (not too large or
83 // too small). 88 // too small).
84 base::TimeDelta EnsureValidHeartbeatInterval(const base::TimeDelta& interval); 89 base::TimeDelta EnsureValidHeartbeatInterval(const base::TimeDelta& interval);
85 90
86 // Shuts down our GCM connection (called when heartbeats are disabled). 91 // Shuts down our GCM connection (called when heartbeats are disabled).
87 void ShutdownGCM(); 92 void ShutdownGCM();
88 93
94 // Callback for the update GCM id mapping request.
95 void OnGcmIdMappingRequestSent(bool status);
96
89 // TaskRunner used for scheduling heartbeats. 97 // TaskRunner used for scheduling heartbeats.
90 const scoped_refptr<base::SequencedTaskRunner> task_runner_; 98 const scoped_refptr<base::SequencedTaskRunner> task_runner_;
91 99
92 // The domain that this device is enrolled to. 100 // The domain that this device is enrolled to.
93 const std::string enrollment_domain_; 101 const std::string enrollment_domain_;
94 102
95 // The device_id for this device - sent up with the enrollment domain with 103 // The device_id for this device - sent up with the enrollment domain with
96 // heartbeats to identify the device to the server. 104 // heartbeats to identify the device to the server.
97 const std::string device_id_; 105 const std::string device_id_;
98 106
(...skipping 10 matching lines...) Expand all
109 heartbeat_frequency_observer_; 117 heartbeat_frequency_observer_;
110 scoped_ptr<chromeos::CrosSettings::ObserverSubscription> 118 scoped_ptr<chromeos::CrosSettings::ObserverSubscription>
111 heartbeat_enabled_observer_; 119 heartbeat_enabled_observer_;
112 120
113 // The time the last heartbeat was sent. 121 // The time the last heartbeat was sent.
114 base::Time last_heartbeat_; 122 base::Time last_heartbeat_;
115 123
116 // Callback invoked via a delay to send a heartbeat. 124 // Callback invoked via a delay to send a heartbeat.
117 base::CancelableClosure heartbeat_callback_; 125 base::CancelableClosure heartbeat_callback_;
118 126
127 policy::CloudPolicyClient* cloud_policy_client_;
128
119 // The GCMDriver used to send heartbeat messages. 129 // The GCMDriver used to send heartbeat messages.
120 gcm::GCMDriver* const gcm_driver_; 130 gcm::GCMDriver* const gcm_driver_;
121 131
122 // The GCM registration ID - if empty, we are not registered yet. 132 // The GCM registration ID - if empty, we are not registered yet.
123 std::string registration_id_; 133 std::string registration_id_;
124 134
125 // If true, we are already registered with GCM and should unregister when 135 // If true, we are already registered with GCM and should unregister when
126 // destroyed. 136 // destroyed.
127 bool registered_app_handler_ = false; 137 bool registered_app_handler_ = false;
128 138
129 // Helper class to manage registering with the GCM server, including 139 // Helper class to manage registering with the GCM server, including
130 // retries, etc. 140 // retries, etc.
131 scoped_ptr<HeartbeatRegistrationHelper> registration_helper_; 141 scoped_ptr<HeartbeatRegistrationHelper> registration_helper_;
132 142
133 // Note: This should remain the last member so it'll be destroyed and 143 // Note: This should remain the last member so it'll be destroyed and
134 // invalidate the weak pointers before any other members are destroyed. 144 // invalidate the weak pointers before any other members are destroyed.
135 base::WeakPtrFactory<HeartbeatScheduler> weak_factory_; 145 base::WeakPtrFactory<HeartbeatScheduler> weak_factory_;
136 146
137 DISALLOW_COPY_AND_ASSIGN(HeartbeatScheduler); 147 DISALLOW_COPY_AND_ASSIGN(HeartbeatScheduler);
138 }; 148 };
139 149
140 } // namespace policy 150 } // namespace policy
141 151
142 #endif // CHROME_BROWSER_CHROMEOS_POLICY_HEARTBEAT_SCHEDULER_H_ 152 #endif // CHROME_BROWSER_CHROMEOS_POLICY_HEARTBEAT_SCHEDULER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698