summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/api/qwebenginedesktopmediarequest.cpp59
-rw-r--r--src/core/api/qwebenginedesktopmediarequest.h38
-rw-r--r--src/core/api/qwebenginepage.h2
-rw-r--r--src/webenginequick/api/qquickwebengineview.cpp1
-rw-r--r--tests/auto/quick/publicapi/tst_publicapi.cpp6
5 files changed, 39 insertions, 67 deletions
diff --git a/src/core/api/qwebenginedesktopmediarequest.cpp b/src/core/api/qwebenginedesktopmediarequest.cpp
index d9ec572c5..80e809230 100644
--- a/src/core/api/qwebenginedesktopmediarequest.cpp
+++ b/src/core/api/qwebenginedesktopmediarequest.cpp
@@ -21,28 +21,16 @@ QT_BEGIN_NAMESPACE
If a web application requests access to the contents of a display,
QWebEnginePage::desktopMediaRequested will be emitted with a
QWebEngineDesktopMediaRequest instance as an argument which holds references to
- data models for available windows and screens that can be captured.
- The signal handler needs to then either call QWebEngineDesktopMediaRequest:selectScreen(),
- QWebEngineDesktopMediaRequest::selectWindow() to accept the request and start screensharing.
- \sa QWebEnginePage::desktopMediaRequested().
-*/
-
-/*!
- \class QWebEngineMediaSourceModel
- \brief A data model that represents display sources for screen capturing.
+ QAbstractListModels for available windows and screens that can be captured.
- \since 6.7
-
- \inmodule QtWebEngineCore
- The QWebEngineMediaSourceModel exposes the \e name Role.
- The name role specifies the name of the source which is the title of a window or the number of
- the display.
+ The data model's \e Qt::DisplayRole specifies the name of the source which is the title of a
+ window or the number of the display.
The model is dynamically updates if the available list of sources has changed e.g a window is
opened/closed.
- This type is uncreatable, it can only be accessed from a QWebEngineDesktopMediaRequest.
- \sa QWebEngineDesktopMediaRequest::windowsModel(),
- QWebEngineDesktopMediaRequest::screensModel().
+ The signal handler needs to then either call QWebEngineDesktopMediaRequest:selectScreen() or
+ QWebEngineDesktopMediaRequest::selectWindow() to accept the request and start screensharing.
+ \sa QWebEnginePage::desktopMediaRequested().
*/
class QWebEngineMediaSourceModelPrivate
@@ -58,6 +46,20 @@ QWebEngineMediaSourceModelPrivate::QWebEngineMediaSourceModelPrivate(
{
}
+class QWebEngineMediaSourceModel : public QAbstractListModel
+{
+public:
+ ~QWebEngineMediaSourceModel() override;
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+
+private:
+ friend class QWebEngineDesktopMediaRequestPrivate;
+ explicit QWebEngineMediaSourceModel(QWebEngineMediaSourceModelPrivate *dd);
+ std::unique_ptr<QWebEngineMediaSourceModelPrivate> d;
+};
+
QWebEngineMediaSourceModel::QWebEngineMediaSourceModel(QWebEngineMediaSourceModelPrivate *dd)
: d(dd)
{
@@ -79,7 +81,7 @@ QWebEngineMediaSourceModel::QWebEngineMediaSourceModel(QWebEngineMediaSourceMode
QObject::connect(d->m_mediaList, &QtWebEngineCore::DesktopMediaListQt::sourceNameChanged, this,
[this](int index) {
Q_EMIT dataChanged(QModelIndex(), QModelIndex(),
- { Qt::DisplayRole, Roles::NameRole });
+ { Qt::DisplayRole });
});
}
@@ -96,8 +98,6 @@ QVariant QWebEngineMediaSourceModel::data(const QModelIndex &index, int role) co
return QVariant();
switch (role) {
case Qt::DisplayRole:
- case Qt::EditRole:
- case NameRole:
return d->m_mediaList->getSourceName(index.row());
default:
break;
@@ -105,13 +105,6 @@ QVariant QWebEngineMediaSourceModel::data(const QModelIndex &index, int role) co
return QVariant();
}
-QHash<int, QByteArray> QWebEngineMediaSourceModel::roleNames() const
-{
- QHash<int, QByteArray> roles = QAbstractItemModel::roleNames();
- roles[NameRole] = "name";
- return roles;
-}
-
QWebEngineDesktopMediaRequestPrivate::QWebEngineDesktopMediaRequestPrivate(
QtWebEngineCore::DesktopMediaController *controller)
: controller(controller)
@@ -160,22 +153,24 @@ QWebEngineDesktopMediaRequest::QWebEngineDesktopMediaRequest(
{
}
+QWebEngineDesktopMediaRequest::~QWebEngineDesktopMediaRequest() = default;
+
/*!
- Returns a QWebEngineMediaSourceModel for the available screens.
+ Returns a QAbstractListModel for the available screens.
\sa windowsModel()
*/
-QWebEngineMediaSourceModel *QWebEngineDesktopMediaRequest::screensModel() const
+QAbstractListModel *QWebEngineDesktopMediaRequest::screensModel() const
{
return d->m_screensModel.get();
}
/*!
- Returns a QWebEngineMediaSourceModel for the available windows.
+ Returns a QAbstractListModel for the available windows.
\sa screensModel()
*/
-QWebEngineMediaSourceModel *QWebEngineDesktopMediaRequest::windowsModel() const
+QAbstractListModel *QWebEngineDesktopMediaRequest::windowsModel() const
{
return d->m_windowsModel.get();
}
diff --git a/src/core/api/qwebenginedesktopmediarequest.h b/src/core/api/qwebenginedesktopmediarequest.h
index 3f999ee0c..a68c517b7 100644
--- a/src/core/api/qwebenginedesktopmediarequest.h
+++ b/src/core/api/qwebenginedesktopmediarequest.h
@@ -15,43 +15,19 @@ class DesktopMediaController;
QT_BEGIN_NAMESPACE
class QWebEnginePagePrivate;
class QQuickWebEngineViewPrivate;
-class QWebEngineMediaSourceModelPrivate;
class QWebEngineDesktopMediaRequestPrivate;
-class Q_WEBENGINECORE_EXPORT QWebEngineMediaSourceModel : public QAbstractListModel
-{
- Q_OBJECT
-public:
- enum Roles { NameRole = Qt::UserRole };
- ~QWebEngineMediaSourceModel() override;
-
- int rowCount(const QModelIndex &parent = QModelIndex()) const override;
- QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
- QHash<int, QByteArray> roleNames() const override;
-
-private:
- friend class QWebEngineDesktopMediaRequestPrivate;
- explicit QWebEngineMediaSourceModel(QWebEngineMediaSourceModelPrivate *dd);
- std::unique_ptr<QWebEngineMediaSourceModelPrivate> d;
-};
-
class QWebEngineDesktopMediaRequest
{
Q_GADGET_EXPORT(Q_WEBENGINECORE_EXPORT)
- Q_PROPERTY(QWebEngineMediaSourceModel *screensModel READ screensModel FINAL)
- Q_PROPERTY(QWebEngineMediaSourceModel *windowsModel READ windowsModel FINAL)
+ Q_PROPERTY(QAbstractListModel *screensModel READ screensModel FINAL)
+ Q_PROPERTY(QAbstractListModel *windowsModel READ windowsModel FINAL)
public:
- Q_WEBENGINECORE_EXPORT
- QWebEngineDesktopMediaRequest(const QWebEngineDesktopMediaRequest &other) noexcept = default;
- Q_WEBENGINECORE_EXPORT
- QWebEngineDesktopMediaRequest(QWebEngineDesktopMediaRequest &&other) noexcept = default;
- QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QWebEngineDesktopMediaRequest)
- Q_WEBENGINECORE_EXPORT ~QWebEngineDesktopMediaRequest() = default;
- void swap(QWebEngineDesktopMediaRequest &other) noexcept { d.swap(other.d); }
+ Q_WEBENGINECORE_EXPORT ~QWebEngineDesktopMediaRequest();
- Q_WEBENGINECORE_EXPORT QWebEngineMediaSourceModel *screensModel() const;
- Q_WEBENGINECORE_EXPORT QWebEngineMediaSourceModel *windowsModel() const;
+ Q_WEBENGINECORE_EXPORT QAbstractListModel *screensModel() const;
+ Q_WEBENGINECORE_EXPORT QAbstractListModel *windowsModel() const;
Q_WEBENGINECORE_EXPORT Q_INVOKABLE void selectScreen(const QModelIndex &index) const;
Q_WEBENGINECORE_EXPORT Q_INVOKABLE void selectWindow(const QModelIndex &index) const;
@@ -60,11 +36,11 @@ public:
private:
friend class QWebEnginePagePrivate;
friend class QQuickWebEngineViewPrivate;
+ Q_DISABLE_COPY(QWebEngineDesktopMediaRequest)
Q_WEBENGINECORE_EXPORT explicit QWebEngineDesktopMediaRequest(
QtWebEngineCore::DesktopMediaController *controller);
- QSharedPointer<QWebEngineDesktopMediaRequestPrivate> d;
+ std::unique_ptr<QWebEngineDesktopMediaRequestPrivate> d;
};
-Q_DECLARE_SHARED(QWebEngineDesktopMediaRequest)
QT_END_NAMESPACE
diff --git a/src/core/api/qwebenginepage.h b/src/core/api/qwebenginepage.h
index 9ed4e7877..45e96fe73 100644
--- a/src/core/api/qwebenginepage.h
+++ b/src/core/api/qwebenginepage.h
@@ -6,7 +6,6 @@
#include <QtWebEngineCore/qtwebenginecoreglobal.h>
#include <QtWebEngineCore/qwebengineclientcertificateselection.h>
-#include <QtWebEngineCore/qwebenginedesktopmediarequest.h>
#include <QtWebEngineCore/qwebenginedownloadrequest.h>
#include <QtWebEngineCore/qwebenginequotarequest.h>
@@ -27,6 +26,7 @@ class QRect;
class QVariant;
class QWebChannel;
class QWebEngineCertificateError;
+class QWebEngineDesktopMediaRequest;
class QWebEngineFileSystemAccessRequest;
class QWebEngineFindTextResult;
class QWebEngineFullScreenRequest;
diff --git a/src/webenginequick/api/qquickwebengineview.cpp b/src/webenginequick/api/qquickwebengineview.cpp
index 4b90dab82..97d0d8451 100644
--- a/src/webenginequick/api/qquickwebengineview.cpp
+++ b/src/webenginequick/api/qquickwebengineview.cpp
@@ -31,6 +31,7 @@
#include "web_contents_adapter.h"
#include <QtWebEngineCore/qwebenginecertificateerror.h>
+#include <QtWebEngineCore/qwebenginedesktopmediarequest.h>
#include <QtWebEngineCore/qwebenginefilesystemaccessrequest.h>
#include <QtWebEngineCore/qwebenginefindtextresult.h>
#include <QtWebEngineCore/qwebenginefullscreenrequest.h>
diff --git a/tests/auto/quick/publicapi/tst_publicapi.cpp b/tests/auto/quick/publicapi/tst_publicapi.cpp
index 21b1e52c5..3869d4cd6 100644
--- a/tests/auto/quick/publicapi/tst_publicapi.cpp
+++ b/tests/auto/quick/publicapi/tst_publicapi.cpp
@@ -67,7 +67,7 @@ static const QList<const QMetaObject *> typesToCheck = QList<const QMetaObject *
<< &QWebEngineFileSystemAccessRequest::staticMetaObject
<< &QWebEngineFindTextResult::staticMetaObject
<< &QWebEngineLoadingInfo::staticMetaObject
- << &QWebEngineMediaSourceModel::staticMetaObject
+ << &QAbstractListModel::staticMetaObject
<< &QWebEngineNavigationRequest::staticMetaObject
<< &QWebEngineNewWindowRequest::staticMetaObject
<< &QWebEngineNotification::staticMetaObject
@@ -270,8 +270,8 @@ static const QStringList expectedAPI = QStringList()
<< "QQuickWebEngineTooltipRequest.text --> QString"
<< "QQuickWebEngineTooltipRequest.type --> QQuickWebEngineTooltipRequest::RequestType"
<< "QQuickWebEngineTooltipRequest.accepted --> bool"
- << "QWebEngineDesktopMediaRequest.screensModel --> QWebEngineMediaSourceModel*"
- << "QWebEngineDesktopMediaRequest.windowsModel --> QWebEngineMediaSourceModel*"
+ << "QWebEngineDesktopMediaRequest.screensModel --> QAbstractListModel*"
+ << "QWebEngineDesktopMediaRequest.windowsModel --> QAbstractListModel*"
<< "QWebEngineDesktopMediaRequest.selectScreen(QModelIndex) --> void"
<< "QWebEngineDesktopMediaRequest.selectWindow(QModelIndex) --> void"
<< "QWebEngineDesktopMediaRequest.cancel() --> void"