OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/nqe/network_quality_estimator.h" | 5 #include "net/nqe/network_quality_estimator.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <limits> | 10 #include <limits> |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 } | 117 } |
118 | 118 |
119 // Runs one URL request to completion. | 119 // Runs one URL request to completion. |
120 void RunOneRequest() { | 120 void RunOneRequest() { |
121 TestDelegate test_delegate; | 121 TestDelegate test_delegate; |
122 TestURLRequestContext context(true); | 122 TestURLRequestContext context(true); |
123 context.set_network_quality_estimator(this); | 123 context.set_network_quality_estimator(this); |
124 context.Init(); | 124 context.Init(); |
125 std::unique_ptr<URLRequest> request( | 125 std::unique_ptr<URLRequest> request( |
126 context.CreateRequest(GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 126 context.CreateRequest(GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
127 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 127 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
128 request->Start(); | 128 request->Start(); |
129 base::RunLoop().Run(); | 129 base::RunLoop().Run(); |
130 } | 130 } |
131 | 131 |
132 // Returns a GURL hosted at embedded test server. | 132 // Returns a GURL hosted at embedded test server. |
133 const GURL GetEchoURL() const { | 133 const GURL GetEchoURL() const { |
134 return embedded_test_server_.GetURL("/echo.html"); | 134 return embedded_test_server_.GetURL("/echo.html"); |
135 } | 135 } |
136 | 136 |
137 void set_effective_connection_type(EffectiveConnectionType type) { | 137 void set_effective_connection_type(EffectiveConnectionType type) { |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
418 EXPECT_FALSE(estimator.GetHttpRTTEstimate(&rtt)); | 418 EXPECT_FALSE(estimator.GetHttpRTTEstimate(&rtt)); |
419 EXPECT_FALSE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); | 419 EXPECT_FALSE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); |
420 | 420 |
421 TestDelegate test_delegate; | 421 TestDelegate test_delegate; |
422 TestURLRequestContext context(true); | 422 TestURLRequestContext context(true); |
423 context.set_network_quality_estimator(&estimator); | 423 context.set_network_quality_estimator(&estimator); |
424 context.Init(); | 424 context.Init(); |
425 | 425 |
426 std::unique_ptr<URLRequest> request(context.CreateRequest( | 426 std::unique_ptr<URLRequest> request(context.CreateRequest( |
427 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 427 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
428 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 428 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
429 request->Start(); | 429 request->Start(); |
430 base::RunLoop().Run(); | 430 base::RunLoop().Run(); |
431 | 431 |
432 // Both RTT and downstream throughput should be updated. | 432 // Both RTT and downstream throughput should be updated. |
433 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt)); | 433 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt)); |
434 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); | 434 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); |
435 EXPECT_FALSE(estimator.GetTransportRTTEstimate(&rtt)); | 435 EXPECT_FALSE(estimator.GetTransportRTTEstimate(&rtt)); |
436 | 436 |
437 // Check UMA histograms. | 437 // Check UMA histograms. |
438 histogram_tester.ExpectTotalCount("NQE.PeakKbps.Unknown", 0); | 438 histogram_tester.ExpectTotalCount("NQE.PeakKbps.Unknown", 0); |
439 histogram_tester.ExpectTotalCount("NQE.FastestRTT.Unknown", 0); | 439 histogram_tester.ExpectTotalCount("NQE.FastestRTT.Unknown", 0); |
440 histogram_tester.ExpectUniqueSample( | 440 histogram_tester.ExpectUniqueSample( |
441 "NQE.MainFrame.EffectiveConnectionType.Unknown", | 441 "NQE.MainFrame.EffectiveConnectionType.Unknown", |
442 EffectiveConnectionType::EFFECTIVE_CONNECTION_TYPE_UNKNOWN, 1); | 442 EffectiveConnectionType::EFFECTIVE_CONNECTION_TYPE_UNKNOWN, 1); |
443 | 443 |
444 std::unique_ptr<URLRequest> request2(context.CreateRequest( | 444 std::unique_ptr<URLRequest> request2(context.CreateRequest( |
445 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 445 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
446 request2->SetLoadFlags(request2->load_flags() | LOAD_MAIN_FRAME); | 446 request2->SetLoadFlags(request2->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
447 request2->Start(); | 447 request2->Start(); |
448 base::RunLoop().Run(); | 448 base::RunLoop().Run(); |
449 histogram_tester.ExpectTotalCount( | 449 histogram_tester.ExpectTotalCount( |
450 "NQE.MainFrame.EffectiveConnectionType.Unknown", 2); | 450 "NQE.MainFrame.EffectiveConnectionType.Unknown", 2); |
451 | 451 |
452 estimator.SimulateNetworkChangeTo( | 452 estimator.SimulateNetworkChangeTo( |
453 NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI, "test-1"); | 453 NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI, "test-1"); |
454 histogram_tester.ExpectUniqueSample("NQE.CachedNetworkQualityAvailable", | 454 histogram_tester.ExpectUniqueSample("NQE.CachedNetworkQualityAvailable", |
455 false, 2); | 455 false, 2); |
456 histogram_tester.ExpectTotalCount("NQE.PeakKbps.Unknown", 1); | 456 histogram_tester.ExpectTotalCount("NQE.PeakKbps.Unknown", 1); |
(...skipping 25 matching lines...) Expand all Loading... |
482 histogram_tester.ExpectUniqueSample("NQE.CachedNetworkQualityAvailable", | 482 histogram_tester.ExpectUniqueSample("NQE.CachedNetworkQualityAvailable", |
483 false, 3); | 483 false, 3); |
484 histogram_tester.ExpectTotalCount("NQE.PeakKbps.Unknown", 1); | 484 histogram_tester.ExpectTotalCount("NQE.PeakKbps.Unknown", 1); |
485 histogram_tester.ExpectTotalCount("NQE.FastestRTT.Unknown", 1); | 485 histogram_tester.ExpectTotalCount("NQE.FastestRTT.Unknown", 1); |
486 | 486 |
487 EXPECT_FALSE(estimator.GetHttpRTTEstimate(&rtt)); | 487 EXPECT_FALSE(estimator.GetHttpRTTEstimate(&rtt)); |
488 EXPECT_FALSE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); | 488 EXPECT_FALSE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); |
489 | 489 |
490 std::unique_ptr<URLRequest> request3(context.CreateRequest( | 490 std::unique_ptr<URLRequest> request3(context.CreateRequest( |
491 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 491 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
492 request3->SetLoadFlags(request2->load_flags() | LOAD_MAIN_FRAME); | 492 request3->SetLoadFlags(request2->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
493 request3->Start(); | 493 request3->Start(); |
494 base::RunLoop().Run(); | 494 base::RunLoop().Run(); |
495 histogram_tester.ExpectUniqueSample( | 495 histogram_tester.ExpectUniqueSample( |
496 "NQE.MainFrame.EffectiveConnectionType.WiFi", | 496 "NQE.MainFrame.EffectiveConnectionType.WiFi", |
497 EffectiveConnectionType::EFFECTIVE_CONNECTION_TYPE_UNKNOWN, 1); | 497 EffectiveConnectionType::EFFECTIVE_CONNECTION_TYPE_UNKNOWN, 1); |
498 | 498 |
499 estimator.SimulateNetworkChangeTo( | 499 estimator.SimulateNetworkChangeTo( |
500 NetworkChangeNotifier::ConnectionType::CONNECTION_UNKNOWN, "test"); | 500 NetworkChangeNotifier::ConnectionType::CONNECTION_UNKNOWN, "test"); |
501 histogram_tester.ExpectBucketCount("NQE.CachedNetworkQualityAvailable", false, | 501 histogram_tester.ExpectBucketCount("NQE.CachedNetworkQualityAvailable", false, |
502 3); | 502 3); |
(...skipping 22 matching lines...) Expand all Loading... |
525 TestURLRequestContext context(true); | 525 TestURLRequestContext context(true); |
526 context.set_network_quality_estimator(&estimator); | 526 context.set_network_quality_estimator(&estimator); |
527 context.Init(); | 527 context.Init(); |
528 | 528 |
529 // Start two requests so that the network quality is added to cache store at | 529 // Start two requests so that the network quality is added to cache store at |
530 // the beginning of the second request from the network traffic observed from | 530 // the beginning of the second request from the network traffic observed from |
531 // the first request. | 531 // the first request. |
532 for (size_t i = 0; i < 2; ++i) { | 532 for (size_t i = 0; i < 2; ++i) { |
533 std::unique_ptr<URLRequest> request(context.CreateRequest( | 533 std::unique_ptr<URLRequest> request(context.CreateRequest( |
534 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 534 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
535 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 535 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
536 request->Start(); | 536 request->Start(); |
537 base::RunLoop().Run(); | 537 base::RunLoop().Run(); |
538 } | 538 } |
539 | 539 |
540 base::RunLoop().RunUntilIdle(); | 540 base::RunLoop().RunUntilIdle(); |
541 | 541 |
542 // Both RTT and downstream throughput should be updated. | 542 // Both RTT and downstream throughput should be updated. |
543 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt)); | 543 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt)); |
544 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); | 544 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); |
545 EXPECT_NE(EFFECTIVE_CONNECTION_TYPE_UNKNOWN, | 545 EXPECT_NE(EFFECTIVE_CONNECTION_TYPE_UNKNOWN, |
(...skipping 987 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1533 int32_t kbps; | 1533 int32_t kbps; |
1534 EXPECT_FALSE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); | 1534 EXPECT_FALSE(estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); |
1535 | 1535 |
1536 TestDelegate test_delegate; | 1536 TestDelegate test_delegate; |
1537 TestURLRequestContext context(true); | 1537 TestURLRequestContext context(true); |
1538 context.set_network_quality_estimator(&estimator); | 1538 context.set_network_quality_estimator(&estimator); |
1539 context.Init(); | 1539 context.Init(); |
1540 | 1540 |
1541 std::unique_ptr<URLRequest> request(context.CreateRequest( | 1541 std::unique_ptr<URLRequest> request(context.CreateRequest( |
1542 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 1542 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
1543 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 1543 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
1544 request->Start(); | 1544 request->Start(); |
1545 base::RunLoop().Run(); | 1545 base::RunLoop().Run(); |
1546 | 1546 |
1547 EXPECT_EQ(test.allow_small_localhost_requests, | 1547 EXPECT_EQ(test.allow_small_localhost_requests, |
1548 estimator.GetHttpRTTEstimate(&rtt)); | 1548 estimator.GetHttpRTTEstimate(&rtt)); |
1549 EXPECT_EQ(test.allow_small_localhost_requests, | 1549 EXPECT_EQ(test.allow_small_localhost_requests, |
1550 estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); | 1550 estimator.GetDownlinkThroughputKbpsEstimate(&kbps)); |
1551 } | 1551 } |
1552 } | 1552 } |
1553 | 1553 |
(...skipping 16 matching lines...) Expand all Loading... |
1570 context.set_network_quality_estimator(&estimator); | 1570 context.set_network_quality_estimator(&estimator); |
1571 context.Init(); | 1571 context.Init(); |
1572 | 1572 |
1573 EXPECT_EQ(0U, observer.effective_connection_types().size()); | 1573 EXPECT_EQ(0U, observer.effective_connection_types().size()); |
1574 | 1574 |
1575 estimator.set_effective_connection_type(EFFECTIVE_CONNECTION_TYPE_2G); | 1575 estimator.set_effective_connection_type(EFFECTIVE_CONNECTION_TYPE_2G); |
1576 tick_clock_ptr->Advance(base::TimeDelta::FromMinutes(60)); | 1576 tick_clock_ptr->Advance(base::TimeDelta::FromMinutes(60)); |
1577 | 1577 |
1578 std::unique_ptr<URLRequest> request(context.CreateRequest( | 1578 std::unique_ptr<URLRequest> request(context.CreateRequest( |
1579 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 1579 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
1580 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 1580 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
1581 request->Start(); | 1581 request->Start(); |
1582 base::RunLoop().Run(); | 1582 base::RunLoop().Run(); |
1583 EXPECT_EQ(1U, observer.effective_connection_types().size()); | 1583 EXPECT_EQ(1U, observer.effective_connection_types().size()); |
1584 histogram_tester.ExpectUniqueSample( | 1584 histogram_tester.ExpectUniqueSample( |
1585 "NQE.MainFrame.EffectiveConnectionType.Unknown", | 1585 "NQE.MainFrame.EffectiveConnectionType.Unknown", |
1586 EFFECTIVE_CONNECTION_TYPE_2G, 1); | 1586 EFFECTIVE_CONNECTION_TYPE_2G, 1); |
1587 | 1587 |
1588 // Next request should not trigger recomputation of effective connection type | 1588 // Next request should not trigger recomputation of effective connection type |
1589 // since there has been no change in the clock. | 1589 // since there has been no change in the clock. |
1590 std::unique_ptr<URLRequest> request2(context.CreateRequest( | 1590 std::unique_ptr<URLRequest> request2(context.CreateRequest( |
1591 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 1591 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
1592 request2->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 1592 request2->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
1593 request2->Start(); | 1593 request2->Start(); |
1594 base::RunLoop().Run(); | 1594 base::RunLoop().Run(); |
1595 EXPECT_EQ(1U, observer.effective_connection_types().size()); | 1595 EXPECT_EQ(1U, observer.effective_connection_types().size()); |
1596 | 1596 |
1597 // Change in connection type should send out notification to the observers. | 1597 // Change in connection type should send out notification to the observers. |
1598 estimator.set_effective_connection_type(EFFECTIVE_CONNECTION_TYPE_3G); | 1598 estimator.set_effective_connection_type(EFFECTIVE_CONNECTION_TYPE_3G); |
1599 estimator.SimulateNetworkChangeTo(NetworkChangeNotifier::CONNECTION_WIFI, | 1599 estimator.SimulateNetworkChangeTo(NetworkChangeNotifier::CONNECTION_WIFI, |
1600 "test"); | 1600 "test"); |
1601 EXPECT_EQ(2U, observer.effective_connection_types().size()); | 1601 EXPECT_EQ(2U, observer.effective_connection_types().size()); |
1602 | 1602 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1669 context.set_network_quality_estimator(&estimator); | 1669 context.set_network_quality_estimator(&estimator); |
1670 context.Init(); | 1670 context.Init(); |
1671 | 1671 |
1672 EXPECT_EQ(0U, observer.effective_connection_types().size()); | 1672 EXPECT_EQ(0U, observer.effective_connection_types().size()); |
1673 | 1673 |
1674 estimator.set_effective_connection_type(EFFECTIVE_CONNECTION_TYPE_2G); | 1674 estimator.set_effective_connection_type(EFFECTIVE_CONNECTION_TYPE_2G); |
1675 tick_clock_ptr->Advance(base::TimeDelta::FromMinutes(60)); | 1675 tick_clock_ptr->Advance(base::TimeDelta::FromMinutes(60)); |
1676 | 1676 |
1677 std::unique_ptr<URLRequest> request(context.CreateRequest( | 1677 std::unique_ptr<URLRequest> request(context.CreateRequest( |
1678 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 1678 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
1679 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 1679 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
1680 request->Start(); | 1680 request->Start(); |
1681 base::RunLoop().Run(); | 1681 base::RunLoop().Run(); |
1682 EXPECT_EQ(1U, observer.effective_connection_types().size()); | 1682 EXPECT_EQ(1U, observer.effective_connection_types().size()); |
1683 histogram_tester.ExpectUniqueSample( | 1683 histogram_tester.ExpectUniqueSample( |
1684 "NQE.MainFrame.EffectiveConnectionType.WiFi", | 1684 "NQE.MainFrame.EffectiveConnectionType.WiFi", |
1685 EFFECTIVE_CONNECTION_TYPE_2G, 1); | 1685 EFFECTIVE_CONNECTION_TYPE_2G, 1); |
1686 | 1686 |
1687 size_t expected_effective_connection_type_notifications = 1; | 1687 size_t expected_effective_connection_type_notifications = 1; |
1688 EXPECT_EQ(expected_effective_connection_type_notifications, | 1688 EXPECT_EQ(expected_effective_connection_type_notifications, |
1689 observer.effective_connection_types().size()); | 1689 observer.effective_connection_types().size()); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1741 TestURLRequestContext context(true); | 1741 TestURLRequestContext context(true); |
1742 context.set_network_quality_estimator(&estimator); | 1742 context.set_network_quality_estimator(&estimator); |
1743 context.Init(); | 1743 context.Init(); |
1744 | 1744 |
1745 EXPECT_EQ(0U, rtt_observer.observations().size()); | 1745 EXPECT_EQ(0U, rtt_observer.observations().size()); |
1746 EXPECT_EQ(0U, throughput_observer.observations().size()); | 1746 EXPECT_EQ(0U, throughput_observer.observations().size()); |
1747 base::TimeTicks then = base::TimeTicks::Now(); | 1747 base::TimeTicks then = base::TimeTicks::Now(); |
1748 | 1748 |
1749 std::unique_ptr<URLRequest> request(context.CreateRequest( | 1749 std::unique_ptr<URLRequest> request(context.CreateRequest( |
1750 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 1750 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
1751 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 1751 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
1752 request->Start(); | 1752 request->Start(); |
1753 base::RunLoop().Run(); | 1753 base::RunLoop().Run(); |
1754 | 1754 |
1755 std::unique_ptr<URLRequest> request2(context.CreateRequest( | 1755 std::unique_ptr<URLRequest> request2(context.CreateRequest( |
1756 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 1756 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
1757 request2->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 1757 request2->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
1758 request2->Start(); | 1758 request2->Start(); |
1759 base::RunLoop().Run(); | 1759 base::RunLoop().Run(); |
1760 | 1760 |
1761 // Both RTT and downstream throughput should be updated. | 1761 // Both RTT and downstream throughput should be updated. |
1762 base::TimeDelta rtt; | 1762 base::TimeDelta rtt; |
1763 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt)); | 1763 EXPECT_TRUE(estimator.GetHttpRTTEstimate(&rtt)); |
1764 | 1764 |
1765 int32_t throughput; | 1765 int32_t throughput; |
1766 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&throughput)); | 1766 EXPECT_TRUE(estimator.GetDownlinkThroughputKbpsEstimate(&throughput)); |
1767 | 1767 |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1849 const size_t num_requests = 2; | 1849 const size_t num_requests = 2; |
1850 for (size_t i = 0; i < num_requests; ++i) { | 1850 for (size_t i = 0; i < num_requests; ++i) { |
1851 size_t before_count_tcp_rtt_observations = 0; | 1851 size_t before_count_tcp_rtt_observations = 0; |
1852 for (const auto& observation : rtt_observer.observations()) { | 1852 for (const auto& observation : rtt_observer.observations()) { |
1853 if (observation.source == NETWORK_QUALITY_OBSERVATION_SOURCE_TCP) | 1853 if (observation.source == NETWORK_QUALITY_OBSERVATION_SOURCE_TCP) |
1854 ++before_count_tcp_rtt_observations; | 1854 ++before_count_tcp_rtt_observations; |
1855 } | 1855 } |
1856 | 1856 |
1857 std::unique_ptr<URLRequest> request(context.CreateRequest( | 1857 std::unique_ptr<URLRequest> request(context.CreateRequest( |
1858 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 1858 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
1859 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 1859 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
1860 request->Start(); | 1860 request->Start(); |
1861 base::RunLoop().Run(); | 1861 base::RunLoop().Run(); |
1862 | 1862 |
1863 size_t after_count_tcp_rtt_observations = 0; | 1863 size_t after_count_tcp_rtt_observations = 0; |
1864 for (const auto& observation : rtt_observer.observations()) { | 1864 for (const auto& observation : rtt_observer.observations()) { |
1865 if (observation.source == NETWORK_QUALITY_OBSERVATION_SOURCE_TCP) | 1865 if (observation.source == NETWORK_QUALITY_OBSERVATION_SOURCE_TCP) |
1866 ++after_count_tcp_rtt_observations; | 1866 ++after_count_tcp_rtt_observations; |
1867 } | 1867 } |
1868 // At least one notification should be received per socket performance | 1868 // At least one notification should be received per socket performance |
1869 // watcher. | 1869 // watcher. |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1979 | 1979 |
1980 TestDelegate test_delegate; | 1980 TestDelegate test_delegate; |
1981 TestURLRequestContext context(true); | 1981 TestURLRequestContext context(true); |
1982 context.set_network_quality_estimator(&estimator); | 1982 context.set_network_quality_estimator(&estimator); |
1983 context.Init(); | 1983 context.Init(); |
1984 | 1984 |
1985 // Start a main-frame request which should cause network quality estimator | 1985 // Start a main-frame request which should cause network quality estimator |
1986 // to record accuracy UMA. | 1986 // to record accuracy UMA. |
1987 std::unique_ptr<URLRequest> request(context.CreateRequest( | 1987 std::unique_ptr<URLRequest> request(context.CreateRequest( |
1988 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 1988 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
1989 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 1989 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
1990 request->Start(); | 1990 request->Start(); |
1991 base::RunLoop().Run(); | 1991 base::RunLoop().Run(); |
1992 | 1992 |
1993 if (accuracy_recording_delay != base::TimeDelta()) { | 1993 if (accuracy_recording_delay != base::TimeDelta()) { |
1994 tick_clock_ptr->Advance(accuracy_recording_delay); | 1994 tick_clock_ptr->Advance(accuracy_recording_delay); |
1995 | 1995 |
1996 // Sleep for some time to ensure that the delayed task is posted. | 1996 // Sleep for some time to ensure that the delayed task is posted. |
1997 base::PlatformThread::Sleep(accuracy_recording_delay * 2); | 1997 base::PlatformThread::Sleep(accuracy_recording_delay * 2); |
1998 base::RunLoop().RunUntilIdle(); | 1998 base::RunLoop().RunUntilIdle(); |
1999 } | 1999 } |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2178 | 2178 |
2179 TestDelegate test_delegate; | 2179 TestDelegate test_delegate; |
2180 TestURLRequestContext context(true); | 2180 TestURLRequestContext context(true); |
2181 context.set_network_quality_estimator(&estimator); | 2181 context.set_network_quality_estimator(&estimator); |
2182 context.Init(); | 2182 context.Init(); |
2183 | 2183 |
2184 // Start a main-frame request that should cause network quality estimator to | 2184 // Start a main-frame request that should cause network quality estimator to |
2185 // record the network quality at the last main frame request. | 2185 // record the network quality at the last main frame request. |
2186 std::unique_ptr<URLRequest> request_1(context.CreateRequest( | 2186 std::unique_ptr<URLRequest> request_1(context.CreateRequest( |
2187 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 2187 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
2188 request_1->SetLoadFlags(request_1->load_flags() | LOAD_MAIN_FRAME); | 2188 request_1->SetLoadFlags(request_1->load_flags() | |
| 2189 LOAD_MAIN_FRAME_DEPRECATED); |
2189 request_1->Start(); | 2190 request_1->Start(); |
2190 base::RunLoop().Run(); | 2191 base::RunLoop().Run(); |
2191 histogram_tester.ExpectTotalCount( | 2192 histogram_tester.ExpectTotalCount( |
2192 "NQE.Correlation.ResourceLoadTime.0Kb_128Kb", 0); | 2193 "NQE.Correlation.ResourceLoadTime.0Kb_128Kb", 0); |
2193 | 2194 |
2194 // Start another main-frame request which should cause network quality | 2195 // Start another main-frame request which should cause network quality |
2195 // estimator to record the correlation UMA. | 2196 // estimator to record the correlation UMA. |
2196 std::unique_ptr<URLRequest> request_2(context.CreateRequest( | 2197 std::unique_ptr<URLRequest> request_2(context.CreateRequest( |
2197 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 2198 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
2198 request_2->Start(); | 2199 request_2->Start(); |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2328 | 2329 |
2329 TestDelegate test_delegate; | 2330 TestDelegate test_delegate; |
2330 TestURLRequestContext context(true); | 2331 TestURLRequestContext context(true); |
2331 context.set_network_quality_estimator(&estimator); | 2332 context.set_network_quality_estimator(&estimator); |
2332 context.Init(); | 2333 context.Init(); |
2333 | 2334 |
2334 EXPECT_EQ(0U, observer.effective_connection_types().size()); | 2335 EXPECT_EQ(0U, observer.effective_connection_types().size()); |
2335 | 2336 |
2336 std::unique_ptr<URLRequest> request(context.CreateRequest( | 2337 std::unique_ptr<URLRequest> request(context.CreateRequest( |
2337 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); | 2338 estimator.GetEchoURL(), DEFAULT_PRIORITY, &test_delegate)); |
2338 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME); | 2339 request->SetLoadFlags(request->load_flags() | LOAD_MAIN_FRAME_DEPRECATED); |
2339 request->Start(); | 2340 request->Start(); |
2340 base::RunLoop().Run(); | 2341 base::RunLoop().Run(); |
2341 | 2342 |
2342 size_t expected_count = static_cast<EffectiveConnectionType>(i) == | 2343 size_t expected_count = static_cast<EffectiveConnectionType>(i) == |
2343 EFFECTIVE_CONNECTION_TYPE_UNKNOWN | 2344 EFFECTIVE_CONNECTION_TYPE_UNKNOWN |
2344 ? 0 | 2345 ? 0 |
2345 : 1; | 2346 : 1; |
2346 ASSERT_EQ(expected_count, observer.effective_connection_types().size()); | 2347 ASSERT_EQ(expected_count, observer.effective_connection_types().size()); |
2347 if (expected_count == 1) { | 2348 if (expected_count == 1) { |
2348 EffectiveConnectionType last_notified_type = | 2349 EffectiveConnectionType last_notified_type = |
2349 observer.effective_connection_types().at( | 2350 observer.effective_connection_types().at( |
2350 observer.effective_connection_types().size() - 1); | 2351 observer.effective_connection_types().size() - 1); |
2351 EXPECT_EQ(i, last_notified_type); | 2352 EXPECT_EQ(i, last_notified_type); |
2352 } | 2353 } |
2353 } | 2354 } |
2354 } | 2355 } |
2355 | 2356 |
2356 } // namespace net | 2357 } // namespace net |
OLD | NEW |