From de57e1b0b00be63e0647d864ff48b9c75742423d Mon Sep 17 00:00:00 2001 From: Martin Negyokru Date: Fri, 4 Nov 2022 10:55:58 +0100 Subject: Add new API for screen capturing [ChangeLog][WebEngineCore] Add QWebEnginePage::desktopMediaRequested() signal [ChangeLog][WebEngineQuick] Add QQuickWebEngineView::desktopMediaRequested() signal Pick-to: 6.7 Fixes: QTBUG-112142 Task-number: QTBUG-70077 Change-Id: I4bfad88732b45fb68b77f7617440bcb50b248a11 Reviewed-by: Qt CI Bot Reviewed-by: Allan Sandfeld Jensen --- examples/webenginewidgets/simplebrowser/browser.cpp | 1 + examples/webenginewidgets/simplebrowser/main.cpp | 2 ++ examples/webenginewidgets/simplebrowser/webpage.cpp | 8 ++++++++ examples/webenginewidgets/simplebrowser/webpage.h | 2 ++ 4 files changed, 13 insertions(+) (limited to 'examples/webenginewidgets/simplebrowser') diff --git a/examples/webenginewidgets/simplebrowser/browser.cpp b/examples/webenginewidgets/simplebrowser/browser.cpp index 83e273d07..fd68246d0 100644 --- a/examples/webenginewidgets/simplebrowser/browser.cpp +++ b/examples/webenginewidgets/simplebrowser/browser.cpp @@ -27,6 +27,7 @@ BrowserWindow *Browser::createHiddenWindow(bool offTheRecord) m_profile->settings()->setAttribute(QWebEngineSettings::DnsPrefetchEnabled, true); m_profile->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true); m_profile->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, false); + m_profile->settings()->setAttribute(QWebEngineSettings::ScreenCaptureEnabled, true); QObject::connect(m_profile.get(), &QWebEngineProfile::downloadRequested, &m_downloadManagerWidget, &DownloadManagerWidget::downloadRequested); } diff --git a/examples/webenginewidgets/simplebrowser/main.cpp b/examples/webenginewidgets/simplebrowser/main.cpp index bd9a3a198..ff4811eae 100644 --- a/examples/webenginewidgets/simplebrowser/main.cpp +++ b/examples/webenginewidgets/simplebrowser/main.cpp @@ -31,6 +31,8 @@ int main(int argc, char **argv) QWebEngineProfile::defaultProfile()->settings()->setAttribute(QWebEngineSettings::PluginsEnabled, true); QWebEngineProfile::defaultProfile()->settings()->setAttribute(QWebEngineSettings::DnsPrefetchEnabled, true); + QWebEngineProfile::defaultProfile()->settings()->setAttribute( + QWebEngineSettings::ScreenCaptureEnabled, true); QUrl url = commandLineUrlArgument(); diff --git a/examples/webenginewidgets/simplebrowser/webpage.cpp b/examples/webenginewidgets/simplebrowser/webpage.cpp index 699e3d2ed..807cdf0ff 100644 --- a/examples/webenginewidgets/simplebrowser/webpage.cpp +++ b/examples/webenginewidgets/simplebrowser/webpage.cpp @@ -13,6 +13,8 @@ WebPage::WebPage(QWebEngineProfile *profile, QObject *parent) { connect(this, &QWebEnginePage::selectClientCertificate, this, &WebPage::handleSelectClientCertificate); connect(this, &QWebEnginePage::certificateError, this, &WebPage::handleCertificateError); + connect(this, &QWebEnginePage::desktopMediaRequested, this, + &WebPage::handleDesktopMediaRequest); } void WebPage::handleCertificateError(QWebEngineCertificateError error) @@ -27,3 +29,9 @@ void WebPage::handleSelectClientCertificate(QWebEngineClientCertificateSelection // Just select one. selection.select(selection.certificates().at(0)); } + +void WebPage::handleDesktopMediaRequest(const QWebEngineDesktopMediaRequest &request) +{ + // select the primary screen + request.selectScreen(request.screensModel()->index(0)); +} diff --git a/examples/webenginewidgets/simplebrowser/webpage.h b/examples/webenginewidgets/simplebrowser/webpage.h index 83a4e833f..56740f817 100644 --- a/examples/webenginewidgets/simplebrowser/webpage.h +++ b/examples/webenginewidgets/simplebrowser/webpage.h @@ -7,6 +7,7 @@ #include #include #include +#include class WebPage : public QWebEnginePage { @@ -21,6 +22,7 @@ signals: private slots: void handleCertificateError(QWebEngineCertificateError error); void handleSelectClientCertificate(QWebEngineClientCertificateSelection clientCertSelection); + void handleDesktopMediaRequest(const QWebEngineDesktopMediaRequest &request); }; #endif // WEBPAGE_H -- cgit v1.2.3