summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael BrĂ¼ning <michael.bruning@theqtcompany.com>2016-03-01 10:55:34 +0100
committerMichael BrĂ¼ning <michael.bruning@theqtcompany.com>2016-04-05 12:15:27 +0000
commit29f9a2fb68568208a70ba9efef0e455b50a4d3e3 (patch)
tree9429b1ee58fc3cd555ca447c9f0956bd6ce9163f /src
parenta5c0578ba9de0032c80be52106884f81e18ab06b (diff)
Register qrc as local after blink initialization.
It is needed to let local content access the qrc resources by making them part of the same security origin. This is stated in the docs as the default behavior. This also backports change f7d343000d77c80f34a115fe9c78f101929292b1 from 5.7, which fixed some race condition with the qrc registration. Task-number: QTBUG-52085 Change-Id: Ia704fa6dbce8529f82695ab543244020cb9f8b8a Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/core/renderer/content_renderer_client_qt.cpp18
-rw-r--r--src/core/renderer/content_renderer_client_qt.h5
2 files changed, 20 insertions, 3 deletions
diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp
index 261b9c581..e53076525 100644
--- a/src/core/renderer/content_renderer_client_qt.cpp
+++ b/src/core/renderer/content_renderer_client_qt.cpp
@@ -65,6 +65,19 @@ namespace QtWebEngineCore {
static const char kHttpErrorDomain[] = "http";
static const char kQrcSchemeQt[] = "qrc";
+class RenderProcessObserverQt : public content::RenderProcessObserver {
+public:
+ void WebKitInitialized() override
+ {
+ // Can only be done after blink is initialized.
+ blink::WebString qrcScheme(base::ASCIIToUTF16(kQrcSchemeQt));
+ // mark qrc as a secure scheme (avoids deprecation warnings)
+ blink::WebSecurityPolicy::registerURLSchemeAsSecure(qrcScheme);
+ // mark qrc as a local scheme (allows local access to qrc)
+ blink::WebSecurityPolicy::registerURLSchemeAsLocal(qrcScheme);
+ }
+};
+
ContentRendererClientQt::ContentRendererClientQt()
{
}
@@ -79,12 +92,11 @@ void ContentRendererClientQt::RenderThreadStarted()
renderThread->RegisterExtension(WebChannelIPCTransport::getV8Extension());
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(UserScriptController::instance());
-
- // mark qrc as a secure scheme (avoids deprecation warnings)
- blink::WebSecurityPolicy::registerURLSchemeAsSecure(blink::WebString::fromLatin1(kQrcSchemeQt));
+ renderThread->AddObserver(m_renderProcessObserver.data());
}
void ContentRendererClientQt::RenderViewCreated(content::RenderView* render_view)
diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h
index eb55156ad..7df824e3e 100644
--- a/src/core/renderer/content_renderer_client_qt.h
+++ b/src/core/renderer/content_renderer_client_qt.h
@@ -41,6 +41,10 @@
#include <QtGlobal>
#include <QScopedPointer>
+namespace content {
+class RenderProcessObserver;
+}
+
namespace visitedlink {
class VisitedLinkSlave;
}
@@ -69,6 +73,7 @@ public:
private:
QScopedPointer<visitedlink::VisitedLinkSlave> m_visitedLinkSlave;
QScopedPointer<web_cache::WebCacheRenderProcessObserver> m_webCacheObserver;
+ QScopedPointer<content::RenderProcessObserver> m_renderProcessObserver;
};
} // namespace