Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

QtWebEngine/Features: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Feature discussion)
 
(One intermediate revision by the same user not shown)
Line 3: Line 3:
==New features discussion - 2023 April workshop==
==New features discussion - 2023 April workshop==
===Ongoing===
===Ongoing===
    Post-data
* Post-data
    Share screen selection
* Share screen selection
    SavePage API
* SavePage API


===Possible for 6.6/6.7===
===Possible for 6.6/6.7===
QWebEngineWindow
* QWebEngineWindow
    - old patch
** old patch
    - direct or indirect
** direct or indirect painting?
Extensions
* Extensions
    - Extended screen selection (for Teams native/Chromium like API)
** Extended screen selection (for Teams native/Chromium like API)
    - Qt API
** Qt API
    - Enabling more Chromium extensions API
** Enabling more Chromium extensions API
    - Try plasma-browser-integration. Because it is browser agnostic
** Try plasma-browser-integration. Because it is browser agnostic
    - smaller adblockers and noscript
** smaller adblockers and noscript
ChromeDriver
* ChromeDriver
    - WIP patch
** WIP patch
    - might fit with a minimum core browser using qwebenginewindow or qwebenginepage directly.
** might fit with a minimum core browser using qwebenginewindow or qwebenginepage directly.
SubFrames
* SubFrames
    - JS
** JS
    - Printing
** Printing
    - Value type under qwebenginepage perhaps?
** Value type under qwebenginepage perhaps?
Interface for service workers
* API for service workers
    - also JS
** JS
    - also control of install/uninstall
** control of install/uninstall
    - Needs new QWebEnginePage replacement class, and discovery.
** might need new QWebEnginePage replacement class
Popup blocker API
** needs discovery API
    - WIP patch (by Juri)
* Popup blocker API
Spellchecker add word
** WIP patch (by Juri)
    - probably simple
* Spellchecker add word
    - but need to be stored in profile settings ini file.
** probably simple
Load state on page resources.
** but need to be stored in profile settings ini file.
 
* Load state on page resources
Password manager/autofill/webdata
* Password manager/autofill/webdata
    - probably a lot of work
** probably a lot of work
    - Providing WebData might not be hard, but it is all interconnected
** Providing WebData might not be hard, but it is all interconnected
WebUSB,WebBluetooth
* WebUSB,WebBluetooth
    - Find compelling use-case.
** Find compelling use-case.
FIDO2 API missing
*FIDO2 API missing
    - Pin and other things. There is a chromium class we have not implemented.
** Pin and other things. There is a chromium class we have not implemented.
Permanent settings/permissions
* Permanent settings/permissions
    - Storing profile state between sessions.
** Storing profile state between sessions.
    - might have old WIP patch by Kirill
** might have old WIP patch by Kirill
    - Mostly a matter of API and defaults
** Mostly a matter of API and defaults
Image animation control (QTBUG-86154)
* Image animation control (QTBUG-86154)
    - animation allowed/once/never
** animation allowed/once/never
Picture-in-Picture
* Picture-in-Picture
    - might already work, or need overlay support
** probably need some kind of overlay support
 
* Dark mode API
Dark mode API
* Install/replace root certificates
 
Install/replace root certificates
      
      
===Using Google API===
===Using Google API===
Google translate
* Google translate
 
* Safe browsing
Safe browsing


==Chromium DevTools==
==Chromium DevTools==

Latest revision as of 09:42, 14 April 2023

(Incomplete) list of WebEngine features, and how to test for them. Actively maintained list is available on a dedicated documentation page: Qt WebEngine Features

New features discussion - 2023 April workshop

Ongoing

  • Post-data
  • Share screen selection
  • SavePage API

Possible for 6.6/6.7

  • QWebEngineWindow
    • old patch
    • direct or indirect painting?
  • Extensions
    • Extended screen selection (for Teams native/Chromium like API)
    • Qt API
    • Enabling more Chromium extensions API
    • Try plasma-browser-integration. Because it is browser agnostic
    • smaller adblockers and noscript
  • ChromeDriver
    • WIP patch
    • might fit with a minimum core browser using qwebenginewindow or qwebenginepage directly.
  • SubFrames
    • JS
    • Printing
    • Value type under qwebenginepage perhaps?
  • API for service workers
    • JS
    • control of install/uninstall
    • might need new QWebEnginePage replacement class
    • needs discovery API
  • Popup blocker API
    • WIP patch (by Juri)
  • Spellchecker add word
    • probably simple
    • but need to be stored in profile settings ini file.
  • Load state on page resources
  • Password manager/autofill/webdata
    • probably a lot of work
    • Providing WebData might not be hard, but it is all interconnected
  • WebUSB,WebBluetooth
    • Find compelling use-case.
  • FIDO2 API missing
    • Pin and other things. There is a chromium class we have not implemented.
  • Permanent settings/permissions
    • Storing profile state between sessions.
    • might have old WIP patch by Kirill
    • Mostly a matter of API and defaults
  • Image animation control (QTBUG-86154)
    • animation allowed/once/never
  • Picture-in-Picture
    • probably need some kind of overlay support
  • Dark mode API
  • Install/replace root certificates

Using Google API

  • Google translate
  • Safe browsing

Chromium DevTools

Version: Qt 5.4.0 onwards

Description: Ability to inspect and debug layout and performance issues of any web content.

Documentation: Qt WebEngine Developer Tools and Debugging with WebEngine

How to test: Launch a QtWebEngine app with command line option --remote-debugging-port=[your-port] and use any QtWebEngine-based example browser (from the same version) instance to connect to http://localhost:[your-port]. See documentation for details. Also, widgets' based simplebrowser[1] and quicknanobrowser[2] examples implement opening devtools in a separate view through context menu.

WebRTC

Version: Qt 5.4.0 onwards

Description: Real-Time Communications (RTC) capabilities via simple APIs

Documentation: WebRTC usage

How to test: Set up a webcam / microphone. Open e.g. https://test.webrtc.org/ in simplebrowser[1] for simple test of supported capabilities. Also https://www.webrtc-experiment.com/RecordRTC/ is good to just test screen recording.

HTML5 Geolocation

Version: Qt 5.5.0 onwards

Description: Javascript Geolocation API with QtLocation as a backend

Documentation: HTML5 Geolocation

How to test: QtLocation should be built before QtWebEngine. Using simplebrowser[1], go to http://html5demos.com/geo, and allow the page to find your position. Note that on Windows you need an external GPS receiver connected, see QtPositioning documentation.

Fullscreen

Version: Qt 5.6.0 onwards

Description: Support for viewing content in fullscreen mode.

Documentation: Fullscreen API support

How to test: Use either specialized videoplayer[3] example or just quicknanobrowser[2] and go to youtube.com or vimeo.com and pick any video. Click on the full screen icon to go into fullscreen mode.

Drag & Drop

Version: Qt 5.7.0 onwards

Description: Support for HTML5 drag and drop.

Documentation: Drag and Drop support

How to test: Try any HTML5 drag and drop demo. E.g. this, that or maybe even yon, or w3schools one. Dragging files into the browser is not part of HTML5 but also works. Try also to invoke context menu of simplebrowser[1] or quicknanobrowser[2] and click 'Save page', which will land an offline copy of a page into default downloads directory. Then just drag this file back to browser from a system file explorer. That should open an offline page through file url.

Printing to PDF

Version: Qt 5.7.0 onwards

Description: Support for printing a web page to a PDF file.

Documentation: Print to PDF file

How to test: Use html2pdf[4] and printme[5] examples to test the feature.

HTML5 DRM video

DRM Protected, widevine plugin

Version: Qt 5.7.0 onwards

Description: Support for viewing DRM protected videos.

How to test: QtWebEngine should be built with proprietary codecs enabled (pass '-proprietary-codecs' to configure when building qt). Try and view videos at. e.g. http://demo.castlabs.com/, http://ssdemo04.swankmp.net/ or https://shaka-player-demo.appspot.com/demo/.

Local Storage

Description: Support for HTML5 local storage.

How to test: It seems currently there are only auto-tests in qtwebengine/tests/auto/widgets/qwebenginepage, and no manual tests or examples.

WebGL

Description: Support for HTML 5 WebGL

How to test: Visit http://webglsamples.org/ or https://threejs.org/examples/ and try available demos.

WebSockets

Description: Support for HTML 5 WebSockets

How to test: Try simple online test echo server https://www.websocket.org/echo.html

PPAPI / PDF Viewer

Version: Qt 5.13.0 onwards

Description: Support for PPAPI plugins, and PDF viewer in particular

Documentation: [1]

How to test: Launch SimpleBrowser, QuickNanoBrowser, and make sure that 'Plugins' are enabled. Load a PDF directly by URL, and indirectly embedded in HTML