summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-03-01 10:55:34 +0100
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-03-07 17:08:36 +0000
commitf7d343000d77c80f34a115fe9c78f101929292b1 (patch)
treedcc6d7d5513e6883e069d9dac965854194fb6a53
parent29b4aa9dda40ac3761c856093bf8e27f7e4b2d15 (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>
-rw-r--r--src/core/renderer/content_renderer_client_qt.cpp14
-rw-r--r--src/core/renderer/content_renderer_client_qt.h5
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