Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7040)

Unified Diff: chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc

Issue 2740403002: Persist EffectiveConnectionType in UKM on navigation start. (Closed)
Patch Set: fix ordering Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
diff --git a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
index e5bf87d86105f263d3d4c366d057e3f0fa5365d6..fa4dc6c4b5a86bce6a56722c6493212c6125cc9a 100644
--- a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
@@ -12,24 +12,47 @@
#include "components/ukm/test_ukm_service.h"
#include "components/ukm/ukm_entry.h"
#include "components/ukm/ukm_source.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+using testing::AnyNumber;
+using testing::Mock;
+using testing::Return;
namespace {
const char kTestUrl1[] = "https://www.google.com/";
const char kTestUrl2[] = "https://www.example.com/";
+class MockNetworkQualityProvider
+ : public net::NetworkQualityEstimator::NetworkQualityProvider {
+ public:
+ MOCK_CONST_METHOD0(GetEffectiveConnectionType,
+ net::EffectiveConnectionType());
+ MOCK_METHOD1(
+ AddEffectiveConnectionTypeObserver,
+ void(net::NetworkQualityEstimator::EffectiveConnectionTypeObserver*));
+ MOCK_METHOD1(
+ RemoveEffectiveConnectionTypeObserver,
+ void(net::NetworkQualityEstimator::EffectiveConnectionTypeObserver*));
+};
+
} // namespace
class UkmPageLoadMetricsObserverTest
: public page_load_metrics::PageLoadMetricsObserverTestHarness {
protected:
void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override {
- tracker->AddObserver(base::MakeUnique<UkmPageLoadMetricsObserver>());
+ tracker->AddObserver(base::MakeUnique<UkmPageLoadMetricsObserver>(
+ &mock_network_quality_provider_));
}
void SetUp() override {
page_load_metrics::PageLoadMetricsObserverTestHarness::SetUp();
+ EXPECT_CALL(mock_network_quality_provider_, GetEffectiveConnectionType())
+ .Times(AnyNumber())
+ .WillRepeatedly(Return(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN));
+
TestingBrowserProcess::GetGlobal()->SetUkmService(
ukm_service_test_harness_.test_ukm_service());
}
@@ -42,6 +65,10 @@ class UkmPageLoadMetricsObserverTest
return ukm_service_test_harness_.test_ukm_service()->entries_count();
}
+ MockNetworkQualityProvider& mock_network_quality_provider() {
+ return mock_network_quality_provider_;
+ }
+
const ukm::UkmSource* GetUkmSource(size_t source_index) {
return ukm_service_test_harness_.test_ukm_service()->GetSource(
source_index);
@@ -118,6 +145,7 @@ class UkmPageLoadMetricsObserverTest
}
private:
+ MockNetworkQualityProvider mock_network_quality_provider_;
ukm::UkmServiceTestingHarness ukm_service_test_harness_;
};
@@ -250,3 +278,26 @@ TEST_F(UkmPageLoadMetricsObserverTest, MultiplePageLoads) {
EXPECT_TRUE(
HasMetric(internal::kUkmForegroundDurationName, entry2_proto.metrics()));
}
+
+TEST_F(UkmPageLoadMetricsObserverTest, EffectiveConnectionType) {
+ EXPECT_CALL(mock_network_quality_provider(), GetEffectiveConnectionType())
+ .WillRepeatedly(Return(net::EFFECTIVE_CONNECTION_TYPE_3G));
+
+ NavigateAndCommit(GURL(kTestUrl1));
+
+ // Simulate closing the tab.
+ DeleteContents();
+
+ EXPECT_EQ(1ul, ukm_source_count());
+ const ukm::UkmSource* source = GetUkmSource(0);
+ EXPECT_EQ(GURL(kTestUrl1), source->url());
+
+ EXPECT_GE(ukm_entry_count(), 1ul);
+ ukm::Entry entry_proto = GetMergedEntryProtoForSourceID(source->id());
+ EXPECT_EQ(entry_proto.source_id(), source->id());
+ EXPECT_EQ(entry_proto.event_hash(),
+ base::HashMetricName(internal::kUkmPageLoadEventName));
+ EXPECT_FALSE(entry_proto.metrics().empty());
+ ExpectMetric(internal::kUkmEffectiveConnectionType,
+ net::EFFECTIVE_CONNECTION_TYPE_3G, entry_proto.metrics());
+}

Powered by Google App Engine
This is Rietveld 408576698