Chromium Code Reviews| Index: chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc |
| diff --git a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc |
| index 57e3b3ea0f6354e84656c09afbaf53552233374f..91aa13f311f444c9f82fce93fb951898afda550d 100644 |
| --- a/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc |
| +++ b/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc |
| @@ -6,6 +6,7 @@ |
| #include "base/feature_list.h" |
| #include "base/files/scoped_temp_dir.h" |
| #include "base/macros.h" |
| +#include "base/memory/weak_ptr.h" |
| #include "base/test/histogram_tester.h" |
| #include "base/test/scoped_feature_list.h" |
| #include "base/threading/thread_restrictions.h" |
| @@ -77,25 +78,34 @@ class PageLoadMetricsWaiter |
| }; |
| explicit PageLoadMetricsWaiter(content::WebContents* web_contents) |
| - : TestingObserver(web_contents) {} |
| + : TestingObserver(web_contents), weak_factory_(this) {} |
| - ~PageLoadMetricsWaiter() override { DCHECK_EQ(nullptr, run_loop_.get()); } |
| + ~PageLoadMetricsWaiter() override { |
| + CHECK(did_add_observer_); |
|
Charlie Harrison
2017/05/25 19:35:33
#include "base/logging"
Charlie Harrison
2017/05/25 19:35:34
Should we ASSERT instead of CHECK here?
Bryan McQuade
2017/05/25 19:54:05
added include
ASSERT macros fail to compile in de
Charlie Harrison
2017/05/25 19:59:44
Weird... fine by me
|
| + CHECK_EQ(nullptr, run_loop_.get()); |
| + } |
| - // Add the given expectation to match on. |
| - void AddMainFrameExpectation(TimingField field) { |
| - main_frame_expected_fields_.Set(field); |
| + // Add a page-level expectation. |
| + void AddPageExpectation(TimingField field) { |
| + page_expected_fields_.Set(field); |
| } |
| + |
| + // Add a subframe-level expectation. |
| void AddSubFrameExpectation(TimingField field) { |
| - child_frame_expected_fields_.Set(field); |
| + subframe_expected_fields_.Set(field); |
| + // If the given field is also a page-level field, then add a page-level |
| + // expectation as well |
| + if (IsPageLevelField(field)) |
| + page_expected_fields_.Set(field); |
| } |
| - // Whether the given TimingField was observed in the main frame. |
| - bool DidObserveInMainFrame(TimingField field) { |
| - return observed_main_frame_fields_.IsSet(field); |
| + // Whether the given TimingField was observed in the page. |
| + bool DidObserveInPage(TimingField field) { |
| + return observed_page_fields_.IsSet(field); |
| } |
| // Waits for a TimingUpdated IPC that matches the fields set by |
| - // |AddMainFrameExpectation| and |AddSubFrameExpectation|. All matching fields |
| + // |AddPageExpectation| and |AddSubFrameExpectation|. All matching fields |
| // must be set in a TimingUpdated IPC for it to end this wait. |
| void Wait() { |
| if (expectations_satisfied()) |
| @@ -108,7 +118,48 @@ class PageLoadMetricsWaiter |
| EXPECT_TRUE(expectations_satisfied()); |
|
Bryan McQuade
2017/05/25 19:54:06
the codereview site is refusing to show me your co
|
| } |
| + void OnTimingUpdate(bool is_subframe, |
| + const page_load_metrics::mojom::PageLoadTiming& timing, |
| + const page_load_metrics::PageLoadExtraInfo& extra_info) { |
| + if (expectations_satisfied()) |
| + return; |
| + |
| + const page_load_metrics::mojom::PageLoadMetadata& metadata = |
| + is_subframe ? extra_info.subframe_metadata |
| + : extra_info.main_frame_metadata; |
| + TimingFieldBitSet matched_bits = GetMatchedBits(timing, metadata); |
| + if (is_subframe) { |
| + subframe_expected_fields_.ClearMatching(matched_bits); |
| + } else { |
| + page_expected_fields_.ClearMatching(matched_bits); |
| + observed_page_fields_.Merge(matched_bits); |
| + } |
| + |
| + if (expectations_satisfied() && run_loop_) |
| + run_loop_->Quit(); |
| + } |
| + |
| private: |
| + // PageLoadMetricsObserver used by the PageLoadMetricsWaiter to observe |
| + // metrics updates. |
|
Charlie Harrison
2017/05/25 19:35:34
Can you explain why you need weak ptrs?
Bryan McQuade
2017/05/25 19:54:06
Done - added comment to constructor.
|
| + class WaiterMetricsObserver |
| + : public page_load_metrics::PageLoadMetricsObserver { |
| + public: |
| + explicit WaiterMetricsObserver(base::WeakPtr<PageLoadMetricsWaiter> waiter) |
| + : waiter_(waiter) {} |
| + |
| + void OnTimingUpdate( |
| + bool is_subframe, |
| + const page_load_metrics::mojom::PageLoadTiming& timing, |
| + const page_load_metrics::PageLoadExtraInfo& extra_info) override { |
| + if (waiter_) |
| + waiter_->OnTimingUpdate(is_subframe, timing, extra_info); |
| + } |
| + |
| + private: |
| + const base::WeakPtr<PageLoadMetricsWaiter> waiter_; |
| + }; |
| + |
| // Manages a bitset of TimingFields. |
| class TimingFieldBitSet { |
| public: |
| @@ -137,6 +188,17 @@ class PageLoadMetricsWaiter |
| int bitmask_ = 0; |
| }; |
| + static bool IsPageLevelField(TimingField field) { |
| + switch (field) { |
| + case TimingField::FIRST_PAINT: |
| + case TimingField::FIRST_CONTENTFUL_PAINT: |
| + case TimingField::FIRST_MEANINGFUL_PAINT: |
| + return true; |
| + default: |
| + return false; |
| + } |
| + } |
| + |
| static TimingFieldBitSet GetMatchedBits( |
| const page_load_metrics::mojom::PageLoadTiming& timing, |
| const page_load_metrics::mojom::PageLoadMetadata& metadata) { |
| @@ -161,36 +223,29 @@ class PageLoadMetricsWaiter |
| return matched_bits; |
| } |
| - void OnTimingUpdated( |
| - bool is_main_frame, |
| - const page_load_metrics::mojom::PageLoadTiming& timing, |
| - const page_load_metrics::mojom::PageLoadMetadata& metadata) override { |
| - if (expectations_satisfied()) |
| - return; |
| - |
| - TimingFieldBitSet matched_bits = GetMatchedBits(timing, metadata); |
| - if (is_main_frame) { |
| - main_frame_expected_fields_.ClearMatching(matched_bits); |
| - observed_main_frame_fields_.Merge(matched_bits); |
| - } else { |
| - child_frame_expected_fields_.ClearMatching(matched_bits); |
| - } |
| - |
| - if (expectations_satisfied() && run_loop_) |
| - run_loop_->Quit(); |
| + void OnCommit(page_load_metrics::PageLoadTracker* tracker) override { |
| + // A PageLoadMetricsWaiter should only wait for events from a single page |
| + // load. |
| + ASSERT_FALSE(did_add_observer_); |
| + tracker->AddObserver( |
| + base::MakeUnique<WaiterMetricsObserver>(weak_factory_.GetWeakPtr())); |
| + did_add_observer_ = true; |
| } |
| bool expectations_satisfied() const { |
| - return child_frame_expected_fields_.Empty() && |
| - main_frame_expected_fields_.Empty(); |
| + return subframe_expected_fields_.Empty() && page_expected_fields_.Empty(); |
| } |
| std::unique_ptr<base::RunLoop> run_loop_; |
| - TimingFieldBitSet child_frame_expected_fields_; |
| - TimingFieldBitSet main_frame_expected_fields_; |
| + TimingFieldBitSet page_expected_fields_; |
| + TimingFieldBitSet subframe_expected_fields_; |
| + |
| + TimingFieldBitSet observed_page_fields_; |
| + |
| + bool did_add_observer_ = false; |
| - TimingFieldBitSet observed_main_frame_fields_; |
| + base::WeakPtrFactory<PageLoadMetricsWaiter> weak_factory_; |
| }; |
| using TimingField = PageLoadMetricsWaiter::TimingField; |
| @@ -315,7 +370,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NewPage) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_PAINT); |
| ui_test_utils::NavigateToURL(browser(), |
| embedded_test_server()->GetURL("/title1.html")); |
| waiter->Wait(); |
| @@ -346,12 +401,12 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoPaintForEmptyDocument) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::FIRST_LAYOUT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| ui_test_utils::NavigateToURL(browser(), |
| embedded_test_server()->GetURL("/empty.html")); |
| waiter->Wait(); |
| - EXPECT_FALSE(waiter->DidObserveInMainFrame(TimingField::FIRST_PAINT)); |
| + EXPECT_FALSE(waiter->DidObserveInPage(TimingField::FIRST_PAINT)); |
| histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
| histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
| @@ -368,13 +423,13 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
| embedded_test_server()->GetURL("/page_load_metrics/empty_iframe.html")); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::FIRST_LAYOUT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| waiter->AddSubFrameExpectation(TimingField::FIRST_LAYOUT); |
| waiter->AddSubFrameExpectation(TimingField::LOAD_EVENT); |
| ui_test_utils::NavigateToURL(browser(), a_url); |
| waiter->Wait(); |
| - EXPECT_FALSE(waiter->DidObserveInMainFrame(TimingField::FIRST_PAINT)); |
| + EXPECT_FALSE(waiter->DidObserveInPage(TimingField::FIRST_PAINT)); |
| histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
| histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
| @@ -388,8 +443,8 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PaintInChildFrame) { |
| GURL a_url(embedded_test_server()->GetURL("/page_load_metrics/iframe.html")); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::FIRST_LAYOUT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); |
| waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL(browser(), a_url); |
| @@ -406,8 +461,8 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PaintInMultipleChildFrames) { |
| GURL a_url(embedded_test_server()->GetURL("/page_load_metrics/iframes.html")); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::FIRST_LAYOUT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); |
| waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL(browser(), a_url); |
| @@ -425,10 +480,10 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PaintInMainAndChildFrame) { |
| "/page_load_metrics/main_frame_with_iframe.html")); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_LAYOUT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::FIRST_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); |
| waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL(browser(), a_url); |
| @@ -443,8 +498,8 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, SameDocumentNavigation) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::FIRST_LAYOUT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| ui_test_utils::NavigateToURL(browser(), |
| embedded_test_server()->GetURL("/title1.html")); |
| waiter->Wait(); |
| @@ -467,8 +522,8 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, SameUrlNavigation) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::FIRST_LAYOUT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| ui_test_utils::NavigateToURL(browser(), |
| embedded_test_server()->GetURL("/title1.html")); |
| waiter->Wait(); |
| @@ -478,8 +533,8 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, SameUrlNavigation) { |
| histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
| waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::FIRST_LAYOUT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| ui_test_utils::NavigateToURL(browser(), |
| embedded_test_server()->GetURL("/title1.html")); |
| waiter->Wait(); |
| @@ -574,7 +629,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PreloadDocumentWrite) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL( |
| @@ -589,7 +644,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoPreloadDocumentWrite) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL( |
| "/page_load_metrics/document_write_no_script.html")); |
| @@ -605,7 +660,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoDocumentWrite) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL(browser(), |
| embedded_test_server()->GetURL("/title1.html")); |
| @@ -624,7 +679,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteBlock) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL( |
| @@ -640,7 +695,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteReload) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL( |
| "/page_load_metrics/document_write_script_block.html")); |
| @@ -651,26 +706,24 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteReload) { |
| histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); |
| // Reload should not log the histogram as the script is not blocked. |
| - auto reload_waiter = CreatePageLoadMetricsWaiter(); |
| - reload_waiter->AddMainFrameExpectation( |
| - TimingField::DOCUMENT_WRITE_BLOCK_RELOAD); |
| - reload_waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter = CreatePageLoadMetricsWaiter(); |
| + waiter->AddPageExpectation(TimingField::DOCUMENT_WRITE_BLOCK_RELOAD); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL( |
| "/page_load_metrics/document_write_script_block.html")); |
| - reload_waiter->Wait(); |
| + waiter->Wait(); |
| histogram_tester_.ExpectTotalCount( |
| internal::kHistogramDocWriteBlockReloadCount, 1); |
| - reload_waiter = CreatePageLoadMetricsWaiter(); |
| - reload_waiter->AddMainFrameExpectation( |
| - TimingField::DOCUMENT_WRITE_BLOCK_RELOAD); |
| - reload_waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter = CreatePageLoadMetricsWaiter(); |
| + waiter->AddPageExpectation(TimingField::DOCUMENT_WRITE_BLOCK_RELOAD); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL( |
| "/page_load_metrics/document_write_script_block.html")); |
| - reload_waiter->Wait(); |
| + waiter->Wait(); |
| histogram_tester_.ExpectTotalCount( |
| internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
| @@ -684,7 +737,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteAsync) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL( |
| "/page_load_metrics/document_write_async_script.html")); |
| @@ -701,7 +754,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteSameDomain) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL( |
| "/page_load_metrics/document_write_external_script.html")); |
| @@ -718,7 +771,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoDocumentWriteScript) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL( |
| "/page_load_metrics/document_write_no_script.html")); |
| @@ -740,9 +793,6 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoDocumentWriteScript) { |
| IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, MAYBE_BadXhtml) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| - auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); |
| - |
| // When an XHTML page contains invalid XML, it causes a paint of the error |
| // message without a layout. Page load metrics currently treats this as an |
| // error. Eventually, we'll fix this by special casing the handling of |
| @@ -751,13 +801,11 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, MAYBE_BadXhtml) { |
| ui_test_utils::NavigateToURL( |
| browser(), |
| embedded_test_server()->GetURL("/page_load_metrics/badxml.xhtml")); |
| - |
| - waiter->Wait(); |
| + NavigateToUntrackedUrl(); |
| histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 0); |
| histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 0); |
| - histogram_tester_.ExpectTotalCount(page_load_metrics::internal::kErrorEvents, |
| - 1); |
| + |
| histogram_tester_.ExpectBucketCount( |
| page_load_metrics::internal::kErrorEvents, |
| page_load_metrics::ERR_BAD_TIMING_IPC_INVALID_TIMING, 1); |
| @@ -788,7 +836,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, AbortNewNavigation) { |
| ui::PAGE_TRANSITION_FROM_ADDRESS_BAR); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| chrome::Navigate(¶ms2); |
| waiter->Wait(); |
| @@ -810,7 +858,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, AbortReload) { |
| chrome::NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| chrome::Navigate(¶ms2); |
| waiter->Wait(); |
| @@ -868,7 +916,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, AbortMultiple) { |
| chrome::NavigateParams params3(browser(), url3, ui::PAGE_TRANSITION_TYPED); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| chrome::Navigate(¶ms3); |
| waiter->Wait(); |
| @@ -895,9 +943,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
| { |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| - content::TestNavigationManager reload_manager( |
| - browser()->tab_strip_model()->GetActiveWebContents(), first_url); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| EXPECT_TRUE(content::ExecuteScript( |
| browser()->tab_strip_model()->GetActiveWebContents(), |
| "window.location.reload();")); |
| @@ -916,7 +962,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_MEANINGFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_MEANINGFUL_PAINT); |
| ui_test_utils::NavigateToURL(browser(), |
| embedded_test_server()->GetURL("/title1.html")); |
| waiter->Wait(); |
| @@ -935,7 +981,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL( |
| browser(), embedded_test_server()->GetURL( |
| @@ -961,7 +1007,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL(browser(), |
| embedded_test_server()->GetURL("/title1.html")); |
| @@ -979,7 +1025,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| + waiter->AddPageExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
| ui_test_utils::NavigateToURL(browser(), |
| embedded_test_server()->GetURL("/nostore.html")); |
| @@ -996,7 +1042,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, CSSTiming) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::STYLE_UPDATE_BEFORE_FCP); |
| + waiter->AddPageExpectation(TimingField::STYLE_UPDATE_BEFORE_FCP); |
| // Careful: Blink code clamps timestamps to 5us, so any CSS parsing we do here |
| // must take >> 5us, otherwise we'll log 0 for the value and it will remain |
| @@ -1020,7 +1066,7 @@ IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PayloadSize) { |
| ASSERT_TRUE(embedded_test_server()->Start()); |
| auto waiter = CreatePageLoadMetricsWaiter(); |
| - waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
| + waiter->AddPageExpectation(TimingField::LOAD_EVENT); |
| ui_test_utils::NavigateToURL(browser(), embedded_test_server()->GetURL( |
| "/page_load_metrics/large.html")); |
| waiter->Wait(); |