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 68831e29a0776cb5956f332bd655788707103e60..d927b74d072b8c5b85b34ee3a5a360f3c81ca6b8 100644 |
--- a/third_party/WebKit/Source/core/loader/FrameLoader.cpp |
+++ b/third_party/WebKit/Source/core/loader/FrameLoader.cpp |
@@ -225,6 +225,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. |
+ 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. |
@@ -672,11 +676,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()) |
- return false; |
- |
// Don't send didFinishLoad more than once per DocumentLoader. |
if (frame->loader().documentLoader()->sentDidFinishLoad()) |
return false; |
@@ -1468,19 +1467,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(); |
} 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(); |