summaryrefslogtreecommitdiffstats
path: root/lib/content_browser_client_qt.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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>
* Mark functions with Q_DECL_OVERRIDE where necessary.Zeno Albisser2013-11-141-13/+13
| | | | | Change-Id: I15261c3737a3284b99308453132f09ee7889c444 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.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-111-1/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* QtWebEngine Dev Tools (Web Inspector)Chris Hutten-Czapski2013-10-291-0/+10
| | | | | | | | | | | | | | | | | | 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>
* Add support for file and data url scheme.Zeno Albisser2013-07-161-1/+21
| | | | | | | | | | | | | | | | | | | | | | | | | Local file and data url support can simply be added by registering the appropriate ProtocolHandlers. Displaying the contents of a directory is slightly more complex. This requires access to some html resource files that can be used to list the contents in rows. For Chromium such resource files are usually contained in a .pak file which is shipped with the binary. Since deploying additional files is very complicated for Qt, we want to use the Qt Resource System to bundle .pak files. Therefore this patch adds handling of rcc content generated from a .qrc file to our gyp_generator.prf. Further it replaces the regular ResourceBundle implementation with a Qt specific one. And it also implements a DataPackQt class that allows using DataPack instances with data from a QByteArray and therefore from the Qt Resource System. Change-Id: Ic41e34fbd9aec8596cbc85666a762ecdaa604edc Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Add missing header for ThreadRestrictions.Zeno Albisser2013-07-111-0/+1
| | | | | Change-Id: Iac3ea8525bb70f6f6bc442f486b72dad16e3f545 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Remove unneeded code from BrowserMainPartsQtAndras Becsi2013-07-091-19/+3
| | | | | | | | Remove code that would only be needed for content_browsertests that we do not require for now. Change-Id: I2cabbcfe63bcc0da838462eb97ab8c7eaf7289c7 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Refactor process initialization codeAndras Becsi2013-07-091-6/+110
| | | | | | | | | Move parts of the initialization from the WebEngineContext ctor to ContentMainDelegateQt and BrowserMainPartsQt members so that they are executed in their respective stages of startup. Change-Id: Iefa288c6bf775ac530f183c0dcfebb6a3230d68d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Get rid of the need to export content::GetContentClient()Andras Becsi2013-07-091-0/+23
| | | | | | | | | | | ContentBrowserClientQt is a singleton which makes it possible to access it from WebContentsViewQt and removes the need for patching chromium. This is similar to how ShellContentBrowserClient is managed in the content shell. Change-Id: I67f35520935388888c7230806ad543a58b3211c3 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fix linking of QtWebEngineProcessAndras Becsi2013-07-041-0/+8
| | | | | | | | | | | | | | Since the global factory function content::CreateWebContentsView is also needed by the web process and we exclude all implementations we have to place the definition of it in the shared static lib. However, to prevent the need for moving platform layer classes back to the shared static lib we have to revert back to use ContentBrowserClient::OverrideCreateWebContentsView in the API layer to create our platform WebContentsViewQt and make the global factory function definition empty. Change-Id: I9d46524b22458b26a043c80df02b4a5fa7d91a55 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* Stop using OverrideCreateWebContentsView for creating the contents viewAndras Becsi2013-07-041-9/+0
| | | | | | | | Use the content::CreateWebContentsView factory function to create the contents view since we already have to implement it. Change-Id: Ib60cb29604ac84877e154a47ae27f44672284726 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Quick cleanup.Jocelyn Turcotte2013-06-121-20/+0
|
* Add more missing license headersPierre Rossi2013-06-111-0/+41
|
* And shell is out !Pierre Rossi2013-06-101-19/+10
| | | | | | | Introduce a few more bits of our own very basic implementations (URLRequestContextGetter and NetworkDelegate subclasses). Still need to figure out the appropriate dependancies in blinq.gypi
* Fix undefined symbols in debug builds.Jocelyn Turcotte2013-06-101-1/+0
| | | | | | | process uses the same code as lib and decides at runtime which code to run. Fix the debug build by making sure that all infrastructure code is available in both process and lib by building common code not shared directly through chromium sources in a separate static lib.
* Replace Shell with WebContentsDelegateQt.Zeno Albisser2013-06-101-0/+16
|
* Properly implement a QWidget and QtQuick APIJocelyn Turcotte2013-06-061-22/+9
| | | | | | | | | This layers things properly to be able to implement the UI in the example application instead of directly in shell_qt.cpp. This is still using global variables to allow the Shell platform code to do callbacks to the API classes. This should go away once we properly implemented a WebContentsDelegate.
* Introduce BrowserMainPartsQt to prepare for Shell removal.Zeno Albisser2013-06-061-1/+67
|
* Stop relying on ShellBrowserClientPierre Rossi2013-06-041-0/+41
We now have our own minimalistic subclass, which still makes use of some shell parts.