From f7d343000d77c80f34a115fe9c78f101929292b1 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Tue, 1 Mar 2016 10:55:34 +0100 Subject: Register qrc as secure after blink initialization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We need blink to be initialized before we can rely on scheme registering to work. This should fix race-conditions of qrc as secure registrations. Change-Id: Icd4334a6ff74671bec2ccc506336d0e073d9ca39 Reviewed-by: Michael BrĂ¼ning --- src/core/renderer/content_renderer_client_qt.cpp | 14 ++++++++++++-- src/core/renderer/content_renderer_client_qt.h | 5 +++++ 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp index 3d235ff0b..04b5e2c22 100644 --- a/src/core/renderer/content_renderer_client_qt.cpp +++ b/src/core/renderer/content_renderer_client_qt.cpp @@ -85,6 +85,16 @@ namespace QtWebEngineCore { static const char kHttpErrorDomain[] = "http"; static const char kQrcSchemeQt[] = "qrc"; +class RenderProcessObserverQt : public content::RenderProcessObserver { +public: + void WebKitInitialized() override + { + // mark qrc as a secure scheme (avoids deprecation warnings) + // Can only be done after blink is initialized. + blink::WebSecurityPolicy::registerURLSchemeAsSecure(blink::WebString::fromLatin1(kQrcSchemeQt)); + } +}; + ContentRendererClientQt::ContentRendererClientQt() { } @@ -98,12 +108,12 @@ void ContentRendererClientQt::RenderThreadStarted() content::RenderThread *renderThread = content::RenderThread::Get(); m_visitedLinkSlave.reset(new visitedlink::VisitedLinkSlave); m_webCacheObserver.reset(new web_cache::WebCacheRenderProcessObserver()); + m_renderProcessObserver.reset(new RenderProcessObserverQt()); renderThread->AddObserver(m_visitedLinkSlave.data()); renderThread->AddObserver(m_webCacheObserver.data()); renderThread->AddObserver(UserResourceController::instance()); + renderThread->AddObserver(m_renderProcessObserver.data()); - // mark qrc as a secure scheme (avoids deprecation warnings) - blink::WebSecurityPolicy::registerURLSchemeAsSecure(blink::WebString::fromLatin1(kQrcSchemeQt)); #if defined(ENABLE_SPELLCHECK) m_spellCheck.reset(new SpellCheck()); renderThread->AddObserver(m_spellCheck.data()); diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h index c80395140..53be90c97 100644 --- a/src/core/renderer/content_renderer_client_qt.h +++ b/src/core/renderer/content_renderer_client_qt.h @@ -44,6 +44,10 @@ #include #include +namespace content { +class RenderProcessObserver; +} + namespace visitedlink { class VisitedLinkSlave; } @@ -75,6 +79,7 @@ public: private: QScopedPointer m_visitedLinkSlave; QScopedPointer m_webCacheObserver; + QScopedPointer m_renderProcessObserver; #if defined(ENABLE_SPELLCHECK) QScopedPointer m_spellCheck; #endif -- cgit v1.2.3