| Index: chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc
|
| diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc b/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc
|
| index d33beb0aa4d47ebc52416993b8129a65bd41383d..e4119d5ddfb43bbb79e2e5c5130acfb467b6caea 100644
|
| --- a/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc
|
| +++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service_browsertest.cc
|
| @@ -6,6 +6,7 @@
|
| #include <string>
|
|
|
| #include "base/bind.h"
|
| +#include "base/macros.h"
|
| #include "base/metrics/field_trial.h"
|
| #include "base/run_loop.h"
|
| #include "base/test/histogram_tester.h"
|
| @@ -51,6 +52,42 @@ class TestEffectiveConnectionTypeObserver
|
|
|
| private:
|
| net::EffectiveConnectionType effective_connection_type_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestEffectiveConnectionTypeObserver);
|
| +};
|
| +
|
| +class TestRTTAndThroughputEstimatesObserver
|
| + : public net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver {
|
| + public:
|
| + TestRTTAndThroughputEstimatesObserver()
|
| + : http_rtt_(base::TimeDelta::FromMilliseconds(-1)),
|
| + transport_rtt_(base::TimeDelta::FromMilliseconds(-1)),
|
| + downstream_throughput_kbps_(-1) {}
|
| + ~TestRTTAndThroughputEstimatesObserver() override {}
|
| +
|
| + // net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver
|
| + // implementation:
|
| + void OnRTTOrThroughputEstimatesComputed(
|
| + base::TimeDelta http_rtt,
|
| + base::TimeDelta transport_rtt,
|
| + int32_t downstream_throughput_kbps) override {
|
| + http_rtt_ = http_rtt;
|
| + transport_rtt_ = transport_rtt;
|
| + downstream_throughput_kbps_ = downstream_throughput_kbps;
|
| + }
|
| +
|
| + base::TimeDelta http_rtt() const { return http_rtt_; }
|
| + base::TimeDelta transport_rtt() const { return transport_rtt_; }
|
| + int32_t downstream_throughput_kbps() const {
|
| + return downstream_throughput_kbps_;
|
| + }
|
| +
|
| + private:
|
| + base::TimeDelta http_rtt_;
|
| + base::TimeDelta transport_rtt_;
|
| + int32_t downstream_throughput_kbps_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestRTTAndThroughputEstimatesObserver);
|
| };
|
|
|
| class UINetworkQualityEstimatorServiceBrowserTest
|
| @@ -205,6 +242,50 @@ IN_PROC_BROWSER_TEST_F(UINetworkQualityEstimatorServiceBrowserTest,
|
| nqe_observer_3.effective_connection_type());
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(UINetworkQualityEstimatorServiceBrowserTest,
|
| + VerifyRTTs) {
|
| + // Verifies that NQE notifying RTTAndThroughputEstimatesObserver causes the
|
| + // UINetworkQualityEstimatorService to receive an update.
|
| + Profile* profile = ProfileManager::GetActiveUserProfile();
|
| + UINetworkQualityEstimatorService* nqe_service =
|
| + UINetworkQualityEstimatorServiceFactory::GetForProfile(profile);
|
| + TestRTTAndThroughputEstimatesObserver nqe_observer;
|
| + nqe_service->AddRTTAndThroughputEstimatesObserver(&nqe_observer);
|
| +
|
| + base::TimeDelta rtt_1 = base::TimeDelta::FromMilliseconds(100);
|
| +
|
| + nqe_test_util::OverrideRTTsAndWait(rtt_1);
|
| + EXPECT_EQ(rtt_1, nqe_observer.http_rtt());
|
| +
|
| + base::TimeDelta rtt_2 = base::TimeDelta::FromMilliseconds(200);
|
| +
|
| + nqe_test_util::OverrideRTTsAndWait(rtt_2);
|
| + EXPECT_EQ(rtt_2, nqe_observer.http_rtt());
|
| +
|
| + nqe_service->RemoveRTTAndThroughputEstimatesObserver(&nqe_observer);
|
| +
|
| + base::TimeDelta rtt_3 = base::TimeDelta::FromMilliseconds(300);
|
| +
|
| + nqe_test_util::OverrideRTTsAndWait(rtt_3);
|
| + EXPECT_EQ(rtt_2, nqe_observer.http_rtt());
|
| +
|
| + // Observer should be notified on addition.
|
| + TestRTTAndThroughputEstimatesObserver nqe_observer_2;
|
| + nqe_service->AddRTTAndThroughputEstimatesObserver(&nqe_observer_2);
|
| + EXPECT_GT(0, nqe_observer_2.http_rtt().InMilliseconds());
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_EQ(rtt_3, nqe_observer_2.http_rtt());
|
| +
|
| + // |nqe_observer_3| should be not notified since it unregisters before the
|
| + // message loop is run.
|
| + TestRTTAndThroughputEstimatesObserver nqe_observer_3;
|
| + nqe_service->AddRTTAndThroughputEstimatesObserver(&nqe_observer_3);
|
| + EXPECT_GT(0, nqe_observer_3.http_rtt().InMilliseconds());
|
| + nqe_service->RemoveRTTAndThroughputEstimatesObserver(&nqe_observer_3);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_GT(0, nqe_observer_3.http_rtt().InMilliseconds());
|
| +}
|
| +
|
| // Verify that prefs are writen and read correctly.
|
| IN_PROC_BROWSER_TEST_F(UINetworkQualityEstimatorServiceBrowserTest,
|
| WritingReadingToPrefsEnabled) {
|
|
|