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

Unified Diff: components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc

Issue 1961363003: Log an immediate variant of FirstContentfulPaint. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2704
Patch Set: Created 4 years, 7 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: components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc
diff --git a/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc b/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc
index de1fc2668d382f3005c3994d276543b6ec2803a4..d11b456686f0ee75ed90422b22af54858641752f 100644
--- a/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc
+++ b/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc
@@ -33,9 +33,11 @@ const char kDefaultTestUrl2[] = "https://whatever.com/";
class TestPageLoadMetricsObserver : public PageLoadMetricsObserver {
public:
explicit TestPageLoadMetricsObserver(
- std::vector<PageLoadTiming>* observed_timings,
+ std::vector<PageLoadTiming>* updated_timings,
+ std::vector<PageLoadTiming>* complete_timings,
std::vector<GURL>* observed_committed_urls)
- : observed_timings_(observed_timings),
+ : updated_timings_(updated_timings),
+ complete_timings_(complete_timings),
observed_committed_urls_(observed_committed_urls) {}
void OnStart(content::NavigationHandle* navigation_handle,
@@ -43,13 +45,19 @@ class TestPageLoadMetricsObserver : public PageLoadMetricsObserver {
observed_committed_urls_->push_back(currently_committed_url);
}
+ void OnTimingUpdate(const PageLoadTiming& timing,
+ const PageLoadExtraInfo& extra_info) override {
+ updated_timings_->push_back(timing);
+ }
+
void OnComplete(const PageLoadTiming& timing,
const PageLoadExtraInfo& extra_info) override {
- observed_timings_->push_back(timing);
+ complete_timings_->push_back(timing);
}
private:
- std::vector<PageLoadTiming>* const observed_timings_;
+ std::vector<PageLoadTiming>* const updated_timings_;
+ std::vector<PageLoadTiming>* const complete_timings_;
std::vector<GURL>* const observed_committed_urls_;
};
@@ -66,10 +74,13 @@ class TestPageLoadMetricsEmbedderInterface
}
void RegisterObservers(PageLoadTracker* tracker) override {
tracker->AddObserver(make_scoped_ptr(new TestPageLoadMetricsObserver(
- &observed_timings_, &observed_committed_urls_)));
+ &updated_timings_, &complete_timings_, &observed_committed_urls_)));
}
- const std::vector<PageLoadTiming>& observed_timings() const {
- return observed_timings_;
+ const std::vector<PageLoadTiming>& updated_timings() const {
+ return updated_timings_;
+ }
+ const std::vector<PageLoadTiming>& complete_timings() const {
+ return complete_timings_;
}
// currently_committed_urls passed to OnStart().
@@ -78,7 +89,8 @@ class TestPageLoadMetricsEmbedderInterface
}
private:
- std::vector<PageLoadTiming> observed_timings_;
+ std::vector<PageLoadTiming> updated_timings_;
+ std::vector<PageLoadTiming> complete_timings_;
std::vector<GURL> observed_committed_urls_;
bool is_prerendering_;
};
@@ -128,26 +140,31 @@ class MetricsWebContentsObserverTest
}
void AssertNoNonEmptyTimingReported() {
- ASSERT_FALSE(embedder_interface_->observed_timings().empty());
- for (const auto& timing : embedder_interface_->observed_timings()) {
+ ASSERT_FALSE(embedder_interface_->complete_timings().empty());
+ for (const auto& timing : embedder_interface_->complete_timings()) {
ASSERT_TRUE(timing.IsEmpty());
}
}
void AssertNonEmptyTimingsReported(size_t expected_non_empty_timings) {
- ASSERT_GE(embedder_interface_->observed_timings().size(),
+ ASSERT_GE(embedder_interface_->complete_timings().size(),
expected_non_empty_timings);
size_t actual_non_empty_timings = 0;
- for (const auto& timing : embedder_interface_->observed_timings()) {
+ for (const auto& timing : embedder_interface_->complete_timings()) {
if (!timing.IsEmpty()) {
++actual_non_empty_timings;
}
}
ASSERT_EQ(expected_non_empty_timings, actual_non_empty_timings);
+ ASSERT_GE(embedder_interface_->updated_timings().size(),
+ actual_non_empty_timings);
}
- void AssertNoTimingReported() {
- ASSERT_TRUE(embedder_interface_->observed_timings().empty());
+ int CountCompleteTimingReported() {
+ return embedder_interface_->complete_timings().size();
+ }
+ int CountUpdatedTimingReported() {
+ return embedder_interface_->updated_timings().size();
}
const std::vector<GURL>& observed_committed_urls_from_on_start() const {
@@ -178,14 +195,17 @@ TEST_F(MetricsWebContentsObserverTest, SuccessfulMainFrameNavigation) {
ASSERT_EQ(1u, observed_committed_urls_from_on_start().size());
ASSERT_TRUE(observed_committed_urls_from_on_start().at(0).is_empty());
+ ASSERT_EQ(0, CountUpdatedTimingReported());
SimulateTimingUpdate(timing);
- AssertNoTimingReported();
+ ASSERT_EQ(1, CountUpdatedTimingReported());
+ ASSERT_EQ(0, CountCompleteTimingReported());
web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
AssertNonEmptyTimingsReported(1);
ASSERT_EQ(2u, observed_committed_urls_from_on_start().size());
ASSERT_EQ(kDefaultTestUrl,
observed_committed_urls_from_on_start().at(1).spec());
+ ASSERT_EQ(1, CountUpdatedTimingReported());
CheckNoErrorEvents();
}
@@ -212,6 +232,7 @@ TEST_F(MetricsWebContentsObserverTest, NotInMainFrame) {
// Navigate again to see if the timing updated for a subframe message.
web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
+ ASSERT_EQ(0, CountUpdatedTimingReported());
AssertNoNonEmptyTimingReported();
CheckErrorEvent(ERR_IPC_FROM_WRONG_FRAME, 1);
CheckTotalErrorEvents();
@@ -224,9 +245,12 @@ TEST_F(MetricsWebContentsObserverTest, SamePageNoTrigger) {
content::WebContentsTester* web_contents_tester =
content::WebContentsTester::For(web_contents());
web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
+ ASSERT_EQ(0, CountUpdatedTimingReported());
SimulateTimingUpdate(timing);
+ ASSERT_EQ(1, CountUpdatedTimingReported());
web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrlAnchor));
// A same page navigation shouldn't trigger logging UMA for the original.
+ ASSERT_EQ(1, CountUpdatedTimingReported());
AssertNoNonEmptyTimingReported();
CheckNoErrorEvents();
}
@@ -242,7 +266,8 @@ TEST_F(MetricsWebContentsObserverTest, DontLogPrerender) {
web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
SimulateTimingUpdate(timing);
web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
- AssertNoTimingReported();
+ ASSERT_EQ(0, CountUpdatedTimingReported());
+ ASSERT_EQ(0, CountCompleteTimingReported());
CheckErrorEvent(ERR_IPC_WITH_NO_RELEVANT_LOAD, 1);
CheckTotalErrorEvents();
}
@@ -257,7 +282,10 @@ TEST_F(MetricsWebContentsObserverTest, DontLogIrrelevantNavigation) {
GURL about_blank_url = GURL("about:blank");
web_contents_tester->NavigateAndCommit(about_blank_url);
SimulateTimingUpdate(timing);
+ ASSERT_EQ(0, CountUpdatedTimingReported());
web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
+ ASSERT_EQ(0, CountUpdatedTimingReported());
+ ASSERT_EQ(0, CountCompleteTimingReported());
CheckErrorEvent(ERR_IPC_FROM_BAD_URL_SCHEME, 1);
CheckErrorEvent(ERR_IPC_WITH_NO_RELEVANT_LOAD, 1);
@@ -283,6 +311,8 @@ TEST_F(MetricsWebContentsObserverTest, NotInMainError) {
SimulateTimingUpdate(timing, subframe);
CheckErrorEvent(ERR_IPC_FROM_WRONG_FRAME, 1);
CheckTotalErrorEvents();
+ ASSERT_EQ(0, CountUpdatedTimingReported());
+ ASSERT_EQ(0, CountCompleteTimingReported());
}
TEST_F(MetricsWebContentsObserverTest, BadIPC) {
@@ -296,7 +326,9 @@ TEST_F(MetricsWebContentsObserverTest, BadIPC) {
web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
SimulateTimingUpdate(timing);
+ ASSERT_EQ(1, CountUpdatedTimingReported());
SimulateTimingUpdate(timing2);
+ ASSERT_EQ(1, CountUpdatedTimingReported());
CheckErrorEvent(ERR_BAD_TIMING_IPC, 1);
CheckTotalErrorEvents();
@@ -323,7 +355,8 @@ TEST_F(MetricsWebContentsObserverTest, ObservePartialNavigation) {
// Navigate again to force histogram logging.
web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
- AssertNoTimingReported();
+ ASSERT_EQ(0, CountCompleteTimingReported());
+ ASSERT_EQ(0, CountUpdatedTimingReported());
CheckErrorEvent(ERR_IPC_WITH_NO_RELEVANT_LOAD, 1);
CheckTotalErrorEvents();
}

Powered by Google App Engine
This is Rietveld 408576698