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

Unified Diff: chrome/browser/network_time/network_time_tracker.cc

Issue 291333009: network_time: Remove NetworkTimeService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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/network_time/network_time_tracker.cc
diff --git a/chrome/browser/network_time/network_time_tracker.cc b/chrome/browser/network_time/network_time_tracker.cc
index 885c9722f13b1ab7976cb95289a67c8c2ac50025..6be0a58184bd79159bb2b8941243579055c9f865 100644
--- a/chrome/browser/network_time/network_time_tracker.cc
+++ b/chrome/browser/network_time/network_time_tracker.cc
@@ -5,10 +5,15 @@
#include "chrome/browser/network_time/network_time_tracker.h"
#include "base/basictypes.h"
+#include "base/command_line.h"
#include "base/i18n/time_formatting.h"
#include "base/logging.h"
+#include "base/prefs/pref_registry_simple.h"
+#include "base/prefs/pref_service.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/tick_clock.h"
+#include "chrome/common/chrome_switches.h"
+#include "chrome/common/pref_names.h"
namespace {
@@ -24,36 +29,44 @@ const int kNumTimeMeasurements = 5;
} // namespace
-NetworkTimeTracker::TimeMapping::TimeMapping(base::Time local_time,
- base::Time network_time)
- : local_time(local_time),
- network_time(network_time) {}
+// static
+void NetworkTimeTracker::RegisterPrefs(PrefRegistrySimple* registry) {
+ registry->RegisterDictionaryPref(prefs::kNetworkTimeMapping,
+ new base::DictionaryValue());
+}
-NetworkTimeTracker::NetworkTimeTracker(scoped_ptr<base::TickClock> tick_clock)
+NetworkTimeTracker::NetworkTimeTracker(scoped_ptr<base::TickClock> tick_clock,
+ PrefService* pref_service)
: tick_clock_(tick_clock.Pass()),
+ pref_service_(pref_service),
received_network_time_(false) {
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableNetworkTime)) {
haitaol1 2014/05/27 23:09:31 This switch is probably not needed. You can turn o
hashimoto 2014/05/28 11:25:52 Done.
+ const base::DictionaryValue* time_mapping =
+ pref_service_->GetDictionary(prefs::kNetworkTimeMapping);
+ double local_time_js = 0;
+ double network_time_js = 0;
+ if (time_mapping->GetDouble("local", &local_time_js) &&
+ time_mapping->GetDouble("network", &network_time_js)) {
+ base::Time local_time_saved = base::Time::FromJsTime(local_time_js);
+ base::Time local_time_now = base::Time::Now();
+ if (local_time_saved > local_time_now ||
+ local_time_now - local_time_saved > base::TimeDelta::FromDays(7)) {
+ // Drop saved mapping if clock skew has changed or the data is too old.
+ pref_service_->ClearPref(prefs::kNetworkTimeMapping);
+ } else {
+ network_time_ = base::Time::FromJsTime(network_time_js) +
+ (local_time_now - local_time_saved);
+ network_time_ticks_ = base::TimeTicks::Now();
+ }
+ }
+ }
}
NetworkTimeTracker::~NetworkTimeTracker() {
DCHECK(thread_checker_.CalledOnValidThread());
}
-void NetworkTimeTracker::InitFromSavedTime(const TimeMapping& saved) {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (!network_time_.is_null() || saved.local_time.is_null() ||
- saved.network_time.is_null())
- return;
-
- base::Time local_time_now = base::Time::Now();
- if (local_time_now < saved.local_time) {
- DLOG(WARNING) << "Can't initialize because clock skew has changed.";
- return;
- }
-
- network_time_ = saved.network_time + (local_time_now - saved.local_time);
- network_time_ticks_ = base::TimeTicks::Now();
-}
-
void NetworkTimeTracker::UpdateNetworkTime(base::Time network_time,
base::TimeDelta resolution,
base::TimeDelta latency,
@@ -85,6 +98,19 @@ void NetworkTimeTracker::UpdateNetworkTime(base::Time network_time,
base::TimeDelta::FromMilliseconds(kTicksResolutionMs);
received_network_time_ = true;
+
+ base::Time network_time_now;
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
haitaol1 2014/05/27 23:09:31 same here.
hashimoto 2014/05/28 11:25:52 Done.
+ switches::kEnableNetworkTime) &&
+ GetNetworkTime(base::TimeTicks::Now(), &network_time_now, NULL)) {
+ // Update time mapping if tracker received time update from server, i.e.
+ // mapping is accurate.
+ base::Time local_now = base::Time::Now();
+ base::DictionaryValue time_mapping;
+ time_mapping.SetDouble("local", local_now.ToJsTime());
+ time_mapping.SetDouble("network", network_time_now.ToJsTime());
+ pref_service_->Set(prefs::kNetworkTimeMapping, time_mapping);
+ }
}
bool NetworkTimeTracker::GetNetworkTime(base::TimeTicks time_ticks,
« no previous file with comments | « chrome/browser/network_time/network_time_tracker.h ('k') | chrome/browser/network_time/network_time_tracker_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698