| Index: third_party/WebKit/Source/core/dom/Document.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp
|
| index ed97200c0bd3f914a719de441dd56cd59ea1d92c..78debb75e58f7f149f2f91539bc6dcaecb1a7977 100644
|
| --- a/third_party/WebKit/Source/core/dom/Document.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/Document.cpp
|
| @@ -396,7 +396,7 @@ static void runAutofocusTask(ExecutionContext* context) {
|
| static void recordLoadReasonToHistogram(WouldLoadReason reason) {
|
| DEFINE_STATIC_LOCAL(
|
| EnumerationHistogram, unseenFrameHistogram,
|
| - ("Navigation.DeferredDocumentLoading.StatesV3", WouldLoadReasonEnd));
|
| + ("Navigation.DeferredDocumentLoading.StatesV4", WouldLoadReasonEnd));
|
| unseenFrameHistogram.count(reason);
|
| }
|
|
|
| @@ -490,7 +490,7 @@ Document::Document(const DocumentInit& initializer,
|
| m_hasViewportUnits(false),
|
| m_parserSyncPolicy(AllowAsynchronousParsing),
|
| m_nodeCount(0),
|
| - m_wouldLoadReason(Created),
|
| + m_wouldLoadReason(Invalid),
|
| m_passwordCount(0) {
|
| if (m_frame) {
|
| DCHECK(m_frame->page());
|
| @@ -6536,13 +6536,16 @@ DEFINE_TRACE(Document) {
|
| SynchronousMutationNotifier::trace(visitor);
|
| }
|
|
|
| -void Document::maybeRecordLoadReason(WouldLoadReason reason) {
|
| - DCHECK(m_wouldLoadReason == Created || reason != Created);
|
| +void Document::recordDeferredLoadReason(WouldLoadReason reason) {
|
| + DCHECK(m_wouldLoadReason == Invalid || reason != Created);
|
| + DCHECK(reason != Invalid);
|
| DCHECK(frame());
|
| - if (m_wouldLoadReason == Created && frame()->isCrossOriginSubframe() &&
|
| - frame()->loader().stateMachine()->committedFirstRealDocumentLoad()) {
|
| - recordLoadReasonToHistogram(reason);
|
| - }
|
| + DCHECK(frame()->isCrossOriginSubframe());
|
| + if (reason <= m_wouldLoadReason ||
|
| + !frame()->loader().stateMachine()->committedFirstRealDocumentLoad())
|
| + return;
|
| + for (int i = m_wouldLoadReason + 1; i <= reason; ++i)
|
| + recordLoadReasonToHistogram(static_cast<WouldLoadReason>(i));
|
| m_wouldLoadReason = reason;
|
| }
|
|
|
|
|