diff options
author | Viktor Engelmann <viktor.engelmann@qt.io> | 2016-09-14 14:41:16 +0200 |
---|---|---|
committer | Viktor Engelmann <viktor.engelmann@qt.io> | 2016-12-15 11:02:36 +0000 |
commit | 794606237796b976f9cede7bfdc218e4de6a42ec (patch) | |
tree | 123aa16a3e89049a466f2e81efeb959ddd769ff5 /src | |
parent | 4896ce945f38268febee67868b725ec406621b1f (diff) |
Make QQuickWebEngineNewViewRequest::requestedUrl readable for QML
Added Q_PROPERTY and getter for
QQuickWebEngineNewViewRequest::m_requestedUrl
so that it can be read from QML.
Task-number: QTBUG-55590
Change-Id: I39e89690f996a1db7c9ce39103429186b26811f8
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/web_contents_adapter.cpp | 16 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginenewviewrequest.cpp | 10 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginenewviewrequest_p.h | 2 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 2 | ||||
-rw-r--r-- | src/webengine/plugin/plugin.cpp | 1 |
5 files changed, 24 insertions, 7 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 80b2cdb81..abf9aa3a3 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -565,15 +565,17 @@ QUrl WebContentsAdapter::activeUrl() const QUrl WebContentsAdapter::requestedUrl() const { Q_D(const WebContentsAdapter); - content::NavigationEntry* entry = d->webContents->GetController().GetVisibleEntry(); - content::NavigationEntry* pendingEntry = d->webContents->GetController().GetPendingEntry(); + if (d->webContents) { + content::NavigationEntry* entry = d->webContents->GetController().GetVisibleEntry(); + content::NavigationEntry* pendingEntry = d->webContents->GetController().GetPendingEntry(); - if (entry) { - if (!entry->GetOriginalRequestURL().is_empty()) - return toQt(entry->GetOriginalRequestURL()); + if (entry) { + if (!entry->GetOriginalRequestURL().is_empty()) + return toQt(entry->GetOriginalRequestURL()); - if (pendingEntry && pendingEntry == entry) - return toQt(entry->GetURL()); + if (pendingEntry && pendingEntry == entry) + return toQt(entry->GetURL()); + } } return QUrl(); } diff --git a/src/webengine/api/qquickwebenginenewviewrequest.cpp b/src/webengine/api/qquickwebenginenewviewrequest.cpp index 36df9023a..e0307ad41 100644 --- a/src/webengine/api/qquickwebenginenewviewrequest.cpp +++ b/src/webengine/api/qquickwebenginenewviewrequest.cpp @@ -72,6 +72,16 @@ QQuickWebEngineView::NewViewDestination QQuickWebEngineNewViewRequest::destinati } /*! + \qmlproperty QUrl WebEngineNewViewRequest::requestedUrl + The URL that is requested by the page. + \since QtWebEngine 1.6 + */ +QUrl QQuickWebEngineNewViewRequest::requestedUrl() const +{ + return m_requestedUrl; +} + +/*! \qmlproperty bool WebEngineNewViewRequest::userInitiated Whether this window request was directly triggered as the result of a keyboard or mouse event. diff --git a/src/webengine/api/qquickwebenginenewviewrequest_p.h b/src/webengine/api/qquickwebenginenewviewrequest_p.h index fd7fc42f4..9cc0f291f 100644 --- a/src/webengine/api/qquickwebenginenewviewrequest_p.h +++ b/src/webengine/api/qquickwebenginenewviewrequest_p.h @@ -63,11 +63,13 @@ QT_BEGIN_NAMESPACE class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineNewViewRequest : public QObject { Q_OBJECT Q_PROPERTY(QQuickWebEngineView::NewViewDestination destination READ destination CONSTANT FINAL) + Q_PROPERTY(QUrl requestedUrl READ requestedUrl CONSTANT REVISION 1 FINAL) Q_PROPERTY(bool userInitiated READ isUserInitiated CONSTANT FINAL) public: ~QQuickWebEngineNewViewRequest(); QQuickWebEngineView::NewViewDestination destination() const; + QUrl requestedUrl() const; bool isUserInitiated() const; Q_INVOKABLE void openIn(QQuickWebEngineView *view); diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index f0811014b..fbd3ef9ed 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -595,6 +595,8 @@ void QQuickWebEngineViewPrivate::adoptNewWindow(QSharedPointer<WebContentsAdapte // to start loading it and possibly return it to its parent page window.open(). request.m_adapter = newWebContents; request.m_isUserInitiated = userGesture; + if (newWebContents) + request.m_requestedUrl = newWebContents->requestedUrl(); switch (disposition) { case WebContentsAdapterClient::NewForegroundTabDisposition: diff --git a/src/webengine/plugin/plugin.cpp b/src/webengine/plugin/plugin.cpp index 49f7b38a8..f973336f0 100644 --- a/src/webengine/plugin/plugin.cpp +++ b/src/webengine/plugin/plugin.cpp @@ -101,6 +101,7 @@ public: qmlRegisterUncreatableType<QQuickWebEngineDownloadItem, 4>(uri, 1, 5, "WebEngineDownloadItem", tr("Cannot create a separate instance of WebEngineDownloadItem")); qmlRegisterUncreatableType<QQuickWebEngineNewViewRequest>(uri, 1, 1, "WebEngineNewViewRequest", msgUncreatableType("WebEngineNewViewRequest")); + qmlRegisterUncreatableType<QQuickWebEngineNewViewRequest, 1>(uri, 1, 2, "WebEngineNewViewRequest", tr("Cannot create separate instance of WebEngineNewViewRequest")); qmlRegisterUncreatableType<QQuickWebEngineSettings>(uri, 1, 1, "WebEngineSettings", tr("Cannot create a separate instance of WebEngineSettings")); qmlRegisterUncreatableType<QQuickWebEngineSettings, 1>(uri, 1, 2, "WebEngineSettings", tr("Cannot create a separate instance of WebEngineSettings")); qmlRegisterUncreatableType<QQuickWebEngineSettings, 2>(uri, 1, 3, "WebEngineSettings", tr("Cannot create a separate instance of WebEngineSettings")); |