diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-06-28 15:26:45 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-07-06 17:33:05 +0000 |
commit | 05a7dba5c2733b5893fbea8aac89af5df13d53fb (patch) | |
tree | 0e33442d3e946e456323d792219ceb09b8234bc7 /src | |
parent | a060012ecef7ecc60f5518b6718136b22a10dc6b (diff) |
Restore WebEngineNewViewRequest::openIn method
Change-Id: Ib765970d4c57f742a53cd4d2c870b00628d527aa
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
(cherry picked from commit ca4ba8beb736efcd95445cc801e2b5a77642a931)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/api/qwebenginenewwindowrequest.cpp | 4 | ||||
-rw-r--r-- | src/core/api/qwebenginenewwindowrequest.h | 2 | ||||
-rw-r--r-- | src/webenginequick/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/webenginequick/api/qquickwebengineforeigntypes_p.h | 10 | ||||
-rw-r--r-- | src/webenginequick/api/qquickwebenginenewviewrequest.cpp | 77 | ||||
-rw-r--r-- | src/webenginequick/api/qquickwebenginenewviewrequest_p.h | 84 | ||||
-rw-r--r-- | src/webenginequick/api/qquickwebengineview.cpp | 14 | ||||
-rw-r--r-- | src/webenginequick/api/qquickwebengineview_p.h | 3 |
8 files changed, 174 insertions, 21 deletions
diff --git a/src/core/api/qwebenginenewwindowrequest.cpp b/src/core/api/qwebenginenewwindowrequest.cpp index 7ef7601d7..1656bcaef 100644 --- a/src/core/api/qwebenginenewwindowrequest.cpp +++ b/src/core/api/qwebenginenewwindowrequest.cpp @@ -67,8 +67,8 @@ struct QWebEngineNewWindowRequestPrivate /*! \qmltype WebEngineNewViewRequest - \instantiates QWebEngineNewWindowRequest - \inqmlmodule QtWebEngine + \instantiates QQuickWebEngineNewViewRequest + \inqmlmodule QtWebEngineQuick \since QtWebEngine 1.1 \brief A utility type for the WebEngineView::newViewRequested signal. diff --git a/src/core/api/qwebenginenewwindowrequest.h b/src/core/api/qwebenginenewwindowrequest.h index 5af850ebe..89a169722 100644 --- a/src/core/api/qwebenginenewwindowrequest.h +++ b/src/core/api/qwebenginenewwindowrequest.h @@ -78,7 +78,7 @@ public: QRect requestedGeometry() const; bool isUserInitiated() const; -private: +protected: QWebEngineNewWindowRequest(DestinationType, const QRect &, const QUrl &, bool, QSharedPointer<QtWebEngineCore::WebContentsAdapter>, QObject * = nullptr); diff --git a/src/webenginequick/CMakeLists.txt b/src/webenginequick/CMakeLists.txt index c99632764..7c7f9c942 100644 --- a/src/webenginequick/CMakeLists.txt +++ b/src/webenginequick/CMakeLists.txt @@ -25,6 +25,7 @@ qt_internal_add_qml_module(WebEngineQuick api/qquickwebenginedownloadrequest.cpp api/qquickwebenginedownloadrequest_p.h api/qquickwebenginefaviconprovider.cpp api/qquickwebenginefaviconprovider_p_p.h + api/qquickwebenginenewviewrequest.cpp api/qquickwebenginenewviewrequest_p.h api/qquickwebengineprofile.cpp api/qquickwebengineprofile.h api/qquickwebengineprofile_p.h api/qquickwebenginescriptcollection.cpp api/qquickwebenginescriptcollection.h api/qquickwebenginesettings.cpp api/qquickwebenginesettings_p.h diff --git a/src/webenginequick/api/qquickwebengineforeigntypes_p.h b/src/webenginequick/api/qquickwebengineforeigntypes_p.h index 776873500..0cee5f197 100644 --- a/src/webenginequick/api/qquickwebengineforeigntypes_p.h +++ b/src/webenginequick/api/qquickwebengineforeigntypes_p.h @@ -216,16 +216,6 @@ struct ForeignWebEngineFindTextResult QML_UNCREATABLE("") }; -struct ForeignWebEngineNewViewRequest -{ - Q_GADGET - QML_FOREIGN(QWebEngineNewWindowRequest) - QML_NAMED_ELEMENT(WebEngineNewViewRequest) - QML_ADDED_IN_VERSION(1, 1) - QML_EXTRA_VERSION(2, 0) - QML_UNCREATABLE("") -}; - QT_END_NAMESPACE #endif // QQUICKWEBENGINEFOREIGNTYPES_H diff --git a/src/webenginequick/api/qquickwebenginenewviewrequest.cpp b/src/webenginequick/api/qquickwebenginenewviewrequest.cpp new file mode 100644 index 000000000..e2e20f35e --- /dev/null +++ b/src/webenginequick/api/qquickwebenginenewviewrequest.cpp @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qquickwebenginenewviewrequest_p.h" +#include "qquickwebengineview_p.h" + +#include "web_contents_adapter_client.h" + +QT_BEGIN_NAMESPACE + +/*! + \internal +*/ +QQuickWebEngineNewViewRequest::QQuickWebEngineNewViewRequest(DestinationType dest, const QRect &rect, const QUrl &url, + bool user, + QSharedPointer<QtWebEngineCore::WebContentsAdapter> adapter, + QObject *parent) + : QWebEngineNewWindowRequest(dest, rect, url, user, adapter, parent) +{ +} + +/*! + \qmlmethod WebEngineNewViewRequest::openIn(WebEngineView view) + Opens the requested page in the new web engine view \a view. State and history of the + view and the page possibly loaded in it will be lost. + \sa WebEngineView::newViewRequested +*/ + +/*! + \internal +*/ +void QQuickWebEngineNewViewRequest::openIn(QQuickWebEngineView *view) +{ + if (!view) { + qWarning("Trying to open a WebEngineNewViewRequest in an invalid WebEngineView."); + return; + } + view->acceptAsNewView(this); +} + +QT_END_NAMESPACE diff --git a/src/webenginequick/api/qquickwebenginenewviewrequest_p.h b/src/webenginequick/api/qquickwebenginenewviewrequest_p.h new file mode 100644 index 000000000..2ad5a62be --- /dev/null +++ b/src/webenginequick/api/qquickwebenginenewviewrequest_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQUICKWEBENGINENEWVIEWREQUEST_P_H +#define QQUICKWEBENGINENEWVIEWREQUEST_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtWebEngineQuick/private/qtwebenginequickglobal_p.h> +#include <QtWebEngineCore/qwebenginenewwindowrequest.h> +#include <QtQml/qqmlregistration.h> + +QT_BEGIN_NAMESPACE + +class QQuickWebEngineView; + +class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineNewViewRequest : public QWebEngineNewWindowRequest +{ + Q_OBJECT +public: + QML_NAMED_ELEMENT(WebEngineNewViewRequest) + QML_ADDED_IN_VERSION(1, 1) + QML_EXTRA_VERSION(2, 0) + QML_UNCREATABLE("") + + Q_INVOKABLE void openIn(QQuickWebEngineView *); + +private: + QQuickWebEngineNewViewRequest(DestinationType, const QRect &, const QUrl &, bool, + QSharedPointer<QtWebEngineCore::WebContentsAdapter>, + QObject * = nullptr); + + friend class QQuickWebEngineView; + friend class QQuickWebEngineViewPrivate; +}; + +QT_END_NAMESPACE + +#endif // QQUICKWEBENGINENEWVIEWREQUEST_P_H diff --git a/src/webenginequick/api/qquickwebengineview.cpp b/src/webenginequick/api/qquickwebengineview.cpp index 3791d9c6b..7688c38cd 100644 --- a/src/webenginequick/api/qquickwebengineview.cpp +++ b/src/webenginequick/api/qquickwebengineview.cpp @@ -51,6 +51,7 @@ #include "qquickwebengineclientcertificateselection_p.h" #include "qquickwebenginedialogrequests_p.h" #include "qquickwebenginefaviconprovider_p_p.h" +#include "qquickwebenginenewviewrequest_p.h" #include "qquickwebengineprofile_p.h" #include "qquickwebenginesettings_p.h" #include "qquickwebenginetouchhandleprovider_p_p.h" @@ -59,7 +60,6 @@ #include "qwebenginefullscreenrequest.h" #include "qwebengineloadinginfo.h" #include "qwebenginenavigationrequest.h" -#include "qwebenginenewwindowrequest.h" #include "qwebenginequotarequest.h" #include "qwebenginescriptcollection.h" #include <QtWebEngineCore/private/qwebenginecontextmenurequest_p.h> @@ -526,8 +526,8 @@ QQuickWebEngineViewPrivate::adoptNewWindow(QSharedPointer<WebContentsAdapter> ne { Q_Q(QQuickWebEngineView); Q_ASSERT(newWebContents); - QWebEngineNewWindowRequest request(toDestinationType(disposition), geometry, - targetUrl, userGesture, newWebContents); + QQuickWebEngineNewViewRequest request(toDestinationType(disposition), geometry, + targetUrl, userGesture, newWebContents); Q_EMIT q->newViewRequested(&request); @@ -1774,15 +1774,15 @@ void QQuickWebEngineView::triggerWebAction(WebAction action) break; case OpenLinkInNewWindow: if (d->m_contextMenuRequest->filteredLinkUrl().isValid()) { - QWebEngineNewWindowRequest request(QWebEngineNewWindowRequest::InNewWindow, QRect(), - d->m_contextMenuRequest->filteredLinkUrl(), true, nullptr); + QQuickWebEngineNewViewRequest request(QWebEngineNewWindowRequest::InNewWindow, QRect(), + d->m_contextMenuRequest->filteredLinkUrl(), true, nullptr); Q_EMIT newViewRequested(&request); } break; case OpenLinkInNewTab: if (d->m_contextMenuRequest->filteredLinkUrl().isValid()) { - QWebEngineNewWindowRequest request(QWebEngineNewWindowRequest::InNewBackgroundTab, QRect(), - d->m_contextMenuRequest->filteredLinkUrl(), true, nullptr); + QQuickWebEngineNewViewRequest request(QWebEngineNewWindowRequest::InNewBackgroundTab, QRect(), + d->m_contextMenuRequest->filteredLinkUrl(), true, nullptr); Q_EMIT newViewRequested(&request); } break; diff --git a/src/webenginequick/api/qquickwebengineview_p.h b/src/webenginequick/api/qquickwebengineview_p.h index 8f3523e91..bc51f7690 100644 --- a/src/webenginequick/api/qquickwebengineview_p.h +++ b/src/webenginequick/api/qquickwebengineview_p.h @@ -72,6 +72,7 @@ class QQuickWebEngineClientCertificateSelection; class QQuickWebEngineColorDialogRequest; class QQuickWebEngineFileDialogRequest; class QQuickWebEngineJavaScriptDialogRequest; +class QQuickWebEngineNewViewRequest; class QQuickWebEngineSettings; class QQuickWebEngineTooltipRequest; class QQuickWebEngineFormValidationMessageRequest; @@ -511,7 +512,7 @@ Q_SIGNALS: Q_REVISION(1,1) void fullScreenRequested(const QWebEngineFullScreenRequest &request); Q_REVISION(1,1) void isFullScreenChanged(); Q_REVISION(1,1) void featurePermissionRequested(const QUrl &securityOrigin, Feature feature); - Q_REVISION(1,1) void newViewRequested(QWebEngineNewWindowRequest *request); + Q_REVISION(1,1) void newViewRequested(QQuickWebEngineNewViewRequest *request); Q_REVISION(1,1) void zoomFactorChanged(qreal arg); Q_REVISION(1,1) void profileChanged(); Q_REVISION(1,1) void webChannelChanged(); |