| Index: third_party/WebKit/Source/core/loader/DocumentLoader.cpp
|
| diff --git a/third_party/WebKit/Source/core/loader/DocumentLoader.cpp b/third_party/WebKit/Source/core/loader/DocumentLoader.cpp
|
| index 7a1df5ccd343bea28e7181b025e4d959136b7ae6..a9e58711eddba3395cba873a3c41e80cb9e7ef67 100644
|
| --- a/third_party/WebKit/Source/core/loader/DocumentLoader.cpp
|
| +++ b/third_party/WebKit/Source/core/loader/DocumentLoader.cpp
|
| @@ -451,15 +451,8 @@ void DocumentLoader::ensureWriter(const AtomicString& mimeType, const KURL& over
|
| if ((m_substituteData.isValid() && m_substituteData.forceSynchronousLoad()) || !Document::threadedParsingEnabledForTesting())
|
| parsingPolicy = ForceSynchronousParsing;
|
|
|
| - m_writer = createWriterFor(init, mimeType, encoding, false, parsingPolicy);
|
| + m_writer = createWriterFor(init, mimeType, encoding, false, parsingPolicy, overridingURL);
|
| m_writer->setDocumentWasLoadedAsPartOfNavigation();
|
| -
|
| - // This should be set before receivedFirstData().
|
| - if (!overridingURL.isEmpty())
|
| - m_frame->document()->setBaseURLOverride(overridingURL);
|
| -
|
| - // Call receivedFirstData() exactly once per load.
|
| - frameLoader()->receivedFirstData();
|
| m_frame->document()->maybeHandleHttpRefresh(m_response.httpHeaderField(HTTPNames::Refresh), Document::HttpRefreshFromHeader);
|
| }
|
|
|
| @@ -660,7 +653,7 @@ void DocumentLoader::endWriting(DocumentWriter* writer)
|
| m_writer.clear();
|
| }
|
|
|
| -DocumentWriter* DocumentLoader::createWriterFor(const DocumentInit& init, const AtomicString& mimeType, const AtomicString& encoding, bool dispatch, ParserSynchronizationPolicy parsingPolicy)
|
| +DocumentWriter* DocumentLoader::createWriterFor(const DocumentInit& init, const AtomicString& mimeType, const AtomicString& encoding, bool dispatchWindowObjectAvailable, ParserSynchronizationPolicy parsingPolicy, const KURL& overridingURL)
|
| {
|
| LocalFrame* frame = init.frame();
|
|
|
| @@ -672,7 +665,18 @@ DocumentWriter* DocumentLoader::createWriterFor(const DocumentInit& init, const
|
|
|
| Document* document = frame->localDOMWindow()->installNewDocument(mimeType, init);
|
|
|
| - frame->loader().didBeginDocument(dispatch);
|
| + // This should be set before receivedFirstData().
|
| + if (!overridingURL.isEmpty())
|
| + frame->document()->setBaseURLOverride(overridingURL);
|
| +
|
| + frame->loader().didInstallNewDocument(dispatchWindowObjectAvailable);
|
| +
|
| + // This must be called before DocumentWriter is created, otherwise HTML parser
|
| + // will use stale values from HTMLParserOption.
|
| + if (!dispatchWindowObjectAvailable)
|
| + frame->loader().receivedFirstData();
|
| +
|
| + frame->loader().didBeginDocument();
|
|
|
| return DocumentWriter::create(document, parsingPolicy, mimeType, encoding);
|
| }
|
|
|