Chromium Code Reviews| 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 083ed51d91f4be61eec1603eeb3ac754d5ea3198..cf798e4f370a121b996bc1fd6025c27412574148 100644 |
| --- a/third_party/WebKit/Source/core/dom/Document.cpp |
| +++ b/third_party/WebKit/Source/core/dom/Document.cpp |
| @@ -398,22 +398,11 @@ static void runAutofocusTask(ExecutionContext* context) { |
| } |
| } |
| -// These are logged to UMA, so don't re-arrange them without creating a new |
| -// histogram. |
| -enum DocumentVisibilityForDeferredLoading { |
| - Created, |
| - WouldLoadBecauseVisible, |
| - // TODO(dgrogan): Add WouldLoadBecauseTopOrLeft, WouldLoadBecauseDisplayNone, |
| - // etc |
| - |
| - DocumentVisibilityForDeferredLoadingEnd |
| -}; |
| - |
| -static void RecordStateToHistogram(DocumentVisibilityForDeferredLoading state) { |
| - DEFINE_STATIC_LOCAL(EnumerationHistogram, unseenFrameHistogram, |
| - ("Navigation.DeferredDocumentLoading.StatesV1", |
| - DocumentVisibilityForDeferredLoadingEnd)); |
| - unseenFrameHistogram.count(state); |
| +static void recordReasonToHistogram(WouldLoadReason reason) { |
|
dcheng
2016/10/08 00:46:22
Nit: recordLoadReasonToHistogram
dgrogan
2016/10/13 01:06:21
Done.
|
| + DEFINE_STATIC_LOCAL( |
| + EnumerationHistogram, unseenFrameHistogram, |
| + ("Navigation.DeferredDocumentLoading.StatesV2", WouldLoadReasonEnd)); |
| + unseenFrameHistogram.count(reason); |
| } |
| Document::Document(const DocumentInit& initializer, |
| @@ -496,7 +485,7 @@ Document::Document(const DocumentInit& initializer, |
| m_hasViewportUnits(false), |
| m_parserSyncPolicy(AllowAsynchronousParsing), |
| m_nodeCount(0), |
| - m_visibilityWasLogged(false) { |
| + m_wouldLoadReason(Created) { |
| if (m_frame) { |
| DCHECK(m_frame->page()); |
| provideContextFeaturesToDocumentFrom(*this, *m_frame->page()); |
| @@ -530,8 +519,10 @@ Document::Document(const DocumentInit& initializer, |
| DCHECK(getSecurityOrigin()); |
| if (frame() && frame()->tree().top()->securityContext() && |
|
dcheng
2016/10/08 00:46:22
Nit: Not introduced by this CL, but can this be fr
dgrogan
2016/10/13 01:06:21
That would be nice but unfortunately not; LocalFra
dcheng
2016/10/13 23:00:43
Let's just update isCrossOriginSubframe() to handl
dgrogan
2016/10/14 21:45:08
Same stacktrace :( But thanks for looking into thi
dcheng
2016/10/14 23:40:30
Ah OK. So I patched this in and I understand the p
|
| !getSecurityOrigin()->canAccess( |
| - frame()->tree().top()->securityContext()->getSecurityOrigin())) |
| - RecordStateToHistogram(Created); |
| + frame()->tree().top()->securityContext()->getSecurityOrigin()) && |
| + frame()->loader().stateMachine()->committedFirstRealDocumentLoad()) { |
| + recordReasonToHistogram(Created); |
| + } |
| initDNSPrefetch(); |
| @@ -6366,12 +6357,14 @@ DEFINE_TRACE(Document) { |
| SecurityContext::trace(visitor); |
| } |
| -void Document::onVisibilityMaybeChanged(bool visible) { |
| +void Document::wouldLoadBecause(WouldLoadReason reason) { |
| + DCHECK(reason != Created); |
| DCHECK(frame()); |
| - if (visible && !m_visibilityWasLogged && frame()->isCrossOriginSubframe()) { |
| - m_visibilityWasLogged = true; |
| - RecordStateToHistogram(WouldLoadBecauseVisible); |
| + if (m_wouldLoadReason == Created && frame()->isCrossOriginSubframe() && |
| + frame()->loader().stateMachine()->committedFirstRealDocumentLoad()) { |
| + recordReasonToHistogram(reason); |
| } |
| + m_wouldLoadReason = reason; |
| } |
| DEFINE_TRACE_WRAPPERS(Document) { |