summaryrefslogtreecommitdiffstats
path: root/src/core/web_engine_settings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/web_engine_settings.cpp')
-rw-r--r--src/core/web_engine_settings.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp
index 498c4e799..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>
@@ -110,6 +111,7 @@ WebEngineSettings::WebEngineSettings(WebEngineSettings *_parentSettings)
: m_adapter(0)
, m_batchTimer(new BatchTimer(this))
, parentSettings(_parentSettings)
+ , m_unknownUrlSchemePolicy(WebEngineSettings::InheritedUnknownUrlSchemePolicy)
{
if (parentSettings)
parentSettings->childSettings.insert(this);
@@ -151,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);
@@ -212,6 +225,22 @@ QString WebEngineSettings::defaultTextEncoding() const
return m_defaultEncoding.isEmpty()? parentSettings->defaultTextEncoding() : m_defaultEncoding;
}
+void WebEngineSettings::setUnknownUrlSchemePolicy(WebEngineSettings::UnknownUrlSchemePolicy policy)
+{
+ m_unknownUrlSchemePolicy = policy;
+}
+
+WebEngineSettings::UnknownUrlSchemePolicy WebEngineSettings::unknownUrlSchemePolicy() const
+{
+ // value InheritedUnknownUrlSchemePolicy means it is taken from parent, if possible. If there
+ // is no parent, then AllowUnknownUrlSchemesFromUserInteraction (the default behavior) is used.
+ if (m_unknownUrlSchemePolicy != InheritedUnknownUrlSchemePolicy)
+ return m_unknownUrlSchemePolicy;
+ if (parentSettings)
+ return parentSettings->unknownUrlSchemePolicy();
+ return AllowUnknownUrlSchemesFromUserInteraction;
+}
+
void WebEngineSettings::initDefaults()
{
if (s_defaultAttributes.isEmpty()) {
@@ -253,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()) {
@@ -284,6 +317,7 @@ void WebEngineSettings::initDefaults()
}
m_defaultEncoding = QStringLiteral("ISO-8859-1");
+ m_unknownUrlSchemePolicy = InheritedUnknownUrlSchemePolicy;
}
void WebEngineSettings::scheduleApply()
@@ -335,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));