Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(252)

Unified Diff: third_party/WebKit/Source/core/dom/Document.cpp

Issue 2389023002: Deferred frame loading stats v2 (Closed)
Patch Set: make display none work. update histograms.xml Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698