| 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 6c2fb103380fe6e785c2522bd8bbadc94c349eec..381fe6f41f167f9b6466dec09d846bd6e19bb2af 100644
|
| --- a/third_party/WebKit/Source/core/dom/Document.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/Document.cpp
|
| @@ -398,11 +398,22 @@ static void runAutofocusTask(ExecutionContext* context) {
|
| }
|
| }
|
|
|
| -static void recordLoadReasonToHistogram(WouldLoadReason reason) {
|
| - DEFINE_STATIC_LOCAL(
|
| - EnumerationHistogram, unseenFrameHistogram,
|
| - ("Navigation.DeferredDocumentLoading.StatesV2", WouldLoadReasonEnd));
|
| - unseenFrameHistogram.count(reason);
|
| +// 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);
|
| }
|
|
|
| Document::Document(const DocumentInit& initializer,
|
| @@ -487,7 +498,7 @@ Document::Document(const DocumentInit& initializer,
|
| m_hasViewportUnits(false),
|
| m_parserSyncPolicy(AllowAsynchronousParsing),
|
| m_nodeCount(0),
|
| - m_wouldLoadReason(Created) {
|
| + m_visibilityWasLogged(false) {
|
| if (m_frame) {
|
| DCHECK(m_frame->page());
|
| provideContextFeaturesToDocumentFrom(*this, *m_frame->page());
|
| @@ -518,6 +529,11 @@ Document::Document(const DocumentInit& initializer,
|
| setURL(initializer.url());
|
|
|
| initSecurityContext(initializer);
|
| + DCHECK(getSecurityOrigin());
|
| + if (frame() && frame()->tree().top()->securityContext() &&
|
| + !getSecurityOrigin()->canAccess(
|
| + frame()->tree().top()->securityContext()->getSecurityOrigin()))
|
| + RecordStateToHistogram(Created);
|
|
|
| initDNSPrefetch();
|
|
|
| @@ -6355,14 +6371,12 @@ DEFINE_TRACE(Document) {
|
| SecurityContext::trace(visitor);
|
| }
|
|
|
| -void Document::maybeRecordLoadReason(WouldLoadReason reason) {
|
| - DCHECK(m_wouldLoadReason == Created || reason != Created);
|
| +void Document::onVisibilityMaybeChanged(bool visible) {
|
| DCHECK(frame());
|
| - if (m_wouldLoadReason == Created && frame()->isCrossOriginSubframe() &&
|
| - frame()->loader().stateMachine()->committedFirstRealDocumentLoad()) {
|
| - recordLoadReasonToHistogram(reason);
|
| + if (visible && !m_visibilityWasLogged && frame()->isCrossOriginSubframe()) {
|
| + m_visibilityWasLogged = true;
|
| + RecordStateToHistogram(WouldLoadBecauseVisible);
|
| }
|
| - m_wouldLoadReason = reason;
|
| }
|
|
|
| DEFINE_TRACE_WRAPPERS(Document) {
|
|
|