| Index: chrome/browser/page_load_metrics/observers/document_write_page_load_metrics_observer.cc
|
| diff --git a/chrome/browser/page_load_metrics/observers/document_write_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/document_write_page_load_metrics_observer.cc
|
| index 7ad46366492b92331a444a94a8082ca516679341..4f30bdebecaf6cfdf80a4928c522fdbbc46a5e8b 100644
|
| --- a/chrome/browser/page_load_metrics/observers/document_write_page_load_metrics_observer.cc
|
| +++ b/chrome/browser/page_load_metrics/observers/document_write_page_load_metrics_observer.cc
|
| @@ -3,7 +3,9 @@
|
| // found in the LICENSE file.
|
|
|
| #include "chrome/browser/page_load_metrics/observers/document_write_page_load_metrics_observer.h"
|
| +#include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/page_load_metrics/page_load_metrics_util.h"
|
| +#include "components/ukm/public/ukm_recorder.h"
|
| #include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h"
|
|
|
| namespace internal {
|
| @@ -74,6 +76,12 @@ const char kHistogramDocWriteBlockReloadCount[] =
|
| const char kHistogramDocWriteBlockLoadingBehavior[] =
|
| "PageLoad.Clients.DocWrite.Block.DocumentWriteLoadingBehavior";
|
|
|
| +const char kUkmDocWriteBlockName[] = "DocumentWrite.ScriptBlock";
|
| +const char kUkmParseBlockedOnScriptLoadDocumentWrite[] =
|
| + "ParseTiming.ParseBlockedOnScriptLoadFromDocumentWrite";
|
| +const char kUkmParseBlockedOnScriptExecutionDocumentWrite[] =
|
| + "ParseTiming.ParseBlockedOnScriptExecutionFromDocumentWrite";
|
| +
|
| } // namespace internal
|
|
|
| void DocumentWritePageLoadMetricsObserver::OnFirstContentfulPaintInPage(
|
| @@ -144,6 +152,11 @@ void DocumentWritePageLoadMetricsObserver::OnLoadingBehaviorObserved(
|
| !doc_write_block_observed_) {
|
| UMA_HISTOGRAM_BOOLEAN(internal::kHistogramDocWriteBlockCount, true);
|
| LogLoadingBehaviorMetrics(LOADING_BEHAVIOR_BLOCK);
|
| + ukm::UkmRecorder* ukm_recorder = g_browser_process->ukm_recorder();
|
| + if (ukm_recorder) {
|
| + ukm_recorder->GetEntryBuilder(info.source_id,
|
| + internal::kUkmDocWriteBlockName);
|
| + }
|
| doc_write_block_observed_ = true;
|
| }
|
| if ((info.main_frame_metadata.behavior_flags &
|
| @@ -291,6 +304,24 @@ void DocumentWritePageLoadMetricsObserver::LogDocumentWriteBlockParseStop(
|
| timing.parse_timing
|
| ->parse_blocked_on_script_execution_from_document_write_duration
|
| .value());
|
| +
|
| + ukm::UkmRecorder* ukm_recorder = g_browser_process->ukm_recorder();
|
| + if (ukm_recorder) {
|
| + std::unique_ptr<ukm::UkmEntryBuilder> builder =
|
| + ukm_recorder->GetEntryBuilder(info.source_id,
|
| + internal::kUkmDocWriteBlockName);
|
| + builder->AddMetric(
|
| + internal::kUkmParseBlockedOnScriptLoadDocumentWrite,
|
| + timing.parse_timing
|
| + ->parse_blocked_on_script_load_from_document_write_duration
|
| + ->InMilliseconds());
|
| + builder->AddMetric(
|
| + internal::kUkmParseBlockedOnScriptExecutionDocumentWrite,
|
| + timing.parse_timing
|
| + ->parse_blocked_on_script_execution_from_document_write_duration
|
| + ->InMilliseconds());
|
| + }
|
| +
|
| } else {
|
| PAGE_LOAD_HISTOGRAM(
|
| internal::kBackgroundHistogramDocWriteBlockParseDuration,
|
|
|