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

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

Issue 2516473002: Cross-origin iframes: collect data under hypothetical loading strategies (Closed)
Patch Set: rebase Created 3 years, 10 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 09445ca5e5febafdd7e8f27ca1cff2b236cde055..0a46b0908320518aaf95e81b16ce39e9de5b60c0 100644
--- a/third_party/WebKit/Source/core/dom/Document.cpp
+++ b/third_party/WebKit/Source/core/dom/Document.cpp
@@ -401,7 +401,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);
}
@@ -532,7 +532,7 @@ Document::Document(const DocumentInit& initializer,
m_hasViewportUnits(false),
m_parserSyncPolicy(AllowAsynchronousParsing),
m_nodeCount(0),
- m_wouldLoadReason(Created),
+ m_wouldLoadReason(Invalid),
m_passwordCount(0),
m_engagementLevel(mojom::blink::EngagementLevel::NONE) {
if (m_frame) {
@@ -6612,13 +6612,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