summaryrefslogtreecommitdiffstats
path: root/src/core/web_engine_context.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix broken rendering of select popups on macOSv5.10.0-rc3v5.10.0-rc2v5.10.0Alexandru Croitor2017-11-291-0/+3
| | | | | | | | | | Pass the kDisableNativeGpuMemoryBuffers flag to Chromium, so it does not generate GL_TEXTURE_RECTANGLE_ARB textures, which caused the rendering issues for popups. Task-number: QTBUG-64823 Change-Id: Ie7b5824eed870ce5c89ff66ba3309f85f9261c81 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Adaptations to 61-basedAllan Sandfeld Jensen2017-10-251-0/+3
| | | | | Change-Id: I5cb198445f283c6cea8187a1a2883896df0ee918 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* [Windows] Disable GPU rasterization when using software WebGLAlexandru Croitor2017-09-161-0/+6
| | | | | | | | | This should improve the CPU usage a bit, due to using software rasterization in Chromium, rather than relying on the mesa implementation in opengl32sw.dll. Change-Id: Ib165aacc6a9d02dd30a6397e48af5616e00eb574 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Don't pass kInProcessGPU if we pass kDisableGPUAlexandru Croitor2017-09-151-3/+4
| | | | | | | | | | | | | The in process GPU thread still starts even if kDisableGPU is passed because kInProcessGPU check has a higher priority in GpuDataManagerImplPrivate::GpuAccessAllowed(). This caused a crash when running on Windows with ANGLE. Make sure not to pass kInProcessGPU if we will disable the GPU. Task-number: QTBUG-63221 Change-Id: I8f9d154951e9143c7b5049eb641bfad2448b855b Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Merge remote-tracking branch 'origin/5.9' into 5.10Allan Sandfeld Jensen2017-09-141-16/+32
|\ | | | | | | Change-Id: I0860a46b981c1f711bec45d7a495bcec2a80ee1f
| * Allow WebGL to work with a software OpenGL implementation on WindowsAlexandru Croitor2017-09-131-16/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A user can explicitly request software OpenGL rendering via opengl32sw.dll instead of Skia rendering, by passing the --enable-webgl-software-rendering command line argument. This will make sure not to disable GPU processing if and only if software OpenGL rendering is used on Windows (via QT_OPENGL=software environment variable, or the Qt::AA_UseSoftwareOpenGL attribute), so that WebGL is not disabled. Software OpenGL rendering will still use Skia on platforms other than Windows. Change-Id: I8b3601b144e09e3a732abfb74dbbf6f924889b5a Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Adaptations for Chromium 60Alexandru Croitor2017-09-111-4/+11
| | | | | | | | | | | | Change-Id: I536258e22c2ec143f2fd3f1cbda229e0611b6af4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* | Adaptations for Chromium 59Allan Sandfeld Jensen2017-09-111-4/+4
| | | | | | | | | | Change-Id: I472053e316bfa782d0a6fb8903f4901be12247ae Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Merge branch '5.9' into 5.10Allan Sandfeld Jensen2017-09-061-0/+6
|\| | | | | | | Change-Id: I9fe9946ba47f9ef509a861963c83e275a25fffd0
| * Handle --explicitly-allowed-portsAllan Sandfeld Jensen2017-08-281-0/+6
| | | | | | | | | | | | | | | | | | Chromium handles the flag for the render process, but with multi-process we need to enable it for the browser process as well. Task-number: QTBUG-62808 Change-Id: I1111dd7a2fd58876978ec5299bfb7abea8cb8487 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devAllan Sandfeld Jensen2017-08-141-1/+27
|\| | | | | | | | | | | Includes sha1 bump of src/3rdparty to head of 58-based. Change-Id: I37743c3979c1b6fb21f71eab7048e82f7aa5d78b
| * Fix "Could not share GL contexts" warnings on WindowsAlexandru Croitor2017-07-111-0/+11
| | | | | | | | | | | | | | | | | | | | | | Make sure that a non-Core Profile OpenGL Context is created on the Chromium side, so that sharing between the Qt global context and the Chromium ones works. Change-Id: Ifc5f39268395615fe50c8aa9467f833c0de233a8 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Viktor Engelmann <viktor.engelmann@qt.io>
| * [macOS] Use the OpenGL CoreProfile when the global shared context doesAlexandru Croitor2017-07-111-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously when a default QSurfaceFormat was set with an OpenGL Core profile, all the contexts created on the Qt side would obey the profile, but Chromium would still use the Compatibility profile for its contexts leading to warnings when trying to create shared contexts. The fix is to check which OpenGL profile is used in the Qt global shared context, and pass that information along to Chromium. Note that this works only on macOS for now, and the default non-Core profile is used on other platforms, even though Core was requested. Passing CoreProfile to Chromium on Windows and Linux currently leads to crashes. Task-number: QTBUG-60605 Change-Id: I27a77091923624d19ccc2019953a5b07f9282916 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* | Force Chromium to use compatibility OpenGL context profile if Qt uses itPeter Varga2017-06-241-0/+3
| | | | | | | | | | | | | | | | Mismatching profiles might result older Nvidia drivers to hang at multithreaded context creation. Change-Id: I150d897cd0749862ab5cf2c21c2096b276a8f3a4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Simple adaptations for Chromium 58Allan Sandfeld Jensen2017-06-141-2/+2
| | | | | | | | | | Change-Id: I7c2c85973b03fdbd2eafb5339f33a3758d53e924 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* | Adaptations for Chromium 57Allan Sandfeld Jensen2017-06-141-2/+3
|/ | | | | Change-Id: Ia2756c1e9b13839c2330bd98cf953d47cbdac0dd Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
* Disable Pepper using OpenGL images on macOSAllan Sandfeld Jensen2017-05-151-0/+2
| | | | | | | | | We don't support textures in the GL_TEXTURE_RECTANGLE_ARB texture target which is used by Pepper now unless explicitly disabled. Task-number: QTBUG-60706 Change-Id: I56c1ba124e9ed666248912a20cf6db0230e6d981 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix backwards compatibilityAllan Sandfeld Jensen2017-05-101-0/+2
| | | | | | | | | | QtWebEngine supports building with last stable and last LTS Qt releases. Guard some 5.7-5.9 API from being used when not available, and reinstate the default features for 5.6 LTS builds. Change-Id: Ia288a49109d011a2bee883d4a2d38d994b497d59 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Disable hardware video decoding on macOSAlexandru Croitor2017-05-081-0/+6
| | | | | | | | | | | | | | When WebEngine is built with proprietary codecs enabled, this leads to usage of the macOS video hardware acceleration framework. Because of missing support of Rectangle OpenGL textures on the Qt WebEngine side, AVC videos are not displayed correctly. Disable hardware video decoding on macOS until said support is implemented. Task-number: QTBUG-60002 Change-Id: I5faf8df00362d442c5a6f207cc2a9637d663ad00 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Detect the scenegraph software backend when it was set programaticallyMichael Brüning2017-05-021-0/+3
| | | | | | | | | | | Since 5.8, it is possible to set the Qt Quick scenegraph backend using QQuickWindow::setSceneGraph backend. However, this is not detectable by WebEngine's implementation as it relied on environment variables or command line options being specified. Task-number: QTBUG-60232 Change-Id: I53291510887ec5c75a15d5927a84e91fb5859e26 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Adaptations for Chromium 56Allan Sandfeld Jensen2017-03-271-3/+3
| | | | | Change-Id: I78240d7956de4716757761fc6517f031b4adb822 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-03-101-0/+2
|\ | | | | | | Change-Id: I6a39d1ec0ffc0394fbb472ab1df2963ed5c69ec7
| * Handle Qt::AA_UseSoftwareOpenGLAllan Sandfeld Jensen2017-03-031-0/+2
| | | | | | | | | | | | | | | | Switch to software mode if it was requested with application attributes. Task-number: QTBUG-59273 Change-Id: Ia48b4587a3cbe3590ee9231375e07d45381bc7b2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Adapt devtools to Chromium 55Allan Sandfeld Jensen2017-03-011-4/+7
|/ | | | | | | A restructuring of all our devtools integration classes. Change-Id: I2a32b9b2e66c17b72aaa3bbf246a22d211409aa5 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* Warn on wayland if compiled with x11 support, however no xwaylandMichal Klocek2016-12-201-0/+7
| | | | | | | | Add a warning message for builds with aura and x11, when run on wayland wihout xwayland support. This will be fixed properly in 55-based. Change-Id: I7482c7989087b5702634aff5d43409ae8728cd94 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add environment variable to set chromium flagsAllan Sandfeld Jensen2016-12-011-21/+22
| | | | | | | | | | | It is not always possible to pass random flags to any QtWebEngine application, so we should allow another way of setting Chromium flags. Among other things this makes it easy to set flags when running auto tests. Change-Id: I7ffb3bf8c9ceafc7d6b1bd2ba135643a687e480f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Merge remote-tracking branch 'origin/5.7' into 5.8Allan Sandfeld Jensen2016-11-251-1/+8
|\ | | | | | | | | | | | | Conflicts: src/3rdparty Change-Id: Ib9c9eca457c1c42dab948e6cb56d44b57d5da32a
| * Merge remote-tracking branch 'origin/5.7.1' into 5.7Allan Sandfeld Jensen2016-11-211-1/+8
| |\ | | | | | | | | | Change-Id: Ifcf7423fa8d892ddad595300e33a09c7f63f5e6e
| | * Fix crash in WebEngineContext when using WaylandAllan Sandfeld Jensen2016-10-121-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For some reason the OpenGL context wayland QPA sets has no nativeHandle, so we end up crashing in strcmp. Assume a context without nativeHandle is Wayland or other GLES2 platform and also force GLES2 when using Ozone. Change-Id: Ia3fc524f3ffbb278d86f9153ec96c7258ef86656 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into 5.8Liang Qi2016-11-111-13/+6
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/core/content_browser_client_qt.cpp src/core/content_browser_client_qt.h src/core/gl_surface_qt.cpp src/core/print_view_manager_qt.cpp src/core/web_contents_delegate_qt.cpp src/core/web_engine_context.cpp src/webengine/doc/src/qtwebengine-overview.qdoc src/webengine/doc/src/qtwebengine-platform-notes.qdoc src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp src/webenginewidgets/webenginewidgets.pro sync.profile Change-Id: I44495f4d899580c882d6b86d68d7f6b77c8e91f6
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-11-041-11/+2
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also apply a4b04e4c on src/webengine/doc/src/qtwebengine-deploying.qdoc, use the macro \macos. Conflicts: src/core/media_capture_devices_dispatcher.cpp src/webengine/doc/src/qtwebengine-deploying.qdoc src/webengine/doc/src/qtwebengine-platform-notes.qdoc Change-Id: Ia6092a56bfe23da7c06f5389718ebbc9b78ef820
| | * | Disable GPU when no shared OpenGL context is availableAllan Sandfeld Jensen2016-10-271-11/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case an OpenGL context can not be created we can try running in software compositing mode. This should have a much better chance of working as a fallback. Change-Id: Icaab24dde8f4b6c8ea4023cf36b0bb679143166f Reviewed-by: Michael Brüning <michael.bruning@qt.io>
| * | | Respect command-line flags overriding our embedded defaultsAllan Sandfeld Jensen2016-10-111-2/+4
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | Check if the opposite flag has been given by the user before adding our own defaults. Task-number: QTBUG-56432 Change-Id: I7d6b8fed2c3e20405e3986f9afeb2193751a93f3 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
* | | Fix building when QT_NO_OPENGL is definedAndy Nichols2016-10-021-2/+9
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-54327 Change-Id: I759598d56aa0a74b64092365b422a743fb508ac6 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | Adaptations to Chromium 53Allan Sandfeld Jensen2016-09-141-5/+7
| | | | | | | | | | | | | | | Change-Id: I15053486edfd42ee607250b4f14fb6eaa325c959 Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into 5.8Allan Sandfeld Jensen2016-08-301-0/+13
|\| | | | | | | | | | | Change-Id: I82f7a6a6d1bf27dc8adf7e2a91ea8ab29c54a607
| * | Ensure WebEngineContext::destroy() is called before the destructorAllan Sandfeld Jensen2016-08-231-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a false reference only removed after destroy() is called, so the tearing down of static objects won't dereference it before the QApplication is destroyed and the post routines including destroy() are called. Also adds a little safety by asserting destroy() has been called before ~WebEngineContext() and make sure we don't create a new WebEngineContext() during shut down. Task-number: QTBUG-54769 Change-Id: I2b1d189f9ebd8da2dc9f322f9bb307a5aa0c6a2f Reviewed-by: Florian Bruhin <qt-project.org@the-compiler.org> Reviewed-by: Michael Brüning <michael.bruning@qt.io>
* | | Work-around moc issueAllan Sandfeld Jensen2016-08-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Recent moc appears to have trouble parsing http_status_code.h, but it is only included due to an unnecessary include in web_engine_context.h we should have used a forward declaration for. Change-Id: Idd586bdb7719627b951a32905e4207fa8db0393d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-08-051-8/+38
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also blacklist tst_QWebEnginePage::comboBoxPopupPositionAfterChildMove() and comboBoxPopupPositionAfterMove(). Conflicts: .qmake.conf src/3rdparty src/core/render_widget_host_view_qt.cpp src/core/resources/resources.gyp src/webengine/doc/src/qtwebengine-platform-notes.qdoc src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h tests/auto/widgets/qwebenginepage/BLACKLIST tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp tools/qmake/mkspecs/features/functions.prf Task-number: QTBUG-55158 Change-Id: I1d73ac9b3ca5293ad3c7e3a56f4c395da930e6f4
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Allan Sandfeld Jensen2016-08-021-8/+38
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty src/core/resources/resources.gyp src/webengine/doc/src/qtwebengine-overview.qdoc src/webenginewidgets/api/qwebenginepage.cpp src/webenginewidgets/api/qwebenginescriptcollection.cpp src/webenginewidgets/api/qwebenginescriptcollection_p.h tests/auto/widgets/qwebenginepage/BLACKLIST And readded newly in 5.6 enabled tests to the BLACKLIST. Change-Id: I4ab1fc54ebfaaf940df81b0d8d6bdd15cae8b7c4
| | * Improve OpenGL implementation checkAkihiko Odaki2016-07-131-8/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt WebEngine uses `isOpenGLES` to know whether the OpenGL implementation is EGL with OpenGL ES 2.0. However, some non-ES OpenGL implementation such as eglfs_x11 uses EGL and are compatible with OpenGL ES 2.0. This change allows to use them. Also the change will allow to detect incompatible combinations. (i.e. EGL + ES-incompatible OpenGL, API other than EGL + OpenGL ES) Change-Id: I0abea253696d06ec365bde2176663700e8567f45 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | Fix usingQtQuick2DRendererAllan Sandfeld Jensen2016-06-291-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The software backend device was renamed "software", the environment variable "QT_QUICK_BACKEND", and we need to disable OpenGL for any none default QtQuick backend. Change-Id: If59475002fe43f78dcda0ead2508d1285f923a4a Reviewed-by: Andy Nichols <andy.nichols@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* | | Adaptations to Chromium 51Allan Sandfeld Jensen2016-06-011-0/+3
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A few remaining details need to be changed to port to 51: - AX_STATE_FOCUSED no longer exist and is now queried from the accessibility manager. - OnDuplicateSection no longer exist and is no longer needed on Windows. - Vorbis and AAC codecs are no longer included as supported in chrome_content_client.cc so we match that. - Blink is no longer started lazy and the method WebKitInitialized no longer exists in RenderProcessObserver. We must therefore get rid of the observer, and can mark qrc immediately. - Chromium will now use gpu memory buffers for video by default on both Linux and OS X. It however no longer works for us on either platforms, and since it doesn't give us any performance benefits, we might as well disable it. Change-Id: Ie0ee361f05a1e2207fcc5b88f98f9026ccd45f78 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Allan Sandfeld Jensen2016-04-251-4/+4
|\| | | | | | | Change-Id: I329397621f19ba3890be5daf44a6bb2d668ad2d8
| * Switch BrowserContextAdapter to QSharedPointerAllan Sandfeld Jensen2016-04-191-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | BrowserContextAdapter is not a form of shared data, and using QExplicitSharedDataPointer on it as always been a misuse of the class. Instead we should switch it to QSharedPointer, which also allows us to use QWeakPointer. Change-Id: I8eb489b4a12d3fdddcde55821be294814a156a9d Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Michal Klocek <michal.klocek@theqtcompany.com>
* | Merge branch '5.6' into 5.7Allan Sandfeld Jensen2016-04-181-4/+19
|\| | | | | | | Change-Id: I490e0ee46d3ff040ca26426feb7e4d6ef7098f94
| * Avoid crashing if WebContext is accessed before initializedAllan Sandfeld Jensen2016-04-111-4/+19
| | | | | | | | | | | | | | | | | | While it is better to use the global shared OpenGL context, we can fall back to using the module type which is usually correct. Change-Id: I441bfdc38db593abfd10cb08ba90af09dcd31a2a Task-number: QTBUG-51379 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | Merge branch '5.6' into 5.7Allan Sandfeld Jensen2016-04-111-8/+20
|\| | | | | | | Change-Id: I53645ee5405b1c43807123fd3c196e314cfd1ce9
| * Fix crashes due to qputenv being called after Chromium initialization.Alexandru Croitor2016-04-011-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The qputenv() call inside gl_surface_qt.cpp, which is executed on a GpuChildThread, can reallocate the process environment structure, and it is possible that at the same time the main thread calls getenv, which will dereference a pointer to the freed environment structure, essentially causing a use-after-free crash. Make sure the qputenv() call happens before Chromium initialization starts, so no thread-race can occur. Change-Id: I4ecbdc8bf2abbe45f7d6c5d2633dc9fe27f51e66 Task-number: QTBUG-52124 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com> (cherry picked from commit 76c61aa1400ef2def204c3732e30e08e40631e8d)
| * Fix CommandLine initialization on WindowsJoerg Bornemann2016-03-311-7/+20
| | | | | | | | | | | | | | | | | | | | | | | | Chromium insists on getting the command line via the system call GetCommandLineW. QCoreApplication already did that, and we want to pass the already split argument vector to init CommandLine. This way, the user can pass custom arguments to QGuiApplication, and Chromium will pick those up correctly. Task-number: QTBUG-51971 Change-Id: I85b2071fcd8e5781b13ec8d22dc00b1a0c71601b Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>