Index: third_party/WebKit/Source/core/loader/FrameLoader.cpp |
diff --git a/third_party/WebKit/Source/core/loader/FrameLoader.cpp b/third_party/WebKit/Source/core/loader/FrameLoader.cpp |
index 4cbd51bfa9ecb2615c9f93bd6a81801b4e308834..7f93747776577d9cf55e0cfc3eaa669095408cd2 100644 |
--- a/third_party/WebKit/Source/core/loader/FrameLoader.cpp |
+++ b/third_party/WebKit/Source/core/loader/FrameLoader.cpp |
@@ -226,6 +226,10 @@ void FrameLoader::init() { |
m_frame->document()->cancelParsing(); |
m_stateMachine.advanceTo( |
FrameLoaderStateMachine::DisplayingInitialEmptyDocument); |
+ // Suppress finish notifications for inital empty documents, since they don't |
+ // generate start notifications. |
dcheng
2016/12/14 23:01:28
Unrelated, but do you think it'd be problematic to
Nate Chapin
2016/12/14 23:59:18
Extensions might inject content scripts into initi
|
+ if (m_documentLoader) |
+ m_documentLoader->setSentDidFinishLoad(); |
// Self-suspend if created in an already suspended Page. Note that both |
// startLoadingMainResource() and cancelParsing() may have already detached |
// the frame, since they both fire JS events. |
@@ -673,11 +677,6 @@ static bool shouldComplete(Document* document) { |
} |
static bool shouldSendFinishNotification(LocalFrame* frame) { |
- // Don't send stop notifications for inital empty documents, since they don't |
- // generate start notifications. |
- if (!frame->loader().stateMachine()->committedFirstRealDocumentLoad()) |
Nate Chapin
2016/12/12 21:40:38
setSentDidFinishLoad() in init() instead.
|
- return false; |
- |
// Don't send didFinishLoad more than once per DocumentLoader. |
if (frame->loader().documentLoader()->sentDidFinishLoad()) |
return false; |
@@ -1469,19 +1468,18 @@ void FrameLoader::loadFailed(DocumentLoader* loader, |
HistoryCommitType historyCommitType = loadTypeToCommitType(m_loadType); |
if (loader == m_provisionalDocumentLoader) { |
+ m_provisionalDocumentLoader->setSentDidFinishLoad(); |
client()->dispatchDidFailProvisionalLoad(error, historyCommitType); |
if (loader != m_provisionalDocumentLoader) |
return; |
detachDocumentLoader(m_provisionalDocumentLoader); |
- m_progressTracker->progressCompleted(); |
Nate Chapin
2016/12/12 21:40:38
progressCompleted() should be called if appropriat
dcheng
2016/12/14 23:01:28
Seems subtle, but I agree this should work.
|
} else { |
DCHECK_EQ(loader, m_documentLoader); |
if (m_frame->document()->parser()) |
m_frame->document()->parser()->stopParsing(); |
- m_documentLoader->setSentDidFinishLoad(); |
- if (!m_provisionalDocumentLoader && m_frame->isLoading()) { |
+ if (!m_documentLoader->sentDidFinishLoad()) { |
+ m_documentLoader->setSentDidFinishLoad(); |
client()->dispatchDidFailLoad(error, historyCommitType); |
- m_progressTracker->progressCompleted(); |
} |
} |
checkCompleted(); |