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

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

Issue 2516473002: Cross-origin iframes: collect data under hypothetical loading strategies (Closed)
Patch Set: Created 4 years, 1 month 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 7c6b7c7b85c9a21233639f5db59e26d86cc91183..d34bf21210e4a5784a43082aeed605238abe056e 100644
--- a/third_party/WebKit/Source/core/dom/Document.cpp
+++ b/third_party/WebKit/Source/core/dom/Document.cpp
@@ -407,7 +407,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);
}
@@ -504,7 +504,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());
@@ -6402,13 +6402,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)
ojan 2016/11/22 00:41:59 I think this means that passing WouldLoadNoParent
dgrogan 2016/11/29 00:57:32 Intentional; it's simpler to subtract in the postp
+ recordLoadReasonToHistogram(static_cast<WouldLoadReason>(i));
m_wouldLoadReason = reason;
}

Powered by Google App Engine
This is Rietveld 408576698