diff options
author | Michal Klocek <michal.klocek@qt.io> | 2018-08-01 15:04:35 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2018-08-09 09:39:56 +0000 |
commit | db62139e1daea171e08d95592c63f663789d6391 (patch) | |
tree | ddce513a2e74bf656466a6f83b57a8efbd3cbe18 /src/core | |
parent | e50fb187dc4467ac28a724e6ea9f2d51a1f131ba (diff) |
Make WebChannel an optional feature
Add webengine-webchannel feature.
Change-Id: I600572180f8169aafe79cf0408527cc087d9a007
Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/configure.json | 9 | ||||
-rw-r--r-- | src/core/core_chromium.pri | 12 | ||||
-rw-r--r-- | src/core/core_common.pri | 3 | ||||
-rw-r--r-- | src/core/renderer/content_renderer_client_qt.cpp | 4 | ||||
-rw-r--r-- | src/core/web_contents_adapter.cpp | 11 | ||||
-rw-r--r-- | src/core/web_contents_adapter.h | 4 |
6 files changed, 36 insertions, 7 deletions
diff --git a/src/core/configure.json b/src/core/configure.json index 3eb30dd74..aaebcc4a8 100644 --- a/src/core/configure.json +++ b/src/core/configure.json @@ -23,6 +23,7 @@ "webengine-webrtc": "boolean", "webengine-geolocation": "boolean", "webengine-v8-snapshot": "boolean", + "webengine-webchannel": "boolean", "alsa": { "type": "boolean", "name": "webengine-alsa" }, "pulseaudio": { "type": "boolean", "name": "webengine-pulseaudio" }, "ffmpeg": { "type": "enum", "name": "webengine-system-ffmpeg", "values": { "system": "yes", "qt": "no" } }, @@ -509,6 +510,13 @@ "autoDetect": "!features.webengine-embedded-build", "output": [ "privateFeature" ] }, + "webengine-webchannel": { + "label": "WebChannel support", + "purpose": "Provides QtWebChannel integration.", + "section": "WebEngine", + "condition": "module.webchannel", + "output": [ "publicFeature" ] + }, "webengine-proprietary-codecs": { "label": "Proprietary Codecs", "purpose": "Enables the use of proprietary codecs such as h.264/h.265 and MP3.", @@ -680,6 +688,7 @@ "webengine-webrtc", "webengine-system-ninja", "webengine-geolocation", + "webengine-webchannel", "webengine-v8-snapshot", { "type": "feature", diff --git a/src/core/core_chromium.pri b/src/core/core_chromium.pri index ef81988dc..a3f9f5c80 100644 --- a/src/core/core_chromium.pri +++ b/src/core/core_chromium.pri @@ -105,9 +105,7 @@ SOURCES = \ renderer/render_frame_observer_qt.cpp \ renderer/render_view_observer_qt.cpp \ renderer/user_resource_controller.cpp \ - renderer/web_channel_ipc_transport.cpp \ renderer_host/user_resource_controller_host.cpp \ - renderer_host/web_channel_ipc_transport_host.cpp \ resource_bundle_qt.cpp \ resource_context_qt.cpp \ service/service_qt.cpp \ @@ -198,9 +196,7 @@ HEADERS = \ renderer/render_frame_observer_qt.h \ renderer/render_view_observer_qt.h \ renderer/user_resource_controller.h \ - renderer/web_channel_ipc_transport.h \ renderer_host/user_resource_controller_host.h \ - renderer_host/web_channel_ipc_transport_host.h \ request_controller.h \ resource_context_qt.h \ service/service_qt.h \ @@ -275,3 +271,11 @@ qtConfig(webengine-geolocation) { SOURCES += location_provider_qt.cpp HEADERS += location_provider_qt.h } + +qtConfig(webengine-webchannel) { + HEADERS += renderer/web_channel_ipc_transport.h \ + renderer_host/web_channel_ipc_transport_host.h + + SOURCES += renderer/web_channel_ipc_transport.cpp \ + renderer_host/web_channel_ipc_transport_host.cpp +} diff --git a/src/core/core_common.pri b/src/core/core_common.pri index 3ce53bba4..0c3e69e15 100644 --- a/src/core/core_common.pri +++ b/src/core/core_common.pri @@ -2,7 +2,8 @@ # gyp/ninja will take care of the compilation, qmake/make will finish with linking and install. TARGET = QtWebEngineCore -QT += qml quick webchannel +QT += qml quick QT_PRIVATE += quick-private gui-private core-private webenginecoreheaders-private qtConfig(webengine-geolocation): QT += positioning +qtConfig(webengine-webchannel): QT += webchannel diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp index 79c2294de..e9f404cb1 100644 --- a/src/core/renderer/content_renderer_client_qt.cpp +++ b/src/core/renderer/content_renderer_client_qt.cpp @@ -80,7 +80,9 @@ #include "renderer/render_frame_observer_qt.h" #include "renderer/render_view_observer_qt.h" #include "renderer/user_resource_controller.h" +#if QT_CONFIG(webengine_webchannel) #include "renderer/web_channel_ipc_transport.h" +#endif #include "services/service_manager/public/cpp/binder_registry.h" #include "services/service_manager/public/cpp/connector.h" @@ -141,8 +143,10 @@ void ContentRendererClientQt::RenderViewCreated(content::RenderView* render_view void ContentRendererClientQt::RenderFrameCreated(content::RenderFrame* render_frame) { new QtWebEngineCore::RenderFrameObserverQt(render_frame); +#if QT_CONFIG(webengine_webchannel) if (render_frame->IsMainFrame()) new WebChannelIPCTransport(render_frame); +#endif UserResourceController::instance()->renderFrameCreated(render_frame); new QtWebEngineCore::ContentSettingsObserverQt(render_frame); diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index ec1416010..e65ab9d07 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -52,7 +52,6 @@ #include "printing/print_view_manager_qt.h" #include "profile_qt.h" #include "qwebenginecallback_p.h" -#include "renderer_host/web_channel_ipc_transport_host.h" #include "render_view_observer_host_qt.h" #include "type_conversion.h" #include "web_contents_view_qt.h" @@ -87,6 +86,11 @@ #include "ui/base/clipboard/custom_data_helper.h" #include "ui/gfx/font_render_params.h" +#if QT_CONFIG(webengine_webchannel) +#include "renderer_host/web_channel_ipc_transport_host.h" +#include <QtWebChannel/QWebChannel> +#endif + #include <QDir> #include <QGuiApplication> #include <QPageLayout> @@ -100,7 +104,6 @@ #include <QtGui/qaccessible.h> #include <QtGui/qdrag.h> #include <QtGui/qpixmap.h> -#include <QtWebChannel/QWebChannel> namespace QtWebEngineCore { @@ -386,8 +389,10 @@ QSharedPointer<WebContentsAdapter> WebContentsAdapter::createFromSerializedNavig WebContentsAdapter::WebContentsAdapter(content::WebContents *webContents) : m_profileAdapter(nullptr) , m_webContents(webContents) +#if QT_CONFIG(webengine_webchannel) , m_webChannel(nullptr) , m_webChannelWorld(0) +#endif , m_adapterClient(nullptr) , m_nextRequestId(CallbackDirectory::ReservedCallbackIdsEnd) , m_lastFindRequestId(0) @@ -1270,6 +1275,7 @@ content::WebContents *WebContentsAdapter::webContents() const return m_webContents.get(); } +#if QT_CONFIG(webengine_webchannel) QWebChannel *WebContentsAdapter::webChannel() const { return m_webChannel; @@ -1299,6 +1305,7 @@ void WebContentsAdapter::setWebChannel(QWebChannel *channel, uint worldId) } channel->connectTo(m_webChannelTransport.get()); } +#endif #if QT_CONFIG(draganddrop) static QMimeData *mimeDataFromDropData(const content::DropData &dropData) diff --git a/src/core/web_contents_adapter.h b/src/core/web_contents_adapter.h index b367c9fcb..bd2ca4b23 100644 --- a/src/core/web_contents_adapter.h +++ b/src/core/web_contents_adapter.h @@ -190,8 +190,10 @@ public: QAccessibleInterface *browserAccessible(); ProfileQt* profile(); ProfileAdapter* profileAdapter(); +#if QT_CONFIG(webengine_webchannel) QWebChannel *webChannel() const; void setWebChannel(QWebChannel *, uint worldId); +#endif FaviconManager *faviconManager(); QPointF lastScrollOffset() const; @@ -230,9 +232,11 @@ private: std::unique_ptr<content::WebContents> m_webContents; std::unique_ptr<WebContentsDelegateQt> m_webContentsDelegate; std::unique_ptr<RenderViewObserverHostQt> m_renderViewObserverHost; +#if QT_CONFIG(webengine_webchannel) std::unique_ptr<WebChannelIPCTransportHost> m_webChannelTransport; QWebChannel *m_webChannel; unsigned int m_webChannelWorld; +#endif WebContentsAdapterClient *m_adapterClient; quint64 m_nextRequestId; int m_lastFindRequestId; |