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 "chrome/browser/ssl/ssl_error_handler.h" | 5 #include "chrome/browser/ssl/ssl_error_handler.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 } | 439 } |
440 | 440 |
441 TEST_F(SSLErrorHandlerDateInvalidTest, TimeQueryStarted) { | 441 TEST_F(SSLErrorHandlerDateInvalidTest, TimeQueryStarted) { |
442 base::Time network_time; | 442 base::Time network_time; |
443 base::TimeDelta uncertainty; | 443 base::TimeDelta uncertainty; |
444 EXPECT_EQ(network_time::NetworkTimeTracker::NETWORK_TIME_NO_SYNC_ATTEMPT, | 444 EXPECT_EQ(network_time::NetworkTimeTracker::NETWORK_TIME_NO_SYNC_ATTEMPT, |
445 tracker()->GetNetworkTime(&network_time, &uncertainty)); | 445 tracker()->GetNetworkTime(&network_time, &uncertainty)); |
446 | 446 |
447 // Enable network time queries and handle the error. A bad clock interstitial | 447 // Enable network time queries and handle the error. A bad clock interstitial |
448 // should be shown. | 448 // should be shown. |
449 EXPECT_TRUE(test_server()->Start()); | |
450 test_server()->RegisterRequestHandler( | 449 test_server()->RegisterRequestHandler( |
451 base::Bind(&network_time::GoodTimeResponseHandler)); | 450 base::Bind(&network_time::GoodTimeResponseHandler)); |
| 451 EXPECT_TRUE(test_server()->Start()); |
452 tracker()->SetTimeServerURLForTesting(test_server()->GetURL("/")); | 452 tracker()->SetTimeServerURLForTesting(test_server()->GetURL("/")); |
453 field_trial_test()->SetNetworkQueriesWithVariationsService( | 453 field_trial_test()->SetNetworkQueriesWithVariationsService( |
454 true, 0.0, network_time::FieldTrialTest::FETCHES_ON_DEMAND_ONLY); | 454 true, 0.0, network_time::FieldTrialTest::FETCHES_ON_DEMAND_ONLY); |
455 error_handler()->StartHandlingError(); | 455 error_handler()->StartHandlingError(); |
456 | 456 |
457 EXPECT_TRUE(error_handler()->IsTimerRunning()); | 457 EXPECT_TRUE(error_handler()->IsTimerRunning()); |
458 tracker()->WaitForFetchForTesting(123123123); | 458 tracker()->WaitForFetchForTesting(123123123); |
459 base::RunLoop().RunUntilIdle(); | 459 base::RunLoop().RunUntilIdle(); |
460 | 460 |
461 EXPECT_TRUE(error_handler()->bad_clock_interstitial_shown()); | 461 EXPECT_TRUE(error_handler()->bad_clock_interstitial_shown()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 // the system clock times out (e.g. because a network time query hangs). | 493 // the system clock times out (e.g. because a network time query hangs). |
494 TEST_F(SSLErrorHandlerDateInvalidTest, TimeQueryHangs) { | 494 TEST_F(SSLErrorHandlerDateInvalidTest, TimeQueryHangs) { |
495 base::Time network_time; | 495 base::Time network_time; |
496 base::TimeDelta uncertainty; | 496 base::TimeDelta uncertainty; |
497 EXPECT_EQ(network_time::NetworkTimeTracker::NETWORK_TIME_NO_SYNC_ATTEMPT, | 497 EXPECT_EQ(network_time::NetworkTimeTracker::NETWORK_TIME_NO_SYNC_ATTEMPT, |
498 tracker()->GetNetworkTime(&network_time, &uncertainty)); | 498 tracker()->GetNetworkTime(&network_time, &uncertainty)); |
499 | 499 |
500 // Enable network time queries and handle the error. Because the | 500 // Enable network time queries and handle the error. Because the |
501 // network time cannot be determined before the timer elapses, an SSL | 501 // network time cannot be determined before the timer elapses, an SSL |
502 // interstitial should be shown. | 502 // interstitial should be shown. |
503 EXPECT_TRUE(test_server()->Start()); | |
504 base::RunLoop wait_for_time_query_loop; | 503 base::RunLoop wait_for_time_query_loop; |
505 test_server()->RegisterRequestHandler( | 504 test_server()->RegisterRequestHandler( |
506 base::Bind(&WaitForRequest, wait_for_time_query_loop.QuitClosure())); | 505 base::Bind(&WaitForRequest, wait_for_time_query_loop.QuitClosure())); |
| 506 EXPECT_TRUE(test_server()->Start()); |
507 tracker()->SetTimeServerURLForTesting(test_server()->GetURL("/")); | 507 tracker()->SetTimeServerURLForTesting(test_server()->GetURL("/")); |
508 field_trial_test()->SetNetworkQueriesWithVariationsService( | 508 field_trial_test()->SetNetworkQueriesWithVariationsService( |
509 true, 0.0, network_time::FieldTrialTest::FETCHES_ON_DEMAND_ONLY); | 509 true, 0.0, network_time::FieldTrialTest::FETCHES_ON_DEMAND_ONLY); |
510 error_handler()->StartHandlingError(); | 510 error_handler()->StartHandlingError(); |
511 EXPECT_TRUE(error_handler()->IsTimerRunning()); | 511 EXPECT_TRUE(error_handler()->IsTimerRunning()); |
512 wait_for_time_query_loop.Run(); | 512 wait_for_time_query_loop.Run(); |
513 base::RunLoop().RunUntilIdle(); | 513 base::RunLoop().RunUntilIdle(); |
514 | 514 |
515 EXPECT_FALSE(error_handler()->bad_clock_interstitial_shown()); | 515 EXPECT_FALSE(error_handler()->bad_clock_interstitial_shown()); |
516 EXPECT_TRUE(error_handler()->ssl_interstitial_shown()); | 516 EXPECT_TRUE(error_handler()->ssl_interstitial_shown()); |
517 EXPECT_FALSE(error_handler()->IsTimerRunning()); | 517 EXPECT_FALSE(error_handler()->IsTimerRunning()); |
518 | 518 |
519 // Clear the error handler to test that, when the request completes, | 519 // Clear the error handler to test that, when the request completes, |
520 // it doesn't try to call a callback on a deleted SSLErrorHandler. | 520 // it doesn't try to call a callback on a deleted SSLErrorHandler. |
521 ClearErrorHandler(); | 521 ClearErrorHandler(); |
522 | 522 |
523 // Shut down the server to cancel the pending request. | 523 // Shut down the server to cancel the pending request. |
524 ASSERT_TRUE(test_server()->ShutdownAndWaitUntilComplete()); | 524 ASSERT_TRUE(test_server()->ShutdownAndWaitUntilComplete()); |
525 tracker()->WaitForFetchForTesting(123123123); | 525 tracker()->WaitForFetchForTesting(123123123); |
526 } | 526 } |
OLD | NEW |