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

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

Issue 2516473002: Cross-origin iframes: collect data under hypothetical loading strategies (Closed)
Patch Set: just look below Created 4 years 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 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;
}

Powered by Google App Engine
This is Rietveld 408576698