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 "net/http/http_server_properties_manager.h" | 5 #include "net/http/http_server_properties_manager.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/json/json_writer.h" | |
8 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
9 #include "base/prefs/pref_registry_simple.h" | 10 #include "base/prefs/pref_registry_simple.h" |
10 #include "base/prefs/testing_pref_service.h" | 11 #include "base/prefs/testing_pref_service.h" |
11 #include "base/run_loop.h" | 12 #include "base/run_loop.h" |
12 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
13 #include "base/strings/stringprintf.h" | 14 #include "base/strings/stringprintf.h" |
14 #include "base/test/test_simple_task_runner.h" | 15 #include "base/test/test_simple_task_runner.h" |
15 #include "base/values.h" | 16 #include "base/values.h" |
16 #include "testing/gmock/include/gmock/gmock.h" | 17 #include "testing/gmock/include/gmock/gmock.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
638 EXPECT_EQ(i, port_alternate_protocol.port); | 639 EXPECT_EQ(i, port_alternate_protocol.port); |
639 EXPECT_EQ(NPN_SPDY_3, port_alternate_protocol.protocol); | 640 EXPECT_EQ(NPN_SPDY_3, port_alternate_protocol.protocol); |
640 } | 641 } |
641 | 642 |
642 // Verify SupportsQuic. | 643 // Verify SupportsQuic. |
643 IPAddressNumber address; | 644 IPAddressNumber address; |
644 ASSERT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); | 645 ASSERT_TRUE(http_server_props_manager_->GetSupportsQuic(&address)); |
645 EXPECT_EQ("127.0.0.1", IPAddressToString(address)); | 646 EXPECT_EQ("127.0.0.1", IPAddressToString(address)); |
646 } | 647 } |
647 | 648 |
649 TEST_F(HttpServerPropertiesManagerTest, UpdateCacheWithPrefs) { | |
650 const HostPortPair server_www("www.google.com", 80); | |
651 const HostPortPair server_mail("mail.google.com", 80); | |
652 | |
653 // Set alternate protocol. | |
654 http_server_props_manager_->SetAlternateProtocol(server_www, 443, NPN_SPDY_3, | |
655 1.0); | |
656 http_server_props_manager_->SetAlternateProtocol(server_mail, 444, | |
657 NPN_SPDY_3_1, 0.2); | |
658 | |
659 // Set ServerNetworkStats. | |
660 ServerNetworkStats stats; | |
661 stats.srtt = base::TimeDelta::FromInternalValue(42); | |
662 http_server_props_manager_->SetServerNetworkStats(server_mail, stats); | |
663 | |
664 // Set SupportsQuic. | |
665 IPAddressNumber actual_address; | |
666 CHECK(ParseIPLiteralToNumber("127.0.0.1", &actual_address)); | |
667 http_server_props_manager_->SetSupportsQuic(true, actual_address); | |
668 | |
669 // Update cache. | |
670 ExpectPrefsUpdate(); | |
671 ExpectCacheUpdate(); | |
672 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); | |
673 base::RunLoop().RunUntilIdle(); | |
674 | |
675 // Verify preferences. | |
676 const char expected_json[] = "{" | |
677 "\"servers\":{" | |
Bence
2015/02/05 14:53:24
This indentation is easier to read, but it is not
Ryan Hamilton
2015/02/05 15:29:13
Either way is fine with me. Your call.
| |
678 "\"mail.google.com:80\":{" | |
679 "\"alternate_protocol\":{" | |
680 "\"port\":444,\"probability\":0.2,\"protocol_str\":\"npn-spdy/3.1\"" | |
681 "}," | |
682 "\"network_stats\":{" | |
683 "\"srtt\":42" | |
684 "}" | |
685 "}," | |
686 "\"www.google.com:80\":{" | |
687 "\"alternate_protocol\":{" | |
688 "\"port\":443,\"probability\":1.0,\"protocol_str\":\"npn-spdy/3\"" | |
689 "}" | |
690 "}" | |
691 "}," | |
692 "\"supports_quic\":{" | |
693 "\"address\":\"127.0.0.1\",\"used_quic\":true" | |
694 "}," | |
695 "\"version\":3" | |
696 "}"; | |
697 | |
698 const base::Value* http_server_properties = | |
699 pref_service_.GetUserPref(kTestHttpServerProperties); | |
700 ASSERT_NE(nullptr, http_server_properties); | |
701 std::string preferences_json; | |
702 EXPECT_TRUE( | |
703 base::JSONWriter::Write(http_server_properties, &preferences_json)); | |
704 EXPECT_EQ(expected_json, preferences_json); | |
705 } | |
706 | |
648 TEST_F(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache0) { | 707 TEST_F(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache0) { |
649 // Post an update task to the UI thread. | 708 // Post an update task to the UI thread. |
650 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); | 709 http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); |
651 // Shutdown comes before the task is executed. | 710 // Shutdown comes before the task is executed. |
652 http_server_props_manager_->ShutdownOnPrefThread(); | 711 http_server_props_manager_->ShutdownOnPrefThread(); |
653 http_server_props_manager_.reset(); | 712 http_server_props_manager_.reset(); |
654 // Run the task after shutdown and deletion. | 713 // Run the task after shutdown and deletion. |
655 base::RunLoop().RunUntilIdle(); | 714 base::RunLoop().RunUntilIdle(); |
656 } | 715 } |
657 | 716 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
713 // Run the task after shutdown, but before deletion. | 772 // Run the task after shutdown, but before deletion. |
714 base::RunLoop().RunUntilIdle(); | 773 base::RunLoop().RunUntilIdle(); |
715 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); | 774 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); |
716 http_server_props_manager_.reset(); | 775 http_server_props_manager_.reset(); |
717 base::RunLoop().RunUntilIdle(); | 776 base::RunLoop().RunUntilIdle(); |
718 } | 777 } |
719 | 778 |
720 } // namespace | 779 } // namespace |
721 | 780 |
722 } // namespace net | 781 } // namespace net |
OLD | NEW |