summaryrefslogtreecommitdiffstats
path: root/src/core/web_engine_context.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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>
| * Enable Viewport Meta support for Embedded platformOtavio Salvador2016-02-161-0/+1
| | | | | | | | | | | | | | | | | | | | The Viewport Meta is enabled in Android so we ought to do the same for Qt's embedded platform. Task-number: QTBUG-50903 Change-Id: I0d5aab42e740cc00eb2d9111953577019211bf11 Reviewed-by: Otavio Salvador <otavio@ossystems.com.br> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* | Fix crashes due to qputenv being called after Chromium initialization.Alexandru Croitor2016-03-311-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Enable sandboxing for OSX and Linux.Alexandru Croitor2016-03-231-1/+14
| | | | | | | | | | | | | | | | | | | | | | Remove the --no-sandbox option when starting the Chromium render process and set --disable-setuid-sandbox, so that on Linux a SetUID sandbox is not used, because Qt WebEngine does not have a separate SetUID binary. Task-number: QTBUG-50708 Change-Id: Ibadfc6e25c89bd99ec8aa20dc15de4688c35d386 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | Fix CDM plugins not always being loadedJocelyn Turcotte2016-03-101-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes the issue in a similar fashion to what Chromium is doing in chrome/browser/download/download_target_determiner.cc. PluginService::GetPlugins is the only way that the plugin info can be loaded. Since we can't do it on demand from the IO thread in a synchronous handler, do explicitly during the WebEngineContext initialization. Task-number: QTBUG-50132 Change-Id: I8ed796b541c880caf8546230b3a5011047eb0fe3 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* | Update GL mailbox synchronization to Chromium 49v5.7.0-alpha1Allan Sandfeld Jensen2016-03-071-2/+1
| | | | | | | | | | | | | | | | | | | | | | Chromium 49 switched to using SyncToken, making our old model based on sync-points obsolete. This patch rewrites our syncing to instead take advantage of new Chromium API for waiting on sync tokens. It also moves the creation of the GLFences we use out of Chromium. Task-number: QTBUG-51173 Change-Id: I04d726d4bc81bf6b7fe39bb2b5507e84a0b6991e Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | Basic adaptation to Chromium 49Allan Sandfeld Jensen2016-03-071-1/+1
| | | | | | | | | | | | | | | | Converts types, callbacks and headers to match Chromium 49. Task-number: QTBUG-51173 Change-Id: I544ef46e187105e250fea1b48b72d2c81a906640 Reviewed-by: Michael Brüning <michael.bruning@theqtcompany.com>
* | Include printing sources and enable printing for desktop platforms.Michael Bruning2016-02-101-0/+13
| | | | | | | | | | | | | | | | | | | | | | Also adds Qt specific core classes for printing as well as adding printing related objects to the web engine context and including the printing sources in the builds for the desktop platforms. Also updates src/3rdparty submodule SHA-1. Change-Id: I9c2631c59f63571c0840d838077e66122bacc741 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* | Unify license header usage.Jani Heikkinen2016-02-011-11/+14
| | | | | | | | | | | | | | | | | | Update files using old header.LGPL3 to use header.LGPL Update files using old header.FLD to use new header.FDL Update files using old header.BSD to use new header.BSD Change-Id: I36a67aaa8c3ca6c7946308defc9c03c3571a7d23 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* | Merge branch '5.6' into devAllan Sandfeld Jensen2016-01-121-7/+11
|\| | | | | | | Change-Id: I4272eb59cac08c69eaa58dd4d94debf1b8c5cf78
| * Use QOpenGLContext::isOpenGLES() to check if OpenGL ES is enabledSiteshwar Vashisht2015-12-211-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QOpenGLContext::openGLModuleType() performs a general check whether OpenGL ES support is enabled or not. However it is possible that a specific OpenGL context does not have OpenGL ES support enabled even when QOpenGLContext::openGLModuleType() returns QOpenGLContext::LibGLES. In such situations QOpenGLContext::isOpenGLES() method is correct way to determine if the context is an OpenGL ES context. Task-number: QTBUG-50015 Change-Id: I319c2932a62027d3142040045a46cdcb12fcdebe Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* | Merge branch '5.6' into devAllan Sandfeld Jensen2015-11-201-1/+1
|\| | | | | | | Change-Id: I05fe27b8321944cf68cc96dfa9dfcaeb54c8c8cd
| * Replace QList with QVectorKai Koehne2015-11-061-1/+1
| | | | | | | | | | | | | | | | Replace QList with QVector in all places where the type isn't a pointer, and is not already (indirectly) exposed through public API. Change-Id: I90e3db56bf9ebda6b3cb8fb4396d2ae283159727 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* | Fix JavaScript injection for Chromium 47Allan Sandfeld Jensen2015-11-061-0/+4
| | | | | | | | | | | | | | | | | | | | | | By default Chromium does not allow injecting javascript, however since this is a standard webview feature they have a function the Android WebView calls to allow it anyway, which we can also use. Change-Id: I692864bb78e177c2da07a9a80e756e4f10ec1a32 Task-number: QTBUG-49235 Reviewed-by: Szabolcs David <davidsz@inf.u-szeged.hu> Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* | Adapting to Chromium 47Allan Sandfeld Jensen2015-10-271-4/+9
|/ | | | | | | Updating to Chromium 47 and adapting API. Change-Id: Id465bbcd4facd7c47cb8a9f4bd4e18cbdc0d1120 Reviewed-by: Michael Brüning <michael.bruning@theqtcompany.com>
* fix crash on exit when using the inspectorJoerg Bornemann2015-09-011-0/+1
| | | | | | | | | Destroy the DevToolsHttpHandler early on, because ~DevToolsHttpHandler assumes the browser's UI thread is still running. This fixes a crash on exit in tst_inspectorserver. Change-Id: I98476231b709d60c249e58e17b09de70aed6792b Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* Merge branch '5.5' into 5.6Allan Sandfeld Jensen2015-08-181-1/+18
|\ | | | | | | Change-Id: I9977663123560a22f493b8c02d02de8897b38666