From ebe4b5da40d8784351821ae0ba173f357bb519f8 Mon Sep 17 00:00:00 2001 From: Pierre Rossi Date: Thu, 12 Feb 2015 16:43:23 +0100 Subject: Move webChannel property out of experimental Add a notify signal to go with the setter. Parent the default-provided channel to the view. Comes with basic documentation. Change-Id: I2bde8153df5928fc92ac36b7fa4d4b3b1da22f53 Reviewed-by: Andras Becsi --- src/webengine/api/qquickwebengineview.cpp | 34 +++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) (limited to 'src/webengine/api/qquickwebengineview.cpp') diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index a47defb7c..e70e7f790 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -812,21 +812,39 @@ QQuickWebEngineHistory *QQuickWebEngineViewExperimental::navigationHistory() con return d_ptr->m_history.data(); } -QQmlWebChannel *QQuickWebEngineViewExperimental::webChannel() const +/*! + * \qmlproperty QQmlWebChannel WebEngineView::webChannel + * \since QtWebEngine 1.1 + * + * The web channel instance used by this view. + * This channel is automatically using the internal QtWebEngine transport mechanism over Chromium IPC, + * and exposed in the javascript context of the page it is rendering as \c navigator.qtWebChannelTransport. + * This transport object is used when instantiating the JavaScript counterpart of QWebChannel using + * the \l{Qt WebChannel JavaScript API}. + * + * \note The view does not take ownership when explicitly setting a webChannel object. + */ + +QQmlWebChannel *QQuickWebEngineView::webChannel() { - d_ptr->ensureContentsAdapter(); - QQmlWebChannel *qmlWebChannel = qobject_cast(d_ptr->adapter->webChannel()); - Q_ASSERT(!d_ptr->adapter->webChannel() || qmlWebChannel); + Q_D(QQuickWebEngineView); + d->ensureContentsAdapter(); + QQmlWebChannel *qmlWebChannel = qobject_cast(d->adapter->webChannel()); + Q_ASSERT(!d->adapter->webChannel() || qmlWebChannel); if (!qmlWebChannel) { - qmlWebChannel = new QQmlWebChannel; - d_ptr->adapter->setWebChannel(qmlWebChannel); + qmlWebChannel = new QQmlWebChannel(this); + d->adapter->setWebChannel(qmlWebChannel); } return qmlWebChannel; } -void QQuickWebEngineViewExperimental::setWebChannel(QQmlWebChannel *webChannel) +void QQuickWebEngineView::setWebChannel(QQmlWebChannel *webChannel) { - d_ptr->adapter->setWebChannel(webChannel); + Q_D(QQuickWebEngineView); + bool notify = (d->adapter->webChannel() == webChannel); + d->adapter->setWebChannel(webChannel); + if (notify) + Q_EMIT webChannelChanged(); } void QQuickWebEngineViewExperimental::grantFeaturePermission(const QUrl &securityOrigin, QQuickWebEngineViewExperimental::Feature feature, bool granted) -- cgit v1.2.1