summaryrefslogtreecommitdiffstats
path: root/src/core/web_engine_settings.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-10-23 15:07:16 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-11-02 09:53:21 +0000
commit18ea13a7f5e083538910646c52a96a5e4642d1f2 (patch)
tree93e9d944d16030669be07d5d597bdf4f2d323d64 /src/core/web_engine_settings.cpp
parentba63729ed9a39e122475ac8860cee27fc235241b (diff)
Add setting to inhibit autoplay until user interaction
Pass through the PlaybackRequiresUserGesture Chromium setting which Chrome enables by default on Android. Task-number: QTBUG-60799 Change-Id: I105fc7d558f9b67417a0047ecb1efe7677817ea4 Reviewed-by: Florian Bruhin <qt-project.org@the-compiler.org> Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'src/core/web_engine_settings.cpp')
-rw-r--r--src/core/web_engine_settings.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp
index 44ecaf2ef..a585e7bb3 100644
--- a/src/core/web_engine_settings.cpp
+++ b/src/core/web_engine_settings.cpp
@@ -48,6 +48,7 @@
#include "content/browser/gpu/gpu_process_host.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/web_preferences.h"
+#include "media/base/media_switches.h"
#include "ui/events/event_switches.h"
#include <QFont>
@@ -152,6 +153,17 @@ bool WebEngineSettings::testAttribute(WebEngineSettings::Attribute attr) const
return m_attributes.value(attr, parentSettings->testAttribute(attr));
}
+bool WebEngineSettings::isAttributeExplicitlySet(Attribute attr) const
+{
+ if (m_attributes.contains(attr))
+ return true;
+
+ if (parentSettings)
+ return parentSettings->isAttributeExplicitlySet(attr);
+
+ return false;
+}
+
void WebEngineSettings::resetAttribute(WebEngineSettings::Attribute attr)
{
m_attributes.remove(attr);
@@ -270,6 +282,10 @@ void WebEngineSettings::initDefaults()
s_defaultAttributes.insert(AllowRunningInsecureContent, allowRunningInsecureContent);
s_defaultAttributes.insert(AllowGeolocationOnInsecureOrigins, false);
s_defaultAttributes.insert(AllowWindowActivationFromJavaScript, false);
+ bool playbackRequiresUserGesture = false;
+ if (commandLine->HasSwitch(switches::kAutoplayPolicy))
+ playbackRequiresUserGesture = (commandLine->GetSwitchValueASCII(switches::kAutoplayPolicy) != switches::autoplay::kNoUserGestureRequiredPolicy);
+ s_defaultAttributes.insert(PlaybackRequiresUserGesture, playbackRequiresUserGesture);
}
if (s_defaultFontFamilies.isEmpty()) {
@@ -353,6 +369,11 @@ void WebEngineSettings::applySettingsToWebPreferences(content::WebPreferences *p
prefs->allow_running_insecure_content = testAttribute(AllowRunningInsecureContent);
prefs->allow_geolocation_on_insecure_origins = testAttribute(AllowGeolocationOnInsecureOrigins);
prefs->hide_scrollbars = !testAttribute(ShowScrollBars);
+ if (isAttributeExplicitlySet(PlaybackRequiresUserGesture)) {
+ prefs->autoplay_policy = testAttribute(PlaybackRequiresUserGesture)
+ ? content::AutoplayPolicy::kUserGestureRequired
+ : content::AutoplayPolicy::kNoUserGestureRequired;
+ }
// Fonts settings.
prefs->standard_font_family_map[content::kCommonScript] = toString16(fontFamily(StandardFont));