diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-03-01 10:55:34 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-03-07 17:08:36 +0000 |
commit | f7d343000d77c80f34a115fe9c78f101929292b1 (patch) | |
tree | dcc6d7d5513e6883e069d9dac965854194fb6a53 /src/core/renderer | |
parent | 29b4aa9dda40ac3761c856093bf8e27f7e4b2d15 (diff) |
Register qrc as secure after blink initialization
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 <michael.bruning@theqtcompany.com>
Diffstat (limited to 'src/core/renderer')
-rw-r--r-- | src/core/renderer/content_renderer_client_qt.cpp | 14 | ||||
-rw-r--r-- | src/core/renderer/content_renderer_client_qt.h | 5 |
2 files changed, 17 insertions, 2 deletions
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 <QtGlobal> #include <QScopedPointer> +namespace content { +class RenderProcessObserver; +} + namespace visitedlink { class VisitedLinkSlave; } @@ -75,6 +79,7 @@ public: private: QScopedPointer<visitedlink::VisitedLinkSlave> m_visitedLinkSlave; QScopedPointer<web_cache::WebCacheRenderProcessObserver> m_webCacheObserver; + QScopedPointer<content::RenderProcessObserver> m_renderProcessObserver; #if defined(ENABLE_SPELLCHECK) QScopedPointer<SpellCheck> m_spellCheck; #endif |