| Index: components/network_time/network_time_tracker_unittest.cc
|
| diff --git a/components/network_time/network_time_tracker_unittest.cc b/components/network_time/network_time_tracker_unittest.cc
|
| index 43f7bf6aa530f0a75ca094b3781b486830e7ec7e..93ed60a188a9ea772aed4c77fa332dacbd4973a2 100644
|
| --- a/components/network_time/network_time_tracker_unittest.cc
|
| +++ b/components/network_time/network_time_tracker_unittest.cc
|
| @@ -33,8 +33,15 @@
|
| namespace network_time {
|
|
|
| namespace {
|
| +const uint32_t kOneDayInSeconds = 86400;
|
| const char kFetchFailedHistogram[] = "NetworkTimeTracker.UpdateTimeFetchFailed";
|
| const char kFetchValidHistogram[] = "NetworkTimeTracker.UpdateTimeFetchValid";
|
| +const char kClockDivergencePositiveHistogram[] =
|
| + "NetworkTimeTracker.ClockDivergence.Positive";
|
| +const char kClockDivergenceNegativeHistogram[] =
|
| + "NetworkTimeTracker.ClockDivergence.Negative";
|
| +const char kWallClockBackwardsHistogram[] =
|
| + "NetworkTimeTracker.WallClockRanBackwards";
|
| } // namespace
|
|
|
| class NetworkTimeTrackerTest : public testing::Test {
|
| @@ -232,7 +239,8 @@ class NetworkTimeTrackerTest : public testing::Test {
|
| TEST_F(NetworkTimeTrackerTest, Uninitialized) {
|
| base::Time network_time;
|
| base::TimeDelta uncertainty;
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&network_time, &uncertainty));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC,
|
| + tracker_->GetNetworkTime(&network_time, &uncertainty));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, LongPostingDelay) {
|
| @@ -253,7 +261,8 @@ TEST_F(NetworkTimeTrackerTest, LongPostingDelay) {
|
|
|
| base::Time out_network_time;
|
| base::TimeDelta uncertainty;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, &uncertainty));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, &uncertainty));
|
| EXPECT_EQ(resolution_ + latency_ + adjustment_, uncertainty);
|
| EXPECT_EQ(clock_->Now(), out_network_time);
|
| }
|
| @@ -270,7 +279,8 @@ TEST_F(NetworkTimeTrackerTest, LopsidedLatency) {
|
| // But, the answer is still within the uncertainty bounds!
|
| base::Time out_network_time;
|
| base::TimeDelta uncertainty;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, &uncertainty));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, &uncertainty));
|
| EXPECT_LT(out_network_time - uncertainty / 2, clock_->Now());
|
| EXPECT_GT(out_network_time + uncertainty / 2, clock_->Now());
|
| }
|
| @@ -282,12 +292,17 @@ TEST_F(NetworkTimeTrackerTest, ClockIsWack) {
|
| tick_clock_->NowTicks());
|
|
|
| base::Time out_network_time;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| EXPECT_EQ(in_network_time, out_network_time);
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, ClocksDivergeSlightly) {
|
| // The two clocks are allowed to diverge a little bit.
|
| + base::HistogramTester histograms;
|
| + histograms.ExpectTotalCount(kClockDivergencePositiveHistogram, 0);
|
| + histograms.ExpectTotalCount(kClockDivergenceNegativeHistogram, 0);
|
| + histograms.ExpectTotalCount(kWallClockBackwardsHistogram, 0);
|
| base::Time in_network_time = clock_->Now();
|
| UpdateNetworkTime(in_network_time - latency_ / 2, resolution_, latency_,
|
| tick_clock_->NowTicks());
|
| @@ -296,10 +311,14 @@ TEST_F(NetworkTimeTrackerTest, ClocksDivergeSlightly) {
|
| tick_clock_->Advance(small);
|
| base::Time out_network_time;
|
| base::TimeDelta out_uncertainty;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, &out_uncertainty));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, &out_uncertainty));
|
| EXPECT_EQ(in_network_time + small, out_network_time);
|
| // The clock divergence should show up in the uncertainty.
|
| EXPECT_EQ(resolution_ + latency_ + adjustment_ + small, out_uncertainty);
|
| + histograms.ExpectTotalCount(kClockDivergencePositiveHistogram, 0);
|
| + histograms.ExpectTotalCount(kClockDivergenceNegativeHistogram, 0);
|
| + histograms.ExpectTotalCount(kWallClockBackwardsHistogram, 0);
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, NetworkTimeUpdates) {
|
| @@ -310,13 +329,15 @@ TEST_F(NetworkTimeTrackerTest, NetworkTimeUpdates) {
|
|
|
| UpdateNetworkTime(clock_->Now() - latency_ / 2, resolution_, latency_,
|
| tick_clock_->NowTicks());
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, &uncertainty));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, &uncertainty));
|
| EXPECT_EQ(clock_->Now(), out_network_time);
|
| EXPECT_EQ(resolution_ + latency_ + adjustment_, uncertainty);
|
|
|
| // Fake a wait to make sure we keep tracking.
|
| AdvanceBoth(base::TimeDelta::FromSeconds(1));
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, &uncertainty));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, &uncertainty));
|
| EXPECT_EQ(clock_->Now(), out_network_time);
|
| EXPECT_EQ(resolution_ + latency_ + adjustment_, uncertainty);
|
|
|
| @@ -324,29 +345,75 @@ TEST_F(NetworkTimeTrackerTest, NetworkTimeUpdates) {
|
| UpdateNetworkTime(clock_->Now() - latency_ / 2, resolution_, latency_,
|
| tick_clock_->NowTicks());
|
| AdvanceBoth(base::TimeDelta::FromSeconds(1));
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, &uncertainty));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, &uncertainty));
|
| EXPECT_EQ(clock_->Now(), out_network_time);
|
| EXPECT_EQ(resolution_ + latency_ + adjustment_, uncertainty);
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, SpringForward) {
|
| + base::HistogramTester histograms;
|
| + histograms.ExpectTotalCount(kClockDivergencePositiveHistogram, 0);
|
| + histograms.ExpectTotalCount(kClockDivergenceNegativeHistogram, 0);
|
| + histograms.ExpectTotalCount(kWallClockBackwardsHistogram, 0);
|
| // Simulate the wall clock advancing faster than the tick clock.
|
| UpdateNetworkTime(clock_->Now(), resolution_, latency_,
|
| tick_clock_->NowTicks());
|
| tick_clock_->Advance(base::TimeDelta::FromSeconds(1));
|
| clock_->Advance(base::TimeDelta::FromDays(1));
|
| base::Time out_network_time;
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_SYNC_LOST,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + histograms.ExpectTotalCount(kClockDivergencePositiveHistogram, 0);
|
| + histograms.ExpectTotalCount(kClockDivergenceNegativeHistogram, 1);
|
| + histograms.ExpectTotalCount(kWallClockBackwardsHistogram, 0);
|
| + // The recorded clock divergence should be 1 second - 1 day in seconds.
|
| + histograms.ExpectBucketCount(
|
| + kClockDivergenceNegativeHistogram,
|
| + base::TimeDelta::FromSeconds(kOneDayInSeconds - 1).InMilliseconds(), 1);
|
| +}
|
| +
|
| +TEST_F(NetworkTimeTrackerTest, TickClockSpringsForward) {
|
| + base::HistogramTester histograms;
|
| + histograms.ExpectTotalCount(kClockDivergencePositiveHistogram, 0);
|
| + histograms.ExpectTotalCount(kClockDivergenceNegativeHistogram, 0);
|
| + histograms.ExpectTotalCount(kWallClockBackwardsHistogram, 0);
|
| + // Simulate the tick clock advancing faster than the wall clock.
|
| + UpdateNetworkTime(clock_->Now(), resolution_, latency_,
|
| + tick_clock_->NowTicks());
|
| + tick_clock_->Advance(base::TimeDelta::FromDays(1));
|
| + clock_->Advance(base::TimeDelta::FromSeconds(1));
|
| + base::Time out_network_time;
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_SYNC_LOST,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + histograms.ExpectTotalCount(kClockDivergencePositiveHistogram, 1);
|
| + histograms.ExpectTotalCount(kClockDivergenceNegativeHistogram, 0);
|
| + histograms.ExpectTotalCount(kWallClockBackwardsHistogram, 0);
|
| + // The recorded clock divergence should be 1 day - 1 second.
|
| + histograms.ExpectBucketCount(
|
| + kClockDivergencePositiveHistogram,
|
| + base::TimeDelta::FromSeconds(kOneDayInSeconds - 1).InMilliseconds(), 1);
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, FallBack) {
|
| + base::HistogramTester histograms;
|
| + histograms.ExpectTotalCount(kClockDivergencePositiveHistogram, 0);
|
| + histograms.ExpectTotalCount(kClockDivergenceNegativeHistogram, 0);
|
| + histograms.ExpectTotalCount(kWallClockBackwardsHistogram, 0);
|
| // Simulate the wall clock running backward.
|
| UpdateNetworkTime(clock_->Now(), resolution_, latency_,
|
| tick_clock_->NowTicks());
|
| tick_clock_->Advance(base::TimeDelta::FromSeconds(1));
|
| clock_->Advance(base::TimeDelta::FromDays(-1));
|
| base::Time out_network_time;
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_SYNC_LOST,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + histograms.ExpectTotalCount(kClockDivergencePositiveHistogram, 0);
|
| + histograms.ExpectTotalCount(kClockDivergenceNegativeHistogram, 0);
|
| + histograms.ExpectTotalCount(kWallClockBackwardsHistogram, 1);
|
| + histograms.ExpectBucketCount(
|
| + kWallClockBackwardsHistogram,
|
| + base::TimeDelta::FromSeconds(kOneDayInSeconds - 1).InMilliseconds(), 1);
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, SuspendAndResume) {
|
| @@ -356,7 +423,8 @@ TEST_F(NetworkTimeTrackerTest, SuspendAndResume) {
|
| tick_clock_->NowTicks());
|
| clock_->Advance(base::TimeDelta::FromHours(1));
|
| base::Time out_network_time;
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_SYNC_LOST,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, Serialize) {
|
| @@ -367,7 +435,8 @@ TEST_F(NetworkTimeTrackerTest, Serialize) {
|
| tick_clock_->NowTicks());
|
| base::Time out_network_time;
|
| base::TimeDelta out_uncertainty;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, &out_uncertainty));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, &out_uncertainty));
|
| EXPECT_EQ(in_network_time, out_network_time);
|
| EXPECT_EQ(resolution_ + latency_ + adjustment_, out_uncertainty);
|
|
|
| @@ -375,7 +444,8 @@ TEST_F(NetworkTimeTrackerTest, Serialize) {
|
| base::TimeDelta delta = base::TimeDelta::FromDays(6);
|
| AdvanceBoth(delta);
|
| Reset();
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, &out_uncertainty));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, &out_uncertainty));
|
| EXPECT_EQ(in_network_time + delta, out_network_time);
|
| EXPECT_EQ(resolution_ + latency_ + adjustment_, out_uncertainty);
|
| }
|
| @@ -388,7 +458,8 @@ TEST_F(NetworkTimeTrackerTest, DeserializeOldFormat) {
|
| tick_clock_->NowTicks());
|
|
|
| base::Time out_network_time;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| double local, network;
|
| const base::DictionaryValue* saved_prefs =
|
| pref_service_.GetDictionary(prefs::kNetworkTimeMapping);
|
| @@ -399,7 +470,8 @@ TEST_F(NetworkTimeTrackerTest, DeserializeOldFormat) {
|
| prefs.SetDouble("network", network);
|
| pref_service_.Set(prefs::kNetworkTimeMapping, prefs);
|
| Reset();
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, SerializeWithLongDelay) {
|
| @@ -409,10 +481,12 @@ TEST_F(NetworkTimeTrackerTest, SerializeWithLongDelay) {
|
| UpdateNetworkTime(in_network_time - latency_ / 2, resolution_, latency_,
|
| tick_clock_->NowTicks());
|
| base::Time out_network_time;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| AdvanceBoth(base::TimeDelta::FromDays(8));
|
| Reset();
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, SerializeWithTickClockAdvance) {
|
| @@ -422,10 +496,12 @@ TEST_F(NetworkTimeTrackerTest, SerializeWithTickClockAdvance) {
|
| UpdateNetworkTime(in_network_time - latency_ / 2, resolution_, latency_,
|
| tick_clock_->NowTicks());
|
| base::Time out_network_time;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| tick_clock_->Advance(base::TimeDelta::FromDays(1));
|
| Reset();
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_SYNC_LOST,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, SerializeWithWallClockAdvance) {
|
| @@ -436,10 +512,12 @@ TEST_F(NetworkTimeTrackerTest, SerializeWithWallClockAdvance) {
|
| tick_clock_->NowTicks());
|
|
|
| base::Time out_network_time;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| clock_->Advance(base::TimeDelta::FromDays(1));
|
| Reset();
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_SYNC_LOST,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) {
|
| @@ -448,7 +526,8 @@ TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) {
|
| histograms.ExpectTotalCount(kFetchValidHistogram, 0);
|
|
|
| base::Time out_network_time;
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| // First query should happen soon.
|
| EXPECT_EQ(base::TimeDelta::FromMinutes(0),
|
| tracker_->GetTimerDelayForTesting());
|
| @@ -460,7 +539,8 @@ TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) {
|
| EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
|
| tracker_->WaitForFetchForTesting(123123123);
|
|
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| EXPECT_EQ(base::Time::UnixEpoch() +
|
| base::TimeDelta::FromMilliseconds(1461621971825),
|
| out_network_time);
|
| @@ -523,7 +603,8 @@ TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadSignature) {
|
| tracker_->WaitForFetchForTesting(123123123);
|
|
|
| base::Time out_network_time;
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| EXPECT_EQ(base::TimeDelta::FromMinutes(120),
|
| tracker_->GetTimerDelayForTesting());
|
|
|
| @@ -557,7 +638,8 @@ TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadData) {
|
| EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
|
| tracker_->WaitForFetchForTesting(123123123);
|
| base::Time out_network_time;
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| EXPECT_EQ(base::TimeDelta::FromMinutes(120),
|
| tracker_->GetTimerDelayForTesting());
|
|
|
| @@ -579,7 +661,8 @@ TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkServerError) {
|
| tracker_->WaitForFetchForTesting(123123123);
|
|
|
| base::Time out_network_time;
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| // Should see backoff in the error case.
|
| EXPECT_EQ(base::TimeDelta::FromMinutes(120),
|
| tracker_->GetTimerDelayForTesting());
|
| @@ -605,7 +688,8 @@ TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkNetworkError) {
|
| tracker_->WaitForFetchForTesting(123123123);
|
|
|
| base::Time out_network_time;
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| // Should see backoff in the error case.
|
| EXPECT_EQ(base::TimeDelta::FromMinutes(120),
|
| tracker_->GetTimerDelayForTesting());
|
| @@ -631,7 +715,8 @@ TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkLargeResponse) {
|
| tracker_->SetMaxResponseSizeForTesting(3);
|
| EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
|
| tracker_->WaitForFetchForTesting(123123123);
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
|
|
| histograms.ExpectTotalCount(kFetchFailedHistogram, 1);
|
| histograms.ExpectTotalCount(kFetchValidHistogram, 0);
|
| @@ -639,7 +724,8 @@ TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkLargeResponse) {
|
| tracker_->SetMaxResponseSizeForTesting(1024);
|
| EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
|
| tracker_->WaitForFetchForTesting(123123123);
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE,
|
| + tracker_->GetNetworkTime(&out_network_time, nullptr));
|
|
|
| histograms.ExpectTotalCount(kFetchFailedHistogram, 1);
|
| histograms.ExpectTotalCount(kFetchValidHistogram, 1);
|
|
|