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

Unified Diff: chrome/browser/chromeos/night_light/night_light_client.h

Issue 2966873002: [Night Light] CL12: String changes and fix frequent requests. (Closed)
Patch Set: Nits Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/night_light/night_light_client.h
diff --git a/chrome/browser/chromeos/night_light/night_light_client.h b/chrome/browser/chromeos/night_light/night_light_client.h
index 0f8580dfacd3c9e8766fd7e91f84d96ada9a8697..027cf0ae07f1253eb3e6588c0e61bb600b133964 100644
--- a/chrome/browser/chromeos/night_light/night_light_client.h
+++ b/chrome/browser/chromeos/night_light/night_light_client.h
@@ -12,6 +12,11 @@
#include "chromeos/geolocation/simple_geolocation_provider.h"
#include "mojo/public/cpp/bindings/binding.h"
+namespace base {
+class Clock;
+class TickClock;
+} // namespace base
+
namespace net {
class URLRequestContextGetter;
}
@@ -21,6 +26,9 @@ class URLRequestContextGetter;
class NightLightClient
: public NON_EXPORTED_BASE(ash::mojom::NightLightClient) {
public:
+ NightLightClient(net::URLRequestContextGetter* url_context_getter,
+ base::TickClock* tick_clock,
+ base::Clock* clock);
explicit NightLightClient(net::URLRequestContextGetter* url_context_getter);
stevenjb 2017/07/01 00:02:35 Avoid multiple constructors for high level classes
James Cook 2017/07/01 00:06:57 Or make the parameters mandatory and use a SystemC
afakhry 2017/07/01 00:26:15 The problem is base::Timer, for which we cannot ch
stevenjb 2017/07/01 00:31:26 Could you use a unique_ptr<> for timer_?
afakhry 2017/07/01 00:57:44 Done. So much for those tests! :(
~NightLightClient() override;
@@ -33,8 +41,16 @@ class NightLightClient
void OnScheduleTypeChanged(
ash::mojom::NightLightController::ScheduleType new_type) override;
+ const base::OneShotTimer& timer() const { return timer_; }
+
+ base::Time last_successful_geo_request_time() const {
+ return last_successful_geo_request_time_;
+ }
+
bool using_geoposition() const { return using_geoposition_; }
+ static base::TimeDelta GetNextRequestDelayAfterSuccessForTesting();
+
void SetNightLightControllerPtrForTesting(
ash::mojom::NightLightControllerPtr controller);
@@ -46,6 +62,11 @@ class NightLightClient
const base::TimeDelta elapsed);
private:
+ base::Time GetNow() const;
+
+ // Sends the most recent valid geoposition to NightLightController in ash.
+ void SendCurrentGeoposition();
+
void ScheduleNextRequest(base::TimeDelta delay);
// Virtual so that it can be overriden by a fake implementation in unit tests
@@ -63,6 +84,14 @@ class NightLightClient
base::OneShotTimer timer_;
+ // Optional Used in tests to override the time of "Now".
+ base::Clock* clock_; // Not owned.
+
+ // Last successful geoposition coordinates and its timestamp.
+ base::Time last_successful_geo_request_time_;
+ double latitude_ = 0.0;
+ double longitude_ = 0.0;
+
// True as long as the schedule type is set to "sunset to sunrise", which
// means this client will be retrieving the IP-based geoposition once per day.
bool using_geoposition_ = false;

Powered by Google App Engine
This is Rietveld 408576698