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

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: adopt upstream protobuf changes 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
(...skipping 26 matching lines...) Expand all
79 // schedules the next heartbeat. 82 // schedules the next heartbeat.
80 void RefreshHeartbeatSettings(); 83 void RefreshHeartbeatSettings();
81 84
82 // Ensures that the passed interval is within a valid range (not too large or 85 // Ensures that the passed interval is within a valid range (not too large or
83 // too small). 86 // too small).
84 base::TimeDelta EnsureValidHeartbeatInterval(const base::TimeDelta& interval); 87 base::TimeDelta EnsureValidHeartbeatInterval(const base::TimeDelta& interval);
85 88
86 // Shuts down our GCM connection (called when heartbeats are disabled). 89 // Shuts down our GCM connection (called when heartbeats are disabled).
87 void ShutdownGCM(); 90 void ShutdownGCM();
88 91
92 // Callback for the GCM id update request.
93 void OnGcmIdUpdateRequestSent(bool status);
94
89 // TaskRunner used for scheduling heartbeats. 95 // TaskRunner used for scheduling heartbeats.
90 const scoped_refptr<base::SequencedTaskRunner> task_runner_; 96 const scoped_refptr<base::SequencedTaskRunner> task_runner_;
91 97
92 // The domain that this device is enrolled to. 98 // The domain that this device is enrolled to.
93 const std::string enrollment_domain_; 99 const std::string enrollment_domain_;
94 100
95 // The device_id for this device - sent up with the enrollment domain with 101 // The device_id for this device - sent up with the enrollment domain with
96 // heartbeats to identify the device to the server. 102 // heartbeats to identify the device to the server.
97 const std::string device_id_; 103 const std::string device_id_;
98 104
(...skipping 10 matching lines...) Expand all
109 heartbeat_frequency_observer_; 115 heartbeat_frequency_observer_;
110 scoped_ptr<chromeos::CrosSettings::ObserverSubscription> 116 scoped_ptr<chromeos::CrosSettings::ObserverSubscription>
111 heartbeat_enabled_observer_; 117 heartbeat_enabled_observer_;
112 118
113 // The time the last heartbeat was sent. 119 // The time the last heartbeat was sent.
114 base::Time last_heartbeat_; 120 base::Time last_heartbeat_;
115 121
116 // Callback invoked via a delay to send a heartbeat. 122 // Callback invoked via a delay to send a heartbeat.
117 base::CancelableClosure heartbeat_callback_; 123 base::CancelableClosure heartbeat_callback_;
118 124
125 policy::CloudPolicyClient* cloud_policy_client_;
126
119 // The GCMDriver used to send heartbeat messages. 127 // The GCMDriver used to send heartbeat messages.
120 gcm::GCMDriver* const gcm_driver_; 128 gcm::GCMDriver* const gcm_driver_;
121 129
122 // The GCM registration ID - if empty, we are not registered yet. 130 // The GCM registration ID - if empty, we are not registered yet.
123 std::string registration_id_; 131 std::string registration_id_;
124 132
125 // If true, we are already registered with GCM and should unregister when 133 // If true, we are already registered with GCM and should unregister when
126 // destroyed. 134 // destroyed.
127 bool registered_app_handler_ = false; 135 bool registered_app_handler_ = false;
128 136
129 // Helper class to manage registering with the GCM server, including 137 // Helper class to manage registering with the GCM server, including
130 // retries, etc. 138 // retries, etc.
131 scoped_ptr<HeartbeatRegistrationHelper> registration_helper_; 139 scoped_ptr<HeartbeatRegistrationHelper> registration_helper_;
132 140
133 // Note: This should remain the last member so it'll be destroyed and 141 // Note: This should remain the last member so it'll be destroyed and
134 // invalidate the weak pointers before any other members are destroyed. 142 // invalidate the weak pointers before any other members are destroyed.
135 base::WeakPtrFactory<HeartbeatScheduler> weak_factory_; 143 base::WeakPtrFactory<HeartbeatScheduler> weak_factory_;
136 144
137 DISALLOW_COPY_AND_ASSIGN(HeartbeatScheduler); 145 DISALLOW_COPY_AND_ASSIGN(HeartbeatScheduler);
138 }; 146 };
139 147
140 } // namespace policy 148 } // namespace policy
141 149
142 #endif // CHROME_BROWSER_CHROMEOS_POLICY_HEARTBEAT_SCHEDULER_H_ 150 #endif // CHROME_BROWSER_CHROMEOS_POLICY_HEARTBEAT_SCHEDULER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698