diff options
author | Konstantin Tokarev <annulen@yandex.ru> | 2017-06-01 15:54:01 +0300 |
---|---|---|
committer | Konstantin Tokarev <annulen@yandex.ru> | 2017-06-02 14:07:43 +0000 |
commit | 0a3506ebe5d7f431f0dd4dffa24ac32063b90ff1 (patch) | |
tree | f3d0b92fe7bc5b31426a838c354616fff335e82b /Source/WebCore/loader | |
parent | 881da28418d380042aa95a97f0cbd42560a64f7c (diff) | |
download | qtwebkit-0a3506ebe5d7f431f0dd4dffa24ac32063b90ff1.tar.gz |
Import WebKit commit 3ca7a25a550e473d60bbbe321475c6c0ef114b31
Change-Id: I480668a0cb8114dccf7a1195190a993282875759
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'Source/WebCore/loader')
-rw-r--r-- | Source/WebCore/loader/DocumentThreadableLoader.cpp | 8 | ||||
-rw-r--r-- | Source/WebCore/loader/FrameLoader.cpp | 6 | ||||
-rw-r--r-- | Source/WebCore/loader/FrameLoader.h | 2 | ||||
-rw-r--r-- | Source/WebCore/loader/FrameLoaderStateMachine.h | 2 | ||||
-rw-r--r-- | Source/WebCore/loader/HistoryController.cpp | 2 | ||||
-rw-r--r-- | Source/WebCore/loader/LoaderStrategy.cpp | 10 | ||||
-rw-r--r-- | Source/WebCore/loader/LoaderStrategy.h | 6 | ||||
-rw-r--r-- | Source/WebCore/loader/WorkerThreadableLoader.cpp | 3 | ||||
-rw-r--r-- | Source/WebCore/loader/icon/IconDatabaseBase.h | 1 |
9 files changed, 16 insertions, 24 deletions
diff --git a/Source/WebCore/loader/DocumentThreadableLoader.cpp b/Source/WebCore/loader/DocumentThreadableLoader.cpp index 63cf08d01..731d2e844 100644 --- a/Source/WebCore/loader/DocumentThreadableLoader.cpp +++ b/Source/WebCore/loader/DocumentThreadableLoader.cpp @@ -401,8 +401,12 @@ void DocumentThreadableLoader::loadRequest(const ResourceRequest& request, Secur ResourceError error; ResourceResponse response; unsigned long identifier = std::numeric_limits<unsigned long>::max(); - if (m_document.frame()) - identifier = m_document.frame()->loader().loadResourceSynchronously(request, m_options.allowCredentials(), m_options.clientCredentialPolicy(), error, response, data); + if (m_document.frame()) { + auto& frameLoader = m_document.frame()->loader(); + if (!frameLoader.mixedContentChecker().canRunInsecureContent(m_document.securityOrigin(), requestURL)) + return; + identifier = frameLoader.loadResourceSynchronously(request, m_options.allowCredentials(), m_options.clientCredentialPolicy(), error, response, data); + } if (!error.isNull() && response.httpStatusCode() <= 0) { if (requestURL.isLocalFile()) { diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp index 5ca806300..705b0f5a5 100644 --- a/Source/WebCore/loader/FrameLoader.cpp +++ b/Source/WebCore/loader/FrameLoader.cpp @@ -1579,7 +1579,7 @@ void FrameLoader::reload(bool endToEndReload, bool contentBlockersEnabled) void FrameLoader::stopAllLoaders(ClearProvisionalItemPolicy clearProvisionalItemPolicy) { - ASSERT(!m_frame.document() || !m_frame.document()->inPageCache()); + ASSERT(!m_frame.document() || m_frame.document()->pageCacheState() != Document::InPageCache); if (m_pageDismissalEventBeingDispatched != PageDismissalType::None) return; @@ -2081,7 +2081,7 @@ void FrameLoader::open(CachedFrameBase& cachedFrame) clear(document, true, true, cachedFrame.isMainFrame()); - document->setInPageCache(false); + document->setPageCacheState(Document::NotInPageCache); m_needsClear = true; m_isComplete = false; @@ -3100,6 +3100,8 @@ void FrameLoader::continueLoadAfterNewWindowPolicy(const ResourceRequest& reques if (!mainFrame) return; + mainFrame->loader().forceSandboxFlags(frame->loader().effectiveSandboxFlags()); + if (frameName != "_blank") mainFrame->tree().setName(frameName); diff --git a/Source/WebCore/loader/FrameLoader.h b/Source/WebCore/loader/FrameLoader.h index d087341c8..a98f369db 100644 --- a/Source/WebCore/loader/FrameLoader.h +++ b/Source/WebCore/loader/FrameLoader.h @@ -227,7 +227,7 @@ public: bool checkIfFormActionAllowedByCSP(const URL&) const; - Frame* opener(); + WEBCORE_EXPORT Frame* opener(); WEBCORE_EXPORT void setOpener(Frame*); void resetMultipleFormSubmissionProtection(); diff --git a/Source/WebCore/loader/FrameLoaderStateMachine.h b/Source/WebCore/loader/FrameLoaderStateMachine.h index de7f7f835..f2ae631d7 100644 --- a/Source/WebCore/loader/FrameLoaderStateMachine.h +++ b/Source/WebCore/loader/FrameLoaderStateMachine.h @@ -55,7 +55,7 @@ public: WEBCORE_EXPORT bool committingFirstRealLoad() const; bool committedFirstRealDocumentLoad() const; bool creatingInitialEmptyDocument() const; - bool isDisplayingInitialEmptyDocument() const; + WEBCORE_EXPORT bool isDisplayingInitialEmptyDocument() const; WEBCORE_EXPORT bool firstLayoutDone() const; void advanceTo(State); diff --git a/Source/WebCore/loader/HistoryController.cpp b/Source/WebCore/loader/HistoryController.cpp index a33287d41..8f7efe81b 100644 --- a/Source/WebCore/loader/HistoryController.cpp +++ b/Source/WebCore/loader/HistoryController.cpp @@ -265,7 +265,7 @@ void HistoryController::invalidateCurrentItemCachedPage() ASSERT(cachedPage->document() == m_frame.document()); if (cachedPage->document() == m_frame.document()) { - cachedPage->document()->setInPageCache(false); + cachedPage->document()->setPageCacheState(Document::NotInPageCache); cachedPage->clear(); } } diff --git a/Source/WebCore/loader/LoaderStrategy.cpp b/Source/WebCore/loader/LoaderStrategy.cpp index 7fe7631a2..75aae4285 100644 --- a/Source/WebCore/loader/LoaderStrategy.cpp +++ b/Source/WebCore/loader/LoaderStrategy.cpp @@ -34,16 +34,6 @@ LoaderStrategy::~LoaderStrategy() { } -ResourceLoadSuspender::ResourceLoadSuspender() -{ - platformStrategies()->loaderStrategy()->suspendPendingRequests(); -} - -ResourceLoadSuspender::~ResourceLoadSuspender() -{ - platformStrategies()->loaderStrategy()->resumePendingRequests(); -} - } // namespace WebCore diff --git a/Source/WebCore/loader/LoaderStrategy.h b/Source/WebCore/loader/LoaderStrategy.h index 35c0494c5..d01705ca8 100644 --- a/Source/WebCore/loader/LoaderStrategy.h +++ b/Source/WebCore/loader/LoaderStrategy.h @@ -65,12 +65,6 @@ protected: virtual ~LoaderStrategy(); }; -class ResourceLoadSuspender { -public: - ResourceLoadSuspender(); - ~ResourceLoadSuspender(); -}; - } // namespace WebCore #endif // LoaderStrategy_h diff --git a/Source/WebCore/loader/WorkerThreadableLoader.cpp b/Source/WebCore/loader/WorkerThreadableLoader.cpp index bac254f35..4f263c4b3 100644 --- a/Source/WebCore/loader/WorkerThreadableLoader.cpp +++ b/Source/WebCore/loader/WorkerThreadableLoader.cpp @@ -97,7 +97,8 @@ WorkerThreadableLoader::MainThreadBridge::MainThreadBridge(PassRefPtr<Threadable ASSERT(securityOrigin); ASSERT(contentSecurityPolicy); - auto* contentSecurityPolicyCopy = std::make_unique<ContentSecurityPolicy>(*securityOrigin).release(); + + auto* contentSecurityPolicyCopy = std::make_unique<ContentSecurityPolicy>(securityOrigin->isolatedCopy()).release(); contentSecurityPolicyCopy->copyStateFrom(contentSecurityPolicy); StringCapture capturedOutgoingReferrer(outgoingReferrer); diff --git a/Source/WebCore/loader/icon/IconDatabaseBase.h b/Source/WebCore/loader/icon/IconDatabaseBase.h index 025465304..35d20839c 100644 --- a/Source/WebCore/loader/icon/IconDatabaseBase.h +++ b/Source/WebCore/loader/icon/IconDatabaseBase.h @@ -27,6 +27,7 @@ #define IconDatabaseBase_h #include "NativeImagePtr.h" +#include "SharedBuffer.h" #include <wtf/Forward.h> #include <wtf/Noncopyable.h> #include <wtf/PassRefPtr.h> |