| Index: Source/core/loader/FrameLoader.cpp
|
| diff --git a/Source/core/loader/FrameLoader.cpp b/Source/core/loader/FrameLoader.cpp
|
| index 03b94885b301a99c993018541c79dd8b9e7160d3..e01198cdeb4ee1616956d3a34c0929078e904a76 100644
|
| --- a/Source/core/loader/FrameLoader.cpp
|
| +++ b/Source/core/loader/FrameLoader.cpp
|
| @@ -243,10 +243,8 @@ bool FrameLoader::closeURL()
|
| void FrameLoader::didExplicitOpen()
|
| {
|
| // Calling document.open counts as committing the first real document load.
|
| - if (!m_stateMachine.committedFirstRealDocumentLoad()) {
|
| + if (!m_stateMachine.committedFirstRealDocumentLoad())
|
| m_stateMachine.advanceTo(FrameLoaderStateMachine::CommittedFirstRealLoad);
|
| - m_progressTracker->progressStarted();
|
| - }
|
|
|
| // Prevent window.open(url) -- eg window.open("about:blank") -- from blowing away results
|
| // from a subsequent window.document.open / window.document.write call.
|
| @@ -963,7 +961,6 @@ FrameLoadType FrameLoader::loadType() const
|
| return m_loadType;
|
| }
|
|
|
| -#if defined(ENABLE_LOAD_COMPLETION_HACKS)
|
| // This function is an incomprehensible mess and is only used in checkLoadCompleteForThisFrame.
|
| // If you're thinking of using it elsewhere, stop right now and reconsider your life.
|
| static bool isDocumentDoneLoading(Document* document)
|
| @@ -972,15 +969,18 @@ static bool isDocumentDoneLoading(Document* document)
|
| return true;
|
| if (document->loader()->isLoadingMainResource())
|
| return false;
|
| - if (!document->loadEventFinished())
|
| - return false;
|
| + if (!document->loadEventFinished()) {
|
| + if (document->loader()->isLoading() || document->isDelayingLoadEvent())
|
| + return false;
|
| + }
|
| if (document->fetcher()->requestCount())
|
| return false;
|
| if (document->processingLoadEvent())
|
| return false;
|
| + if (document->hasActiveParser())
|
| + return false;
|
| return true;
|
| }
|
| -#endif
|
|
|
| bool FrameLoader::checkLoadCompleteForThisFrame()
|
| {
|
| @@ -1016,16 +1016,8 @@ bool FrameLoader::checkLoadCompleteForThisFrame()
|
| return true;
|
| if (m_provisionalDocumentLoader || !m_documentLoader)
|
| return false;
|
| -
|
| -#if defined(ENABLE_LOAD_COMPLETION_HACKS)
|
| if (!isDocumentDoneLoading(m_frame->document()) && !m_inStopAllLoaders)
|
| return false;
|
| -#else
|
| - if (m_inStopAllLoaders)
|
| - m_frame->document()->suppressLoadEvent();
|
| - if (!m_frame->document()->loadEventFinished())
|
| - return false;
|
| -#endif
|
|
|
| m_state = FrameStateComplete;
|
|
|
| @@ -1284,8 +1276,6 @@ void FrameLoader::loadWithNavigationAction(const NavigationAction& action, Frame
|
| if ((!m_policyDocumentLoader->shouldContinueForNavigationPolicy(request, shouldCheckMainWorldContentSecurityPolicy, isTransitionNavigation) || !shouldClose()) && m_policyDocumentLoader) {
|
| m_policyDocumentLoader->detachFromFrame();
|
| m_policyDocumentLoader = nullptr;
|
| - if (!m_stateMachine.committedFirstRealDocumentLoad())
|
| - m_state = FrameStateComplete;
|
| checkCompleted();
|
| return;
|
| }
|
|
|