summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/api/qwebenginepage.cpp
diff options
context:
space:
mode:
authorPierre Rossi <pierre.rossi@digia.com>2014-03-18 15:29:22 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-04-29 16:37:52 +0200
commit6fca3ec615102f9ce2e1b3330406ef1d654d2474 (patch)
treea043ba929f034ed6587f987ceaa9cb0c98aa79fc /src/webenginewidgets/api/qwebenginepage.cpp
parent070846b2efff8c8f2e8bdebef259f411ddeaac1e (diff)
WebRTC Widgets API
Simply reuse the existing feature request approach that was used for geolocation and notifications in QtWebKit. Change-Id: I8fec4f4e9e81b491163912fadb4ce17d343864dd Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'src/webenginewidgets/api/qwebenginepage.cpp')
-rw-r--r--src/webenginewidgets/api/qwebenginepage.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index ec0c0224d..0006cbd42 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -312,6 +312,21 @@ void QWebEnginePagePrivate::authenticationRequired(const QUrl &requestUrl, const
*outPassword = networkAuth.password();
}
+void QWebEnginePagePrivate::runMediaAccessPermissionRequest(const QUrl &securityOrigin, WebContentsAdapterClient::MediaRequestFlags requestFlags)
+{
+ Q_Q(QWebEnginePage);
+ QWebEnginePage::Feature requestedFeature;
+ if (requestFlags.testFlag(WebContentsAdapterClient::MediaAudioCapture) && requestFlags.testFlag(WebContentsAdapterClient::MediaVideoCapture))
+ requestedFeature = QWebEnginePage::MediaAudioVideoDevices;
+ else if (requestFlags.testFlag(WebContentsAdapterClient::MediaAudioCapture))
+ requestedFeature = QWebEnginePage::MediaAudioDevices;
+ else if (requestFlags.testFlag(WebContentsAdapterClient::MediaVideoCapture))
+ requestedFeature = QWebEnginePage::MediaVideoDevices;
+ else
+ return;
+ Q_EMIT q->featurePermissionRequested(securityOrigin, requestedFeature);
+}
+
void QWebEnginePagePrivate::updateAction(QWebEnginePage::WebAction action) const
{
#ifdef QT_NO_ACTION
@@ -680,6 +695,33 @@ QMenu *QWebEnginePage::createStandardContextMenu()
return menu;
}
+void QWebEnginePage::setFeaturePermission(const QUrl &securityOrigin, QWebEnginePage::Feature feature, QWebEnginePage::PermissionPolicy policy)
+{
+ Q_D(QWebEnginePage);
+ WebContentsAdapterClient::MediaRequestFlags flags = WebContentsAdapterClient::MediaNone;
+ switch (feature) {
+ case MediaAudioVideoDevices:
+ case MediaAudioDevices:
+ case MediaVideoDevices:
+ if (policy != PermissionUnknown) {
+ if (policy == PermissionDeniedByUser)
+ flags = WebContentsAdapterClient::MediaNone;
+ else {
+ if (feature == MediaAudioDevices)
+ flags = WebContentsAdapterClient::MediaAudioCapture;
+ else if (feature == MediaVideoDevices)
+ flags = WebContentsAdapterClient::MediaVideoCapture;
+ else
+ flags = WebContentsAdapterClient::MediaRequestFlags(WebContentsAdapterClient::MediaVideoCapture | WebContentsAdapterClient::MediaAudioCapture);
+ }
+ d->adapter->grantMediaAccessPermission(securityOrigin, flags);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
static inline QWebEnginePage::FileSelectionMode toPublic(WebContentsAdapterClient::FileChooserMode mode)
{
// Should the underlying values change, we'll need a switch here.