diff options
-rw-r--r-- | src/core/web_engine_settings.cpp | 16 | ||||
-rw-r--r-- | src/core/web_engine_settings.h | 5 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginesettings.cpp | 64 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginesettings_p.h | 12 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginesettings.cpp | 6 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebenginesettings.h | 5 | ||||
-rw-r--r-- | src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc | 7 |
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. */ /*! |