| 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 691ebfe3af1941a1497074ed1540b8ce449c5e58..04159373dc7591e91183d3dafc05835f831239e3 100644
|
| --- a/components/network_time/network_time_tracker_unittest.cc
|
| +++ b/components/network_time/network_time_tracker_unittest.cc
|
| @@ -5,10 +5,14 @@
|
| #include "components/network_time/network_time_tracker.h"
|
|
|
| #include "base/compiler_specific.h"
|
| +#include "base/message_loop/message_loop.h"
|
| #include "base/test/simple_test_clock.h"
|
| #include "base/test/simple_test_tick_clock.h"
|
| #include "components/network_time/network_time_pref_names.h"
|
| #include "components/prefs/testing_pref_service.h"
|
| +#include "net/http/http_response_headers.h"
|
| +#include "net/url_request/test_url_fetcher_factory.h"
|
| +#include "net/url_request/url_request_test_util.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace network_time {
|
| @@ -18,6 +22,7 @@ class NetworkTimeTrackerTest : public testing::Test {
|
| ~NetworkTimeTrackerTest() override {}
|
|
|
| void SetUp() override {
|
| + url_fetcher_factory_.reset(new net::TestURLFetcherFactory());
|
| NetworkTimeTracker::RegisterPrefs(pref_service_.registry());
|
|
|
| clock_ = new base::SimpleTestClock();
|
| @@ -28,8 +33,8 @@ class NetworkTimeTrackerTest : public testing::Test {
|
|
|
| tracker_.reset(new NetworkTimeTracker(
|
| scoped_ptr<base::Clock>(clock_),
|
| - scoped_ptr<base::TickClock>(tick_clock_),
|
| - &pref_service_));
|
| + scoped_ptr<base::TickClock>(tick_clock_), &pref_service_,
|
| + new net::TestURLRequestContextGetter(message_loop_.task_runner())));
|
|
|
| // Can not be smaller than 15, it's the NowFromSystemTime() resolution.
|
| resolution_ = base::TimeDelta::FromMilliseconds(17);
|
| @@ -48,8 +53,8 @@ class NetworkTimeTrackerTest : public testing::Test {
|
| tick_clock_= new_tick_clock;
|
| tracker_.reset(new NetworkTimeTracker(
|
| scoped_ptr<base::Clock>(clock_),
|
| - scoped_ptr<base::TickClock>(tick_clock_),
|
| - &pref_service_));
|
| + scoped_ptr<base::TickClock>(tick_clock_), &pref_service_,
|
| + new net::TestURLRequestContextGetter(message_loop_.task_runner())));
|
| }
|
|
|
| // Updates the notifier's time with the specified parameters.
|
| @@ -69,6 +74,7 @@ class NetworkTimeTrackerTest : public testing::Test {
|
| }
|
|
|
| protected:
|
| + base::MessageLoop message_loop_;
|
| base::TimeDelta resolution_;
|
| base::TimeDelta latency_;
|
| base::TimeDelta adjustment_;
|
| @@ -76,6 +82,7 @@ class NetworkTimeTrackerTest : public testing::Test {
|
| base::SimpleTestTickClock* tick_clock_;
|
| TestingPrefServiceSimple pref_service_;
|
| scoped_ptr<NetworkTimeTracker> tracker_;
|
| + scoped_ptr<net::TestURLFetcherFactory> url_fetcher_factory_;
|
| };
|
|
|
| TEST_F(NetworkTimeTrackerTest, Uninitialized) {
|
| @@ -131,7 +138,7 @@ TEST_F(NetworkTimeTrackerTest, ClockIsWack) {
|
| tick_clock_->NowTicks());
|
|
|
| base::Time out_network_time;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, NULL));
|
| + EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| EXPECT_EQ(in_network_time, out_network_time);
|
| }
|
|
|
| @@ -185,7 +192,7 @@ TEST_F(NetworkTimeTrackerTest, SpringForward) {
|
| 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, NULL));
|
| + EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, FallBack) {
|
| @@ -195,7 +202,7 @@ TEST_F(NetworkTimeTrackerTest, FallBack) {
|
| 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, NULL));
|
| + EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, SuspendAndResume) {
|
| @@ -205,7 +212,7 @@ 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, NULL));
|
| + EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, Serialize) {
|
| @@ -237,7 +244,7 @@ TEST_F(NetworkTimeTrackerTest, DeserializeOldFormat) {
|
| tick_clock_->NowTicks());
|
|
|
| base::Time out_network_time;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, NULL));
|
| + EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| double local, network;
|
| const base::DictionaryValue* saved_prefs =
|
| pref_service_.GetDictionary(prefs::kNetworkTimeMapping);
|
| @@ -248,7 +255,7 @@ TEST_F(NetworkTimeTrackerTest, DeserializeOldFormat) {
|
| prefs.SetDouble("network", network);
|
| pref_service_.Set(prefs::kNetworkTimeMapping, prefs);
|
| Reset();
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, NULL));
|
| + EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, SerializeWithLongDelay) {
|
| @@ -258,10 +265,10 @@ 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, NULL));
|
| + EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| AdvanceBoth(base::TimeDelta::FromDays(8));
|
| Reset();
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, NULL));
|
| + EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, SerializeWithTickClockAdvance) {
|
| @@ -271,10 +278,10 @@ 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, NULL));
|
| + EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| tick_clock_->Advance(base::TimeDelta::FromDays(1));
|
| Reset();
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, NULL));
|
| + EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| }
|
|
|
| TEST_F(NetworkTimeTrackerTest, SerializeWithWallClockAdvance) {
|
| @@ -285,10 +292,83 @@ TEST_F(NetworkTimeTrackerTest, SerializeWithWallClockAdvance) {
|
| tick_clock_->NowTicks());
|
|
|
| base::Time out_network_time;
|
| - EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, NULL));
|
| + EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| clock_->Advance(base::TimeDelta::FromDays(1));
|
| Reset();
|
| - EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, NULL));
|
| + EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| +}
|
| +
|
| +TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) {
|
| + base::Time out_network_time;
|
| + EXPECT_EQ(nullptr, url_fetcher_factory_->GetFetcherByID(0));
|
| + EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| +
|
| + tracker_->QueryTimeService();
|
| + net::TestURLFetcher* fetcher = url_fetcher_factory_->GetFetcherByID(0);
|
| + ASSERT_NE(nullptr, fetcher);
|
| + EXPECT_EQ("", fetcher->upload_data());
|
| +
|
| + fetcher->set_response_code(200);
|
| + fetcher->SetResponseString(
|
| + "{\"current_time_millis\":1458939575214,\"server_nonce\":8."
|
| + "18927404567873E115}");
|
| + fetcher->set_response_headers(new net::HttpResponseHeaders(
|
| + "x-cup-server-proof: "
|
| + "304402206f29b656ee23aafc7b6df4cfaa3bf711018cca2cbdbcb366932ae4433286f1f6"
|
| + "022061ddbd4a6ea0d5d36b9f3a6c2a37b5ba4b5f42065f93cda5ed5e5fb60419bb81:"
|
| + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n"
|
| + "ETag: "
|
| + "W/"
|
| + "\"304402206f29b656ee23aafc7b6df4cfaa3bf711018cca2cbdbcb366932ae4433286f1"
|
| + "f6022061ddbd4a6ea0d5d36b9f3a6c2a37b5ba4b5f42065f93cda5ed5e5fb60419bb81:"
|
| + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n"));
|
| + fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| +
|
| + EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_EQ(base::Time::UnixEpoch() +
|
| + base::TimeDelta::FromMilliseconds(1458939575214),
|
| + out_network_time);
|
| + EXPECT_TRUE(tracker_->query_timer_.IsRunning());
|
| +}
|
| +
|
| +TEST_F(NetworkTimeTrackerTest, NoNetworkQueryWhileSynced) {
|
| + base::Time in_network_time = clock_->Now();
|
| + UpdateNetworkTime(in_network_time, resolution_, latency_,
|
| + tick_clock_->NowTicks());
|
| +
|
| + tracker_->QueryTimeService();
|
| + net::TestURLFetcher* fetcher = url_fetcher_factory_->GetFetcherByID(0);
|
| + EXPECT_EQ(nullptr, fetcher); // No query should be started.
|
| +}
|
| +
|
| +TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadSignature) {
|
| + base::Time out_network_time;
|
| + EXPECT_EQ(nullptr, url_fetcher_factory_->GetFetcherByID(0));
|
| + EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| +
|
| + tracker_->QueryTimeService();
|
| + net::TestURLFetcher* fetcher = url_fetcher_factory_->GetFetcherByID(0);
|
| + ASSERT_NE(nullptr, fetcher);
|
| + EXPECT_EQ("", fetcher->upload_data());
|
| +
|
| + fetcher->set_response_code(200);
|
| + fetcher->SetResponseString(
|
| + "{\"current_time_millis\":1458939575214,\"server_nonce\":8."
|
| + "18927404567873E115}");
|
| + fetcher->set_response_headers(new net::HttpResponseHeaders(
|
| + "x-cup-server-proof: "
|
| + "304402206f29b656ee23aafc7b6df4cfaa3bf711018cca2cbdbcb366932ae4433286f1f6"
|
| + "022061ddbd4a6ea0d5d36b9f3a6c2a37b5ba4b5f42065f93cda5ed5e5fb60419bb81:"
|
| + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n"
|
| + "ETag: "
|
| + "W/"
|
| + "\"304402206f29b656ee23aafc7b6df4cfaa3bf711018cca2cbdbcb366932ae4433286f1"
|
| + "f6022061ddbd4a6ea0d5d36b9f3a6c2a37b5ba4b5f42065f93cda5ed5e5fb60419bb81:"
|
| + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n"));
|
| + fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| +
|
| + EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
|
| + EXPECT_TRUE(tracker_->query_timer_.IsRunning());
|
| }
|
|
|
| } // namespace network_time
|
|
|