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

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

Issue 2632503005: predictors: Collect page load metrics for ResourcePrefetchPredictor. (Closed)
Patch Set: Mark suffix as base. Created 3 years, 11 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/resource_prefetch_predictor_page_load_metrics_observer_unittest.cc
diff --git a/chrome/browser/page_load_metrics/observers/resource_prefetch_predictor_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/resource_prefetch_predictor_page_load_metrics_observer_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..bac976786bed6ff7aac17943bca331da9ccc425d
--- /dev/null
+++ b/chrome/browser/page_load_metrics/observers/resource_prefetch_predictor_page_load_metrics_observer_unittest.cc
@@ -0,0 +1,85 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/page_load_metrics/observers/resource_prefetch_predictor_page_load_metrics_observer.h"
+
+#include "base/memory/ptr_util.h"
+#include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.h"
+#include "chrome/browser/predictors/resource_prefetch_common.h"
+#include "chrome/browser/predictors/resource_prefetch_predictor.h"
+#include "chrome/test/base/testing_profile.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+using predictors::ResourcePrefetchPredictor;
+
+class MockResourcePrefetchPredictor : public ResourcePrefetchPredictor {
+ public:
+ MockResourcePrefetchPredictor(
+ const predictors::ResourcePrefetchPredictorConfig& config,
+ Profile* profile)
+ : ResourcePrefetchPredictor(config, profile) {}
+
+ MOCK_METHOD1(IsUrlPrefetchable, bool(const GURL& main_frame_url));
+
+ ~MockResourcePrefetchPredictor() override {}
+};
+
+class ResourcePrefetchPredictorPageLoadMetricsObserverTest
+ : public page_load_metrics::PageLoadMetricsObserverTestHarness {
+ protected:
+ void SetUp() override {
+ page_load_metrics::PageLoadMetricsObserverTestHarness::SetUp();
+ predictors::ResourcePrefetchPredictorConfig config;
+ config.mode = predictors::ResourcePrefetchPredictorConfig::LEARNING;
+ predictor_ =
+ base::MakeUnique<testing::StrictMock<MockResourcePrefetchPredictor>>(
+ config, profile());
+ timing_.navigation_start = base::Time::FromDoubleT(1);
+ timing_.first_paint = base::TimeDelta::FromSeconds(2);
+ timing_.first_contentful_paint = base::TimeDelta::FromSeconds(3);
+ timing_.first_meaningful_paint = base::TimeDelta::FromSeconds(4);
+ PopulateRequiredTimingFields(&timing_);
+ }
+
+ void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override {
+ tracker->AddObserver(
+ base::MakeUnique<ResourcePrefetchPredictorPageLoadMetricsObserver>(
+ predictor_.get()));
+ }
+
+ std::unique_ptr<testing::StrictMock<MockResourcePrefetchPredictor>>
+ predictor_;
+ page_load_metrics::PageLoadTiming timing_;
+};
+
+TEST_F(ResourcePrefetchPredictorPageLoadMetricsObserverTest,
+ PrefetchableIsRecorded) {
+ const GURL main_frame_url("https://www.google.com");
+ EXPECT_CALL(*predictor_.get(), IsUrlPrefetchable(main_frame_url))
+ .WillOnce(testing::Return(true));
+
+ NavigateAndCommit(main_frame_url);
+ SimulateTimingUpdate(timing_);
+
+ histogram_tester().ExpectTotalCount(
+ internal::kHistogramResourcePrefetchPredictorFirstContentfulPaint, 1);
+ histogram_tester().ExpectTotalCount(
+ internal::kHistogramResourcePrefetchPredictorFirstMeaningfulPaint, 1);
+}
+
+TEST_F(ResourcePrefetchPredictorPageLoadMetricsObserverTest,
+ NotPrefetchableIsNotRecorded) {
+ const GURL main_frame_url("https://www.google.com");
+ EXPECT_CALL(*predictor_.get(), IsUrlPrefetchable(main_frame_url))
+ .WillOnce(testing::Return(false));
+
+ NavigateAndCommit(main_frame_url);
+ SimulateTimingUpdate(timing_);
+
+ histogram_tester().ExpectTotalCount(
+ internal::kHistogramResourcePrefetchPredictorFirstContentfulPaint, 0);
+ histogram_tester().ExpectTotalCount(
+ internal::kHistogramResourcePrefetchPredictorFirstMeaningfulPaint, 0);
+}

Powered by Google App Engine
This is Rietveld 408576698