summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-10-15 13:53:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-12-02 15:01:47 +0000
commit03301c0fbdf034fb987e1c1ed1bec7c206dcd27e (patch)
treedeb25e6e6389f6237fac50ad2cd5e17da8501edf
parent11756734c84038b407bddc8524cdf488efbe846c (diff)
Add WebGL, WebAudio and Accelerated2dCanvas settings
These settings were in QtWebKit and are easily added in QtWebEngine. Without the preferences the same could be achieved using command line flags. The defaults are calculated to match what is set in RenderViewHostImpl. Change-Id: I0c80507574ebc3898fc409e47194246fb00abc75 Reviewed-by: Michael BrĂ¼ning <michael.bruning@theqtcompany.com>
-rw-r--r--src/core/web_engine_settings.cpp16
-rw-r--r--src/core/web_engine_settings.h5
-rw-r--r--src/webengine/api/qquickwebenginesettings.cpp64
-rw-r--r--src/webengine/api/qquickwebenginesettings_p.h12
-rw-r--r--src/webenginewidgets/api/qwebenginesettings.cpp6
-rw-r--r--src/webenginewidgets/api/qwebenginesettings.h5
-rw-r--r--src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc7
7 files changed, 113 insertions, 2 deletions
diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp
index 88d8a0c5c..96e87d4f1 100644
--- a/src/core/web_engine_settings.cpp
+++ b/src/core/web_engine_settings.cpp
@@ -38,6 +38,9 @@
#include "web_contents_adapter.h"
#include "type_conversion.h"
+#include "base/command_line.h"
+#include "content/browser/gpu/gpu_process_host.h"
+#include "content/public/common/content_switches.h"
#include "content/public/common/web_preferences.h"
#include <QFont>
@@ -230,6 +233,16 @@ void WebEngineSettings::initDefaults(bool offTheRecord)
m_defaultAttributes.insert(PluginsEnabled, false);
m_defaultAttributes.insert(FullScreenSupportEnabled, false);
m_defaultAttributes.insert(ScreenCaptureEnabled, false);
+ // The following defaults matches logic in render_view_host_impl.cc:
+ base::CommandLine* commandLine = base::CommandLine::ForCurrentProcess();
+ bool webGL = content::GpuProcessHost::gpu_enabled() &&
+ !commandLine->HasSwitch(switches::kDisable3DAPIs) &&
+ !commandLine->HasSwitch(switches::kDisableExperimentalWebGL);
+ bool accelerated2dCanvas = content::GpuProcessHost::gpu_enabled() &&
+ !commandLine->HasSwitch(switches::kDisableAccelerated2dCanvas);
+ m_defaultAttributes.insert(WebGLEnabled, webGL);
+ m_defaultAttributes.insert(WebAudioEnabled, false);
+ m_defaultAttributes.insert(Accelerated2dCanvasEnabled, accelerated2dCanvas);
}
m_attributes = m_defaultAttributes;
@@ -303,6 +316,9 @@ void WebEngineSettings::applySettingsToWebPreferences(content::WebPreferences *p
prefs->enable_error_page = testAttribute(ErrorPageEnabled);
prefs->plugins_enabled = testAttribute(PluginsEnabled);
prefs->fullscreen_supported = testAttribute(FullScreenSupportEnabled);
+ prefs->accelerated_2d_canvas_enabled = testAttribute(Accelerated2dCanvasEnabled);
+ prefs->webaudio_enabled = testAttribute(WebAudioEnabled);
+ prefs->experimental_webgl_enabled = testAttribute(WebGLEnabled);
// Fonts settings.
prefs->standard_font_family_map[content::kCommonScript] = toString16(fontFamily(StandardFont));
diff --git a/src/core/web_engine_settings.h b/src/core/web_engine_settings.h
index 4104ec67c..86f8762cb 100644
--- a/src/core/web_engine_settings.h
+++ b/src/core/web_engine_settings.h
@@ -73,7 +73,10 @@ public:
ErrorPageEnabled,
PluginsEnabled,
FullScreenSupportEnabled,
- ScreenCaptureEnabled
+ ScreenCaptureEnabled,
+ WebGLEnabled,
+ WebAudioEnabled,
+ Accelerated2dCanvasEnabled
};
// Must match the values from the public API in qwebenginesettings.h.
diff --git a/src/webengine/api/qquickwebenginesettings.cpp b/src/webengine/api/qquickwebenginesettings.cpp
index 327c9e745..79819efc3 100644
--- a/src/webengine/api/qquickwebenginesettings.cpp
+++ b/src/webengine/api/qquickwebenginesettings.cpp
@@ -246,6 +246,46 @@ bool QQuickWebEngineSettings::screenCaptureEnabled() const
}
/*!
+ \qmlproperty bool WebEngineSettings::webGLEnabled
+ \since QtWebEngine 1.3
+
+ Enables support for HTML 5 WebGL.
+
+ Enabled by default if available.
+*/
+bool QQuickWebEngineSettings::webGLEnabled() const
+{
+ return d_ptr->testAttribute(WebEngineSettings::WebGLEnabled);
+}
+
+/*!
+ \qmlproperty bool WebEngineSettings::webAudioEnabled
+ \since QtWebEngine 1.3
+
+ Enables support for HTML 5 WebAudio.
+
+ Disabled by default.
+*/
+bool QQuickWebEngineSettings::webAudioEnabled() const
+{
+ return d_ptr->testAttribute(WebEngineSettings::WebAudioEnabled);
+}
+
+/*!
+ \qmlproperty bool WebEngineSettings::accelerated2dCanvasEnabled
+ \since QtWebEngine 1.3
+
+ Specifies whether the HTML 5 2D canvas should be a OpenGL framebuffer.
+ This makes many painting operations faster, but slows down pixel access.
+
+ Enabled by default if available.
+*/
+bool QQuickWebEngineSettings::accelerated2dCanvasEnabled() const
+{
+ return d_ptr->testAttribute(WebEngineSettings::Accelerated2dCanvasEnabled);
+}
+
+/*!
\qmlproperty QString WebEngineSettings::defaultTextEncoding
Sets the default encoding. The value must be a string describing an encoding such as "utf-8" or
@@ -373,6 +413,30 @@ void QQuickWebEngineSettings::setScreenCaptureEnabled(bool on)
Q_EMIT screenCaptureEnabledChanged();
}
+void QQuickWebEngineSettings::setWebGLEnabled(bool on)
+{
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::WebGLEnabled);
+ d_ptr->setAttribute(WebEngineSettings::WebGLEnabled, on);
+ if (wasOn != on)
+ Q_EMIT webGLEnabledChanged();
+}
+
+void QQuickWebEngineSettings::setWebAudioEnabled(bool on)
+{
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::WebAudioEnabled);
+ d_ptr->setAttribute(WebEngineSettings::WebAudioEnabled, on);
+ if (wasOn != on)
+ Q_EMIT webAudioEnabledChanged();
+}
+
+void QQuickWebEngineSettings::setAccelerated2dCanvasEnabled(bool on)
+{
+ bool wasOn = d_ptr->testAttribute(WebEngineSettings::Accelerated2dCanvasEnabled);
+ d_ptr->setAttribute(WebEngineSettings::Accelerated2dCanvasEnabled, on);
+ if (wasOn != on)
+ Q_EMIT accelerated2dCanvasEnabledChanged();
+}
+
void QQuickWebEngineSettings::setDefaultTextEncoding(QString encoding)
{
const QString oldDefaultTextEncoding = d_ptr->defaultTextEncoding();
diff --git a/src/webengine/api/qquickwebenginesettings_p.h b/src/webengine/api/qquickwebenginesettings_p.h
index c08a5d897..d307dec1c 100644
--- a/src/webengine/api/qquickwebenginesettings_p.h
+++ b/src/webengine/api/qquickwebenginesettings_p.h
@@ -76,6 +76,9 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineSettings : public QObject {
Q_PROPERTY(bool fullScreenSupportEnabled READ fullScreenSupportEnabled WRITE setFullScreenSupportEnabled NOTIFY fullScreenSupportEnabledChanged)
// FIXME: add back REVISION when QTBUG-40043 has been fixed.
Q_PROPERTY(bool screenCaptureEnabled READ screenCaptureEnabled WRITE setScreenCaptureEnabled NOTIFY screenCaptureEnabledChanged /* REVISION 2 */)
+ Q_PROPERTY(bool webGLEnabled READ webGLEnabled WRITE setWebGLEnabled NOTIFY webGLEnabledChanged /* REVISION 2 */)
+ Q_PROPERTY(bool webAudioEnabled READ webAudioEnabled WRITE setWebAudioEnabled NOTIFY webAudioEnabledChanged /* REVISION 2 */)
+ Q_PROPERTY(bool accelerated2dCanvasEnabled READ accelerated2dCanvasEnabled WRITE setAccelerated2dCanvasEnabled NOTIFY accelerated2dCanvasEnabledChanged /* REVISION 2 */)
Q_PROPERTY(QString defaultTextEncoding READ defaultTextEncoding WRITE setDefaultTextEncoding NOTIFY defaultTextEncodingChanged)
public:
@@ -95,6 +98,9 @@ public:
bool pluginsEnabled() const;
bool fullScreenSupportEnabled() const;
bool screenCaptureEnabled() const;
+ bool webGLEnabled() const;
+ bool webAudioEnabled() const;
+ bool accelerated2dCanvasEnabled() const;
QString defaultTextEncoding() const;
void setAutoLoadImages(bool on);
@@ -111,6 +117,9 @@ public:
void setPluginsEnabled(bool on);
void setFullScreenSupportEnabled(bool on);
void setScreenCaptureEnabled(bool on);
+ void setWebGLEnabled(bool on);
+ void setWebAudioEnabled(bool on);
+ void setAccelerated2dCanvasEnabled(bool on);
void setDefaultTextEncoding(QString encoding);
signals:
@@ -130,6 +139,9 @@ signals:
void fullScreenSupportEnabledChanged();
// FIXME: add back Q_REVISION when QTBUG-40043 has been fixed.
void screenCaptureEnabledChanged();
+ void webGLEnabledChanged();
+ void webAudioEnabledChanged();
+ void accelerated2dCanvasEnabledChanged();
void defaultTextEncodingChanged();
private:
diff --git a/src/webenginewidgets/api/qwebenginesettings.cpp b/src/webenginewidgets/api/qwebenginesettings.cpp
index 290f46b18..80047da63 100644
--- a/src/webenginewidgets/api/qwebenginesettings.cpp
+++ b/src/webenginewidgets/api/qwebenginesettings.cpp
@@ -78,6 +78,12 @@ static WebEngineSettings::Attribute toWebEngineAttribute(QWebEngineSettings::Web
return WebEngineSettings::FullScreenSupportEnabled;
case QWebEngineSettings::ScreenCaptureEnabled:
return WebEngineSettings::ScreenCaptureEnabled;
+ case QWebEngineSettings::WebGLEnabled:
+ return WebEngineSettings::WebGLEnabled;
+ case QWebEngineSettings::WebAudioEnabled:
+ return WebEngineSettings::WebAudioEnabled;
+ case QWebEngineSettings::Accelerated2dCanvasEnabled:
+ return WebEngineSettings::Accelerated2dCanvasEnabled;
default:
return WebEngineSettings::UnsupportedInCoreSettings;
}
diff --git a/src/webenginewidgets/api/qwebenginesettings.h b/src/webenginewidgets/api/qwebenginesettings.h
index 1c5d526d9..8bf303a8f 100644
--- a/src/webenginewidgets/api/qwebenginesettings.h
+++ b/src/webenginewidgets/api/qwebenginesettings.h
@@ -61,7 +61,10 @@ public:
ErrorPageEnabled,
PluginsEnabled,
FullScreenSupportEnabled,
- ScreenCaptureEnabled
+ ScreenCaptureEnabled,
+ WebGLEnabled,
+ WebAudioEnabled,
+ Accelerated2dCanvasEnabled
};
enum FontSize {
diff --git a/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc b/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc
index d4f9e498d..82a425d2f 100644
--- a/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc
+++ b/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc
@@ -125,6 +125,13 @@
Enables fullscreen support in an application. Disabled by default.
\value ScreenCaptureEnabled
Enables screen capture in an application. Disabled by default.
+ \value WebGLEnabled
+ Enables support for HTML 5 WebGL. Enabled by default if available.
+ \value WebAudioEnabled
+ Enables support for HTML 5 WebAudio. Disabled by default.
+ \value Accelerated2dCanvasEnabled
+ Specifies whether the HTML5 2D canvas should be a OpenGL framebuffer.
+ This makes many painting operations faster, but slows down pixel access. Enabled by default if available.
*/
/*!