| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "components/network_time/network_time_tracker.h" | 5 #include "components/network_time/network_time_tracker.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| 11 | 11 |
| 12 #include "base/compiler_specific.h" | 12 #include "base/compiler_specific.h" |
| 13 #include "base/feature_list.h" | 13 #include "base/feature_list.h" |
| 14 #include "base/metrics/field_trial.h" | 14 #include "base/metrics/field_trial.h" |
| 15 #include "base/strings/string_number_conversions.h" | 15 #include "base/strings/string_number_conversions.h" |
| 16 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
| 17 #include "base/test/histogram_tester.h" |
| 17 #include "base/test/mock_entropy_provider.h" | 18 #include "base/test/mock_entropy_provider.h" |
| 18 #include "base/test/simple_test_clock.h" | 19 #include "base/test/simple_test_clock.h" |
| 19 #include "base/test/simple_test_tick_clock.h" | 20 #include "base/test/simple_test_tick_clock.h" |
| 20 #include "components/client_update_protocol/ecdsa.h" | 21 #include "components/client_update_protocol/ecdsa.h" |
| 21 #include "components/network_time/network_time_pref_names.h" | 22 #include "components/network_time/network_time_pref_names.h" |
| 22 #include "components/prefs/testing_pref_service.h" | 23 #include "components/prefs/testing_pref_service.h" |
| 23 #include "components/variations/variations_associated_data.h" | 24 #include "components/variations/variations_associated_data.h" |
| 24 #include "net/http/http_response_headers.h" | 25 #include "net/http/http_response_headers.h" |
| 25 #include "net/test/embedded_test_server/embedded_test_server.h" | 26 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 26 #include "net/test/embedded_test_server/http_response.h" | 27 #include "net/test/embedded_test_server/http_response.h" |
| 27 #include "net/url_request/url_fetcher.h" | 28 #include "net/url_request/url_fetcher.h" |
| 28 #include "net/url_request/url_request_test_util.h" | 29 #include "net/url_request/url_request_test_util.h" |
| 29 #include "testing/gtest/include/gtest/gtest.h" | 30 #include "testing/gtest/include/gtest/gtest.h" |
| 30 | 31 |
| 31 namespace network_time { | 32 namespace network_time { |
| 32 | 33 |
| 34 namespace { |
| 35 const char kFetchAttemptHistogram[] = |
| 36 "NetworkTimeTracker.UpdateTimeFetchAttempted"; |
| 37 const char kFetchFailedHistogram[] = "NetworkTimeTracker.UpdateTimeFetchFailed"; |
| 38 const char kFetchValidHistogram[] = "NetworkTimeTracker.UpdateTimeFetchValid"; |
| 39 } // namespace |
| 40 |
| 33 class NetworkTimeTrackerTest : public testing::Test { | 41 class NetworkTimeTrackerTest : public testing::Test { |
| 34 public: | 42 public: |
| 35 ~NetworkTimeTrackerTest() override {} | 43 ~NetworkTimeTrackerTest() override {} |
| 36 | 44 |
| 37 NetworkTimeTrackerTest() | 45 NetworkTimeTrackerTest() |
| 38 : io_thread_("IO thread"), | 46 : io_thread_("IO thread"), |
| 39 clock_(new base::SimpleTestClock), | 47 clock_(new base::SimpleTestClock), |
| 40 tick_clock_(new base::SimpleTestTickClock), | 48 tick_clock_(new base::SimpleTestTickClock), |
| 41 test_server_(new net::EmbeddedTestServer) { | 49 test_server_(new net::EmbeddedTestServer) { |
| 42 base::Thread::Options thread_options; | 50 base::Thread::Options thread_options; |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 tick_clock_->NowTicks()); | 435 tick_clock_->NowTicks()); |
| 428 | 436 |
| 429 base::Time out_network_time; | 437 base::Time out_network_time; |
| 430 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 438 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 431 clock_->Advance(base::TimeDelta::FromDays(1)); | 439 clock_->Advance(base::TimeDelta::FromDays(1)); |
| 432 Reset(); | 440 Reset(); |
| 433 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 441 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 434 } | 442 } |
| 435 | 443 |
| 436 TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) { | 444 TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) { |
| 445 base::HistogramTester histograms; |
| 446 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); |
| 447 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 448 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 449 |
| 437 base::Time out_network_time; | 450 base::Time out_network_time; |
| 438 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 451 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 439 // First query should happen soon. | 452 // First query should happen soon. |
| 440 EXPECT_EQ(base::TimeDelta::FromMinutes(0), | 453 EXPECT_EQ(base::TimeDelta::FromMinutes(0), |
| 441 tracker_->GetTimerDelayForTesting()); | 454 tracker_->GetTimerDelayForTesting()); |
| 442 | 455 |
| 443 test_server_->RegisterRequestHandler( | 456 test_server_->RegisterRequestHandler( |
| 444 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); | 457 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); |
| 445 EXPECT_TRUE(test_server_->Start()); | 458 EXPECT_TRUE(test_server_->Start()); |
| 446 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 459 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 447 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 460 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 448 tracker_->WaitForFetchForTesting(123123123); | 461 tracker_->WaitForFetchForTesting(123123123); |
| 449 | 462 |
| 450 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 463 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 451 EXPECT_EQ(base::Time::UnixEpoch() + | 464 EXPECT_EQ(base::Time::UnixEpoch() + |
| 452 base::TimeDelta::FromMilliseconds(1461621971825), | 465 base::TimeDelta::FromMilliseconds(1461621971825), |
| 453 out_network_time); | 466 out_network_time); |
| 454 // Should see no backoff in the success case. | 467 // Should see no backoff in the success case. |
| 455 EXPECT_EQ(base::TimeDelta::FromMinutes(60), | 468 EXPECT_EQ(base::TimeDelta::FromMinutes(60), |
| 456 tracker_->GetTimerDelayForTesting()); | 469 tracker_->GetTimerDelayForTesting()); |
| 470 |
| 471 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); |
| 472 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 473 histograms.ExpectTotalCount(kFetchValidHistogram, 1); |
| 474 histograms.ExpectBucketCount(kFetchValidHistogram, true, 1); |
| 457 } | 475 } |
| 458 | 476 |
| 459 TEST_F(NetworkTimeTrackerTest, NoNetworkQueryWhileSynced) { | 477 TEST_F(NetworkTimeTrackerTest, NoNetworkQueryWhileSynced) { |
| 460 test_server_->RegisterRequestHandler( | 478 test_server_->RegisterRequestHandler( |
| 461 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); | 479 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); |
| 462 EXPECT_TRUE(test_server_->Start()); | 480 EXPECT_TRUE(test_server_->Start()); |
| 463 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 481 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 464 | 482 |
| 465 SetNetworkQueriesWithVariationsService(true, 0.0); | 483 SetNetworkQueriesWithVariationsService(true, 0.0); |
| 466 base::Time in_network_time = clock_->Now(); | 484 base::Time in_network_time = clock_->Now(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 487 EXPECT_EQ(base::TimeDelta::FromMinutes(6), | 505 EXPECT_EQ(base::TimeDelta::FromMinutes(6), |
| 488 tracker_->GetTimerDelayForTesting()); | 506 tracker_->GetTimerDelayForTesting()); |
| 489 | 507 |
| 490 // Enable time queries and check that a query is sent. | 508 // Enable time queries and check that a query is sent. |
| 491 SetNetworkQueriesWithVariationsService(true, 0.0); | 509 SetNetworkQueriesWithVariationsService(true, 0.0); |
| 492 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 510 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 493 tracker_->WaitForFetchForTesting(123123123); | 511 tracker_->WaitForFetchForTesting(123123123); |
| 494 } | 512 } |
| 495 | 513 |
| 496 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadSignature) { | 514 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadSignature) { |
| 515 base::HistogramTester histograms; |
| 516 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); |
| 517 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 518 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 519 |
| 497 test_server_->RegisterRequestHandler( | 520 test_server_->RegisterRequestHandler( |
| 498 base::Bind(&NetworkTimeTrackerTest::BadSignatureResponseHandler)); | 521 base::Bind(&NetworkTimeTrackerTest::BadSignatureResponseHandler)); |
| 499 EXPECT_TRUE(test_server_->Start()); | 522 EXPECT_TRUE(test_server_->Start()); |
| 500 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 523 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 501 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 524 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 502 tracker_->WaitForFetchForTesting(123123123); | 525 tracker_->WaitForFetchForTesting(123123123); |
| 503 | 526 |
| 504 base::Time out_network_time; | 527 base::Time out_network_time; |
| 505 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 528 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 506 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 529 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 507 tracker_->GetTimerDelayForTesting()); | 530 tracker_->GetTimerDelayForTesting()); |
| 531 |
| 532 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); |
| 533 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 534 histograms.ExpectTotalCount(kFetchValidHistogram, 1); |
| 535 histograms.ExpectBucketCount(kFetchValidHistogram, false, 1); |
| 508 } | 536 } |
| 509 | 537 |
| 510 static const uint8_t kDevKeyPubBytes[] = { | 538 static const uint8_t kDevKeyPubBytes[] = { |
| 511 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, | 539 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, |
| 512 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, | 540 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, |
| 513 0x42, 0x00, 0x04, 0xe0, 0x6b, 0x0d, 0x76, 0x75, 0xa3, 0x99, 0x7d, 0x7c, | 541 0x42, 0x00, 0x04, 0xe0, 0x6b, 0x0d, 0x76, 0x75, 0xa3, 0x99, 0x7d, 0x7c, |
| 514 0x1b, 0xd6, 0x3c, 0x73, 0xbb, 0x4b, 0xfe, 0x0a, 0xe7, 0x2f, 0x61, 0x3d, | 542 0x1b, 0xd6, 0x3c, 0x73, 0xbb, 0x4b, 0xfe, 0x0a, 0xe7, 0x2f, 0x61, 0x3d, |
| 515 0x77, 0x0a, 0xaa, 0x14, 0xd8, 0x5a, 0xbf, 0x14, 0x60, 0xec, 0xf6, 0x32, | 543 0x77, 0x0a, 0xaa, 0x14, 0xd8, 0x5a, 0xbf, 0x14, 0x60, 0xec, 0xf6, 0x32, |
| 516 0x77, 0xb5, 0xa7, 0xe6, 0x35, 0xa5, 0x61, 0xaf, 0xdc, 0xdf, 0x91, 0xce, | 544 0x77, 0xb5, 0xa7, 0xe6, 0x35, 0xa5, 0x61, 0xaf, 0xdc, 0xdf, 0x91, 0xce, |
| 517 0x45, 0x34, 0x5f, 0x36, 0x85, 0x2f, 0xb9, 0x53, 0x00, 0x5d, 0x86, 0xe7, | 545 0x45, 0x34, 0x5f, 0x36, 0x85, 0x2f, 0xb9, 0x53, 0x00, 0x5d, 0x86, 0xe7, |
| 518 0x04, 0x16, 0xe2, 0x3d, 0x21, 0x76, 0x2b}; | 546 0x04, 0x16, 0xe2, 0x3d, 0x21, 0x76, 0x2b}; |
| 519 | 547 |
| 520 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadData) { | 548 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadData) { |
| 549 base::HistogramTester histograms; |
| 550 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); |
| 551 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 552 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 553 |
| 521 test_server_->RegisterRequestHandler( | 554 test_server_->RegisterRequestHandler( |
| 522 base::Bind(&NetworkTimeTrackerTest::BadDataResponseHandler)); | 555 base::Bind(&NetworkTimeTrackerTest::BadDataResponseHandler)); |
| 523 EXPECT_TRUE(test_server_->Start()); | 556 EXPECT_TRUE(test_server_->Start()); |
| 524 base::StringPiece key = {reinterpret_cast<const char*>(kDevKeyPubBytes), | 557 base::StringPiece key = {reinterpret_cast<const char*>(kDevKeyPubBytes), |
| 525 sizeof(kDevKeyPubBytes)}; | 558 sizeof(kDevKeyPubBytes)}; |
| 526 tracker_->SetPublicKeyForTesting(key); | 559 tracker_->SetPublicKeyForTesting(key); |
| 527 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 560 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 528 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 561 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 529 tracker_->WaitForFetchForTesting(123123123); | 562 tracker_->WaitForFetchForTesting(123123123); |
| 530 base::Time out_network_time; | 563 base::Time out_network_time; |
| 531 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 564 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 532 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 565 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 533 tracker_->GetTimerDelayForTesting()); | 566 tracker_->GetTimerDelayForTesting()); |
| 567 |
| 568 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); |
| 569 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 570 histograms.ExpectTotalCount(kFetchValidHistogram, 1); |
| 571 histograms.ExpectBucketCount(kFetchValidHistogram, false, 1); |
| 534 } | 572 } |
| 535 | 573 |
| 536 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkServerError) { | 574 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkServerError) { |
| 575 base::HistogramTester histograms; |
| 576 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); |
| 577 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 578 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 579 |
| 537 test_server_->RegisterRequestHandler( | 580 test_server_->RegisterRequestHandler( |
| 538 base::Bind(&NetworkTimeTrackerTest::ServerErrorResponseHandler)); | 581 base::Bind(&NetworkTimeTrackerTest::ServerErrorResponseHandler)); |
| 539 EXPECT_TRUE(test_server_->Start()); | 582 EXPECT_TRUE(test_server_->Start()); |
| 540 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 583 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 541 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 584 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 542 tracker_->WaitForFetchForTesting(123123123); | 585 tracker_->WaitForFetchForTesting(123123123); |
| 543 | 586 |
| 544 base::Time out_network_time; | 587 base::Time out_network_time; |
| 545 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 588 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 546 // Should see backoff in the error case. | 589 // Should see backoff in the error case. |
| 547 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 590 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 548 tracker_->GetTimerDelayForTesting()); | 591 tracker_->GetTimerDelayForTesting()); |
| 592 |
| 593 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); |
| 594 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); |
| 595 // There was no network error, so the histogram is recorded as |
| 596 // net::OK, indicating that the connection succeeded but there was a |
| 597 // non-200 HTTP status code. |
| 598 histograms.ExpectBucketCount(kFetchFailedHistogram, net::OK, 1); |
| 599 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 549 } | 600 } |
| 550 | 601 |
| 551 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworNetworkError) { | 602 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkNetworkError) { |
| 603 base::HistogramTester histograms; |
| 604 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); |
| 605 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 606 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 607 |
| 552 test_server_->RegisterRequestHandler( | 608 test_server_->RegisterRequestHandler( |
| 553 base::Bind(&NetworkTimeTrackerTest::NetworkErrorResponseHandler)); | 609 base::Bind(&NetworkTimeTrackerTest::NetworkErrorResponseHandler)); |
| 554 EXPECT_TRUE(test_server_->Start()); | 610 EXPECT_TRUE(test_server_->Start()); |
| 555 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 611 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 556 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 612 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 557 tracker_->WaitForFetchForTesting(123123123); | 613 tracker_->WaitForFetchForTesting(123123123); |
| 558 | 614 |
| 559 base::Time out_network_time; | 615 base::Time out_network_time; |
| 560 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 616 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 561 // Should see backoff in the error case. | 617 // Should see backoff in the error case. |
| 562 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 618 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 563 tracker_->GetTimerDelayForTesting()); | 619 tracker_->GetTimerDelayForTesting()); |
| 620 |
| 621 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); |
| 622 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); |
| 623 histograms.ExpectBucketCount(kFetchFailedHistogram, -net::ERR_EMPTY_RESPONSE, |
| 624 1); |
| 625 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 564 } | 626 } |
| 565 | 627 |
| 566 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkLargeResponse) { | 628 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkLargeResponse) { |
| 629 base::HistogramTester histograms; |
| 630 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); |
| 631 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 632 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 633 |
| 567 test_server_->RegisterRequestHandler( | 634 test_server_->RegisterRequestHandler( |
| 568 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); | 635 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); |
| 569 EXPECT_TRUE(test_server_->Start()); | 636 EXPECT_TRUE(test_server_->Start()); |
| 570 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 637 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 571 | 638 |
| 572 base::Time out_network_time; | 639 base::Time out_network_time; |
| 573 | 640 |
| 574 tracker_->SetMaxResponseSizeForTesting(3); | 641 tracker_->SetMaxResponseSizeForTesting(3); |
| 575 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 642 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 576 tracker_->WaitForFetchForTesting(123123123); | 643 tracker_->WaitForFetchForTesting(123123123); |
| 577 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 644 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 578 | 645 |
| 646 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); |
| 647 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); |
| 648 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 649 |
| 579 tracker_->SetMaxResponseSizeForTesting(1024); | 650 tracker_->SetMaxResponseSizeForTesting(1024); |
| 580 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 651 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 581 tracker_->WaitForFetchForTesting(123123123); | 652 tracker_->WaitForFetchForTesting(123123123); |
| 582 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 653 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 654 |
| 655 histograms.ExpectTotalCount(kFetchAttemptHistogram, 2); |
| 656 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); |
| 657 histograms.ExpectTotalCount(kFetchValidHistogram, 1); |
| 658 histograms.ExpectBucketCount(kFetchValidHistogram, true, 1); |
| 583 } | 659 } |
| 584 | 660 |
| 585 } // namespace network_time | 661 } // namespace network_time |
| OLD | NEW |