summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fix the build with Qt 5.1Andras Becsi2013-11-264-1/+10
| | | | | | | | We are still able to build with Qt 5.1 if we disable the hardware acceleration codepaths. Change-Id: Ic748dac0a7f25bbd79f2f711a18431872cebd917 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Remove unneeded dependencies to chromium test support.Andras Becsi2013-11-261-2/+0
| | | | | Change-Id: I2d84dca693ee89807c7f125f4645375dada64032 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* Add missing overrides for AndroidAndras Becsi2013-11-261-0/+5
| | | | | Change-Id: I4a3d3e898b7202c68ee85fd736cd4729daa794b2 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Make it build with QNX chromium portJeff Rogers2013-11-262-4/+11
| | | | | | | | - Fix excludes - Fix gyp so that it supports cross-compiling on mac as well Change-Id: I89081f4115ec4dec6ca2c96bb5ad367d42405bb3 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Fix which method in functions.prf on Windows.Zoltan Arvai2013-11-221-1/+1
| | | | | | | | The first "set _endwhich" needs a value to work well. Change-Id: I1fb65b71dd7dd378de62d2836ba003d54787cd23 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com> Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Get rid of the intermediate "shared" static library.Jocelyn Turcotte2013-11-2113-56/+19
| | | | | | | | It is not necessary anymore since QtWebEngineProcess dynamically links to the core library which will now contain those symbols. Change-Id: I3475347bab41a00b943f934a5e341326c66dc726 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Make QtWebEngineProcess a slim executable.Jocelyn Turcotte2013-11-217-12/+115
| | | | | | | | | | | Move all the process code in the core library and let the later simply call its QtWebEngine::processMain exported function from its main. This also allows us building QtWebEngineProcess directly with qmake without going through gyp. Change-Id: I8df36510d0bf14e313918bef807e2118f1ecadd5 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Fix findOrBuildNinja in functions.prf on Windows.Zoltan Arvai2013-11-201-1/+2
| | | | | | | | | On Windows ninja executable has filename extension. Also slashes need to be converted to backslashes otherwise nmake will not execute ninja from makefile. Change-Id: I89a302860c40de4489231914738578e290476e12 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Add which method to functions.prf for Windows.Zoltan Arvai2013-11-201-2/+11
| | | | | | | | On Windows the where util is similar to which, but it can return multiple matches so only the first one is selected. Change-Id: I55953ce5dd4940a37ab4fae7baa78dd2deed1085 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Add guards to project files to prevent unnecessarily processing on Windows.Zoltan Arvai2013-11-192-3/+5
| | | | | | | | | On Windows with default debug_and_release configuration project files parsed tree times while generating Makefile, Makefile.Debug and Makefile.Release. Some operation needs only one time processing. Change-Id: I02d04076cbb70c705916703526444585e83a24ff Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Fix the dyld error when running examples and tests on Mac.Jocelyn Turcotte2013-11-192-0/+10
| | | | | | | | | | | | | | | Make sure that the install_name is set properly when linking the core library. It would normally be possible to set this to <(PRODUCT_DIR) and let gyp handle this, but this isn't supported (see gyp.XcodeSettings.GetInstallName) so let qmake resolve the path. This should be removed to use something relative to @loader_path that would resolve this path to the Qt module libraries once we have proper installation logic in place for the core library. Change-Id: Id617afdf95c4aede6802e55b05deffe3218be82e Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Fix path for webkit_strings gypi dependency on Windows.Zoltan Arvai2013-11-191-1/+1
| | | | | | | Windows specific dependency points to the wrong path. Change-Id: Ib94f15e8872666c716ad6093b1f0ca957a050db7 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Fix Qt rcc's path in Qt5WebEngineCore.ninja on Windows.Zoltan Arvai2013-11-191-0/+1
| | | | | | | | | | | | | On Windows backslash in QMAKE_RCC causes wrongly generated Qt5WebEngineCore.ninja file. For example QMAKE_RCC's value generated to lib/lib.gyp as 'c:\Qt-5.2.0\bin\rcc.exe'. This turns to 'c:/Qt-5.2.0[BS]in[CR]cc.exe' in Qt5WebEngineCore.ninja after running qyp. That means \b is parsed as backspace and \r is pharsed as carriage return character. Current Windows versions can handle forward slashes in paths so backslashes can be replaced to forward slashes when needed. Change-Id: I814dc63df92b78ed5cae028e0b8c36dbf3eb1e49 Reviewed-by: Andras Becsi <andras.becsi@digia.com> Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* Make sure platformNames for QtShareGLContext are compared lowercase.Zeno Albisser2013-11-191-2/+2
| | | | | Change-Id: I070e5b5f135f0e74eaf47bd5975892fd288dafab Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Add a WebEngine.experimental QtQuick plugin library.Jocelyn Turcotte2013-11-187-3/+134
| | | | | | | | | | | | Bring this QtWebKit concept to our API as well to contain APIs that we aren't comfortable adding to the supported-forever group yet and allow trying them out unofficially for an undetermined number of releases first. Change-Id: I52c8655dfd2996ea461ac6c00de975002827a4c3 Reviewed-by: Andras Becsi <andras.becsi@digia.com> Reviewed-by: Arvid Nilsson <anilsson@blackberry.com> Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Add an intermediate Qt5WebEngine module library.Jocelyn Turcotte2013-11-1814-21/+167
| | | | | | | | | | | | | | | | | | Make the WebEngine QtQuick plubin library a library only that fetches the API privatly from the official module. This will allow an experimental plugin library to also have access to the API classes, which it currently can't since the plugins aren't deployed the same way as module to <prefix>/lib. The module currently only export classes privately but the plan is to make this library the official linking point of entry for applications along with the Qt5WebEngineWidgets module. The WebEngineCore library could eventyally be merged into this module library if we can get gyp to play well with qmake. Change-Id: I5edb60b412e213b59f791a7b8df9f28c295502de Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Remove the need for application to set an RPATH.Jocelyn Turcotte2013-11-189-16/+8
| | | | | | | | | | | | | The WebEngineWidgets module and the WebEngine QtQuick plugin libraries already have the RPATH set properly in their headers and the application won't need to link any symbol directly to the Core library. Remove the RPATH directive for examples and tests and fix the build issue by making sure that the link directive isn't passed to dependencies through the prl or pkgconfig file. Change-Id: Id1f5efb8c9823613e804e8e6356d711d561d72ec Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Use a QImage instead of QPixmap in BackingStoreQt.Jocelyn Turcotte2013-11-152-20/+23
| | | | | | | | | | | | | | | | | This is mainly to get rid of the warning shown when using QQuickWebEngineView without delegated rendering with the threaded scene graph render loop: "QPainter: It is not safe to use drawPixmap() outside the GUI thread" The main advantage that QPixmap gave us was that QPixmap::scroll is provided. This patch pulls out some of its implementation to make the use case work with QImage. Since QPixmap is backed by a QImage with the raster paint engine, the previous behavior should remain except on the DirectFB platform, which we don't ship to yet. Change-Id: If77c9079ee95218519be1d092cad24635e29a279 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Delegated renderer: implement cc::DrawQuad::SOLID_COLOR.Jocelyn Turcotte2013-11-152-0/+24
| | | | | | | | | | | I could currently only test this with --enable-overlay-scrollbars. Background color quads still need some work in Chromium to be able to to use this kind of quads, see <http://code.google.com/p/chromium/issues/detail?id=114658>. Change-Id: I9c9bdb5c72b91827cfdb7e38e44755c6361a05cf Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Add some QQuickWebView graphics stack tests.Jocelyn Turcotte2013-11-1511-3/+256
| | | | | | | | | | | This does basic sanity testing of the graphics stack for both the hardware accelerated and software codepaths. This also adds a required signal to report the CompositingSurface later on if the QWindow wasn't available yet when Chromium asked for it. Change-Id: I402ec5ade9114c78bea7960c5f0de989f54110e3 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Delegated renderer: enable by default for QQuickWebView.Jocelyn Turcotte2013-11-1511-41/+64
| | | | | | | | | | | This also allows the software code path to be enabled: - Programmatically by setting this dynamic property on the QCoreApplication: "QQuickWebEngineView_DisableHardwareAcceleration" - Through the Chromium command line switch "--disable-delegated-renderer" for quick development use cases. Change-Id: I32136d880444e0a24f042c7c4862950b7ed0c910 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Delegated renderer: Fix remaining synchronization issues.Jocelyn Turcotte2013-11-157-137/+103
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes two issues: - The onFrameSwapped slot was connected with a QueuedConnection, this means that any previous frame triggered by Qt could be queued right before updatePaintNode is called, and be handled right after, thus picking our m_pendingAckFrameData and sending the Ack before this frame was actually swapped. - For cases where Qt triggers a new frame (e.g. typing text in a QtQuick text area) it would be possible that it starts rendering before m_pendingUpdateFrameData had been set, which would render the old frame while Chromium might be in the middle of rendering the new one on the same resources, or destroying them. The solution is grossly to do proper used resource reporting to the child compositors via cc::CompositorFrameAck::resources. We previously released all resources on every frame, and Chromium would resend back to us the ones that could be reused without change. We now instead only return unused resources, but this also means that we have to keep track of used resources ourselves. cc::DelegatedFrameData::resource_list only contain new resources to be added to the scene and we keep a deep copy of the cc::TransferableResource into our MailboxTextures. A few other changes that come with this: - A few null-checks can now be removed since we can better rely on the integrity of the information passed through DelegatedFrameData. - Since we can now prevent used resources from being destroyed while we use them, trigger a frame Ack immediately after updatePaintNode instead of waiting until the buffer is swapped, like ui::Compositor does. - MailboxTexture is now more autonomous, but still require some information from quads. Mark them as not containing alpha by default and fetch this information from quads when encountered. Change-Id: Ice235f3a98a179c87eec7fbcb9880e34b0ed1e73 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Fix qmake -r by moving load(qt_parts) to the end of the projectAndras Becsi2013-11-151-2/+3
| | | | | | | | | This is an issue for non-developer builds of Qt where the forwarding headers have to be generated before processing the examples project files. Change-Id: I683227c97a763c48b8ab090580f37f7134680c59 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Mark functions with Q_DECL_OVERRIDE where necessary.Zeno Albisser2013-11-1417-245/+222
| | | | | Change-Id: I15261c3737a3284b99308453132f09ee7889c444 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* [Autotests fixes] Don't assert if there's no QWindowPierre Rossi2013-11-131-2/+0
| | | | | | | | Or we won't be able to run QWebEnginePage autotests in debug. Change-Id: I0b479fe7de6bd10984201f292514c343a15135cd Reviewed-by: Zeno Albisser <zeno.albisser@digia.com> Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Move implemented properties aroundPierre Rossi2013-11-131-3/+3
| | | | | | | Out of the #ifndef Q_MOC_RUN block, so we can keep track of what's missing there. Change-Id: I53ef60b1a70b5495603d44fb23491c144891eb92 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Fixup Webkit bug linksPierre Rossi2013-11-131-14/+14
| | | | | | | There's no such thing as bugs.webengine.org ;) Change-Id: Ie8ac6a6a0a4e6b23580084d36f334e2fd1cb25fb Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Remove the native window hardware acceleration support for widgets.Jocelyn Turcotte2013-11-135-24/+7
| | | | | | | | This experiment served its purpose and is now more often broken than useful. Change-Id: I73ea68c99dedcc8a3fe9004d130518daf146b493 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Delegated renderer: Add YUV video support.Jocelyn Turcotte2013-11-135-2/+415
| | | | | | | This basically reimplements GLRenderer::DrawYUVVideoQuad. Change-Id: I990e224d69b372c76e2174c174c9b82678e25b86 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Make fancybrowser build and linkPierre Rossi2013-11-124-44/+45
| | | | | | | Also update references in the doc. Change-Id: Ica4d77cb1db040b466c739e4fc1bfd37df544589 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Import fancybrowser examplePierre Rossi2013-11-1210-0/+524
| | | | | Change-Id: Ia61fbe3ef6b76c7530d10d4a3305d4208b3469ef Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Delegated renderer: Share context support for QNXArvid Nilsson2013-11-121-0/+2
| | | | | | | | | Add code to extract the EGL context on QNX for use as the share context in the Chromium GPU process/thread. Very similar to the other platforms. Change-Id: I54fba69283e984a392c11922da2483ce921ea594 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Delegated renderer: Put textures on those quads.Jocelyn Turcotte2013-11-1120-78/+667
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A few changes are necessary to allow fetching textures provided by the render processes through IPC and bound to their respective GL context in the GPU process and use them in the QtQuick scene graph. - Remove the plain color test textures. - Allow setting the QtQuick QOpenGLContext's handle as the share context for all context set as shared in the Chromium GPU process. We do this by letting the GpuChannelManager ask us for a ShareGroup instance responsible for returning a sharing GL context handle. - Fetch texture IDs from the MailboxManager used by the GPU process using the Mailbox given to us in the DelegatedFrameData. This is the same mechanism used by Chromium to share textures between "client" GL contexts. - Keep the QtQuick scene graph threads and Chromium in-process GPU thread separate. The complicated part of merging those two rendering pipelines on the same thread is that it would force Qt to also use only one thread for rendering. For the moment we will try to synchronize those threads together instead. - Lock the Qt SG thread while waiting for resource sync points. Do so by posting a callback to the Chromium GPU thread and wait until the sync point of every resource has been retired by the producing contexts. - Acknowledge the delegated from once QtQuick swapped the GL buffers instead of right after we added the frame to the scene graph. This fixes some issues where the textures for the previous frame would already be released as Chromium was producing the new frame. There are still a few issues regarding synchronization that have to be fixed, especially when Qt triggers the rendering of a new frame while Chromium is starting to produce the next frame. Note: To enable it we still need to pass the following command switches: --enable-delegated-renderer --enable-threaded-compositing --in-process-gpu Change-Id: I2d4f7fac603b1808ed1495a8d689cb48e9ed41b9 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Use our own implementation of GetDefaultXDisplay.Jocelyn Turcotte2013-11-115-0/+60
| | | | | | | | This allows the Chromium GL code to initialize on the display created by Qt. Change-Id: I3d21f56c3792d6e99cb94690f56d7dd5c542045a Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Make RenderWidgetHostViewQtDelegate a pure interface.Jocelyn Turcotte2013-11-0616-251/+179
| | | | | | | | | | | | | | | | | | | | | | | RenderWidgetHostViewQtDelegate acts as a bidirectional interface to avoid exporting Chromium symbols outside of the core dynamic library. The problem is that, other than this, from the top layer point of view, its responsibilities are the same as RenderWidgetHostViewQt, and it would be better not to split its logic without properly defined responsibilities. Using it as a base class and interfacing through its protected methods is also cumbersome and make the destination of calls on the upper layer difficult to discern. Use instead a dual pure interface mechanism like WebContentsAdapter and pass the callback client interface directly in WebContentsAdapterClient::CreateRenderWidgetHostViewQtDelegate. This allows RenderWidgetHostViewQtDelegate to be solely what it should be, an interface. Change-Id: I4e55439ae7f9539cc9e360f0756fbf391405f3b7 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Move DelegatedFrameNode and the SG logic to its own file.Jocelyn Turcotte2013-11-065-324/+447
| | | | | | | This avoids polluting render_widget_host_view_qt_delegate.cpp Change-Id: I06af66f01f842e105bbded75b01f9c8346fd5df9 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Implement QWebEnginePage::runJavaScriptPierre Rossi2013-11-045-4/+165
| | | | | | | | | | | | | | | | | | | | | We can't have QWebFrame::evaluateJavascript in its old form for several reasons, the first of which being that we don't have a QWebEngineFrame class anymore. This is worked around by adding an optional QString parameter with the frame's XPath. Another issue is that the WebKit1 API was synchronous, and this would not play nicely with the very asynchronous nature of chromium we're now sitting on top of. In order to make this obvious when porting, we rename it to runJavaScript which doesn't return any result. This also introduces a template member function overload that will accept function pointers, functors and lambdas,much like Qt5's new signal/slot syntax, in order to get the result of the javascript evaluation back. Change-Id: I64e15a6f5a168936c52a4da2cef6285dfd16e0d5 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com> Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* rename export_from_git.py to take_snapshot.pyZeno Albisser2013-11-011-0/+0
| | | | | Change-Id: I08edcd97e9e2c38d9984b8ed2fbc9b64c88f8dd5 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Change export_from_git.py to take foll snapshots from upstream.Zeno Albisser2013-11-011-91/+105
| | | | | | | | | | | | | | | | | | | The updating procedure for chromium is now as follows: - update 3rdparty_upstream to the requested state for the snapshot - initialize 3rdparty submodule by executing git submodule init -- 3rdparty git submodule update -- 3rdparty - execute the export_from_git.py script from the QtWebEngine top level directory. - do a "git commit -a" in 3rdparty/ and write an appropriate commit message mentioning the exact state from where the snapshot was taken from. - do a "git show" to double check the changes for the snapshot look reasonable. - push the changes to the 3rdparty repository. Change-Id: I7806d284c9a146f857600cfef0face8331af646a Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Fix the build with the latest qtdeclarative/stable.Jocelyn Turcotte2013-11-011-5/+5
| | | | | Change-Id: I8764ff93fa94ef281ccd6fd6b7e7841aaedf05e8 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Add patch: Fix the build with a GL ES2 configured Qt.Jocelyn Turcotte2013-11-013-0/+165
| | | | | Change-Id: Ice94e3cefca317573db3492dd6622d20f4b6e00a Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Add patch: Do not forward declare UIResourceRequest, Identity, IdentityKey.Zeno Albisser2013-10-292-0/+146
| | | | | | | | This seems to be necessary to compile for OSX 10.7, and this is the OSX version we currently use in the CI system. Change-Id: I1edcf35baee040328de11801f58ce78ed1f8f6cb Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* QtWebEngine Dev Tools (Web Inspector)Chris Hutten-Czapski2013-10-2917-11/+441
| | | | | | | | | | | | | | | | | | To implement the Web Inspector we need a delegate to handle the http server and devtools connections, a landing page, a ContentClient to tell the devtools server where to find its frontend resources, those frontend resources, and an API for embedders to turn on inspectability in WebEngineViews. The frontend resources are build by the chromium build and are copied over as part of lib's build. The landing page was taken directly from content_shell. This should be replaced by either a new one for all QtWebEngine embedders or by a mechanism for embedders to supply their own (or both). Change-Id: Id4076d5ede34a91abf8dba443aed4dca4be1b3e5 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* Implement popup dialogMary Wu2013-10-297-5/+33
| | | | | | | | | This is used to show like date time picker whose document content was generated in webkit engine. Change-Id: I900a6ae5f61646d2ef8497dccc114f7cb5882349 Reviewed-by: Michael Bruning <michael.bruning@digia.com> Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* Silence a warningPierre Rossi2013-10-292-2/+1
| | | | | | | | While we're at it, QWebEnginePage::createWindow is non const, we could probably use a non const d-ptr in there. Change-Id: If5ad43dcb5d13454c87b7dc84d69b976b1b5e334 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Early return if no submodules were found using DEPS filesAndras Becsi2013-10-291-1/+4
| | | | | | | | While we're at it, also remove a stray currentDir variable in readSubmodules. Change-Id: Ia814906597f436513c4e57ed487ba478154eee4f Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Give the demo browser prettier popupsPierre Rossi2013-10-291-4/+56
| | | | | Change-Id: Ia8052bffc7be18c4d8f81c3a89ac4a64b1c589af Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Update shasum for 3rdparty submodule.Zeno Albisser2013-10-291-0/+0
| | | | | | | | | This is necessary because I pushed patches on top of the 3rdparty submodule to debug the mac CI bot. Change-Id: I3c3f2aff921bc8438bbbb446cbb3e125d21562f7 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Implement subprocessCall and subprocessCheckOutput.Zeno Albisser2013-10-291-13/+21
| | | | | | | | | These functions are shims for subprocess.call and subprocess.check_output and allow to display the command being executed on screen as well. Change-Id: I9507b8b4f0c006572211620c935e673f848dbbbc Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Implement parsing of Chromium .DEPS files.Zeno Albisser2013-10-292-9/+93
| | | | | | | | | | | | | | | | This is necessary to be able to checkout a chromium release branch. Chromium release branches do not make use of git submodule. Instead the dependencies or submodules are specified in a .DEPS.git file. Given some python scopes and callbacks for resolving variables, such a file can be invoked like a python script. The dependencies will then be exported into the provided scopes and we can use that information to initialize git submodules. Change-Id: Ibab09b1077720b73f89efff16d38b308f31cf2ab Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>