QtWebEngine/WorkShop 2025 August: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
When: 2025-08-26 - 2027-08-27
When: 2025-08-26 - 2025-08-27


See [[QtWebEngine/Features]] and [[QtWebEngine/WorkShop_2024_October]] for the last workshops
See [[QtWebEngine/Features]] and [[QtWebEngine/WorkShop_2024_October]] for the last workshops
Line 11: Line 11:
* Agenda discussion
* Agenda discussion
** How to follow up on workshop
** How to follow up on workshop
**Went through last workshop notes
**We are down on man power this next year, so need to take that into account
* QtWebView status and feature requirements
* QtWebView status and feature requirements
** Platforms
*** We have now WebView2 on MSVC, but not clang/mingw
*** Android
*** iOS/macOS
*** WASM, what to do, should we ignore, who wrote it?
*** We should delete winRT backend
** Permissions
*** Can we handle WebRTC etc..
*** Fullscreen requests
*** Unknown permission for stuff we dont handle.
** Delegates
*** Could be provided if using QWidgets API
*** Integrate with native widgets on Android/iOS.
**** But we recommend QML for embedded anyway
*** Might already be handled within the libraries used by the plugins
**** needs to be tested.
** WebActions
*** Do we want them
*** if not, which of them do we need?
** History API
** JavaScript evaluation
*** With or without callback
**** can callbacks be done with console write?
*** Is very useful for our own testing
** WebChannel
*** should be possible already, but adding convinience API might be desirable
** Find API
** Favicon info
** Downloads
** Authentication API
*** check what we added to webengine
*** and integration with QNetworkAuth
**Clipboard interaction
***Might need to be tested
**Off the record mode
**New window/tab handling
***What does qtwebview currently do?
***Windows might just open new windows we then dont have any API for.
**Plugin capability test api
*QtWebView action steps
**For 6.11, do the following
**Test delegate interaction
***if handled internally, we can do QWindow API
***if we need to handle it, QWidgets API would be simpler
***Also test new window handling
**Capability API to ease implementation of features per plugin
**JavaScript API for testing purposes.
**Estimate work to support mingw/clang
* Feature brainstorm
* Feature brainstorm
** Qt 6.10 planing
** Qt 6.11 planing
*** QtWebView API
** Extensions API status
*** Something useful
**** like tabs API
**** AdBlocker test
*** WebChannel integration
** Rust stuff
** Printing API for frames (new api), JIRA ticket
** The whole update Chromium 138/140 horror story
* Support brainstorm
* Support brainstorm
** Rust requirement
*** Start with official stable rust
*** Might be a problem in the longer run
**** Google uses unstable rust
**** Google uses patched libraries
*** Allan update his patch
** Chrome standard library
*** Google is now requiring their own binaries
*** Look into what Linux distros are doing (Peter will check Gentoo, Allan will check Debian)
** AI patch set. MSVC conflict issue, inline asm and stuff.
*** Might be possible to only disable on Windows ARM (or use clang-cl)
*** Need to check compatibility between cl and clang-cl
** QML issue
** Working with CI
*** Is super slow
*** Nothing has been done about if for years
*** Nobody seems to know how to fix the systemic issues
** What we learned from Windows on Arm issues
*** Build took way too long on native build after we finished making it work (40 hours)
*** We tried a cross compilation approach, Michael ended up having to do most of the work
**** But it was broken in packaging combined native and cross-build binaries, with different configurations
**** Now we have matching config builds
*** Are trying to push for using full cross compilation build, but it requires cmake and qmake update to make the cross-build libraries working for native end-user builds.
*** Another approach is using 128 core native builds.
** Add clang-cl CI config
*** Allan will try to add it
* Connect to Google/Chromium owners
** Upstreaming might help build up clout
** New owners might not even want to work with us
** Chrome team in Munich. We should try to connect with them
* Backlog grooming
* Backlog grooming
* Follow-up discussion
* Follow-up discussion
Line 21: Line 111:
=== Wednesday ===
=== Wednesday ===


* What we learned from Windows on Arm issues
* Connect to Google/Chromium owners
* Chromium patch workshop
* Chromium patch workshop
** See [[QtWebEngine/WebEngine_workshop_patches]] from last workshop
** See [[QtWebEngine/WebEngine_workshop_patches]] from last workshop
** We should update copyright on qtwebngine specific files in chromium
** Went through line 100 to 288 in Log.txt from 130->134 based
** 1baa6e7f5c8 Reintroduce SANDBOX_EXPORTS, and fix it for heterogeneous executables
*** mark sandbox
*** Might be upstreamable
** 6dcac6104f3 Fix zygote path used
*** Upstream if the one above is
*** mark sandbox
** 1e1bb33e531 Disable responsiveness watcher
*** No idea if still neceary, needs better documentation if it is
** 9abd1f52e2c Soften check for single thread only if layer1 or layer2 sandbox
*** mark sandbox
** e65f367a27b Enable the option to remove previous user PrefService
*** marked as not necessary in qt6, but we mights still need it until we remove  live changes of profiles (qt7)
** 87dd97fb1e3 Fix changing should_override_user_agent_in_new_tabs_
*** Upstreamable
** 4b53fc4bfcf Fix pressure of tablet events
*** `Needs to be checked if still relevant
** db8f956cf2c Fix crossbuilds of v8 snapshots
*** mark snapshot
*** check if still needed
** e519b425b16 Fix crash on page allocator
*** mark ios
*** mark pdf only?
*** check if still needed
** 6a15e18891b Allow changing user-agent without replacing the entire network context
*** upstreamable?
*** mark profile
** d6ce559951b Fix build for expanded sources
*** rename, 99% fix spellchecking
** 1c0e845f712 Fix initialize of cdm for sandbox from widevine-path
*** rename it is adding another path setting
** 68ae2cd4qqb2f Do not depend on soda on Linux
*** check sha, rename or merge with webspeech removal
** 33a944509cd Remove blocking of proper fixes
*** merge with MSVC fixes
*** upstreamable
** c9c27951357 Disable NetworkServiceSandbox on macOS by default
*** Check if necessary, otherwise document the underlying issue
** ebb6f9b9cd4 Legalize SSE/NEON intrinsics
*** upstreamable, is illegal, but just happens to work in clang
** edce0c1ba97 Bring enable_webrtc back
*** Check what we even still save anything significant
** 110c5efbf13 Make GpuSwitchingManager::RemoveObserver() thread safe
*** Upstreamable
*** mark compositor
*** check if even still relevant
** 65ef7957593 Fixes for our tests
*** Is like four separate patches, some possibly mergable with other parts
** e0e30fcd97e Fix crashes on getUserMediaRequest
*** could probably be merge, for instance with enable_webrtc patch
** 17fc680b8c4 Make clang to inline load/store atomic calls for YieldSortKey struct
*** might not be needed anymore
** d21e5769b9a Workaround revoked certificate check on Linux
*** needs to be verified it still does anything, if it does, upstreamable
** c36ae9cca66 Adapt accessibility code for our needs after chromium 90
*** split, part is fixing building without enable_toolkit_views, part is adding Qt specifica accesibility backend
** 24e2b1ad96e Fix data fragment navigation
*** upstreamable.
** 8c0a055b7c3 Fix fragment navigations on custom URL schemes
*** fixup of custom url schemes
** ba19faa985b Pass Qt Prefix path to the macOS V2 Seatbelt Sandbox
*** mark sandbox
** eb0ec797569 Pass virtual url of data url request back to the UI
*** probably upstreamable
** 460c5e388e2 Fixup select elements
*** check if still needed,
*** rename to fix for enable_external_popup=false
** c54458882fa Disable less privileged app container
*** mark sandbox and no-manifest
*** is only needed when executables have no manifest
** 14c593a4077 Do not override getaddrinfo in libc_interceptor
*** mark as sandbox
** f4b4ebf43fc Do not initialize default locale in local isolate
*** should likely be squashed with fixups of issues htis caused
** bb77ba286f2 Fix for QtWebEngine crash on Windows
*** might not be needed with angle, and be for wgl only
*** needs check
** 28d39e1888f [macOS] Do not subscribe to display callbacks when GPU is disabled
*** might not be needed with angle, and be for cgl only
*** needs check
** fd0924bc2ac Add network service discovery
*** might need to be squashed
* Documentation workshop
* Documentation workshop
* QtWebView redux
** Link to wiki build intructions
*** and have them as simple as possible
*** and with basic troubleshooting
*** Update to assume 6.8+
** Ask for config.opts and config.summary in bug reports
** Advocate for modular build of qtwebengine
** the rest of qt can be toplevel, or release binaries
** Docu-week
* Collective sync
**
* Conclussion
* Conclussion
** Worked well
** Virtual workshop in January or so
** Backlog gardening needs to be done more often in smaller bites.
** We are likely going to have a lot of pain with future chromium updates
** Backlog grooming could be moving slower, so everybody can catch up.
** We might have problems doing all the stuff we comment on in chromium patch review.
*** We might be able to do that together with our clean 134-rebased we are discussing


=== Summary ===
=== Summary ===


What to do better next time?
What to do better next time?

Latest revision as of 14:14, 27 August 2025

When: 2025-08-26 - 2025-08-27

See QtWebEngine/Features and QtWebEngine/WorkShop_2024_October for the last workshops

Topics

Agenda

Tuesday

  • Agenda discussion
    • How to follow up on workshop
    • Went through last workshop notes
    • We are down on man power this next year, so need to take that into account
  • QtWebView status and feature requirements
    • Platforms
      • We have now WebView2 on MSVC, but not clang/mingw
      • Android
      • iOS/macOS
      • WASM, what to do, should we ignore, who wrote it?
      • We should delete winRT backend
    • Permissions
      • Can we handle WebRTC etc..
      • Fullscreen requests
      • Unknown permission for stuff we dont handle.
    • Delegates
      • Could be provided if using QWidgets API
      • Integrate with native widgets on Android/iOS.
        • But we recommend QML for embedded anyway
      • Might already be handled within the libraries used by the plugins
        • needs to be tested.
    • WebActions
      • Do we want them
      • if not, which of them do we need?
    • History API
    • JavaScript evaluation
      • With or without callback
        • can callbacks be done with console write?
      • Is very useful for our own testing
    • WebChannel
      • should be possible already, but adding convinience API might be desirable
    • Find API
    • Favicon info
    • Downloads
    • Authentication API
      • check what we added to webengine
      • and integration with QNetworkAuth
    • Clipboard interaction
      • Might need to be tested
    • Off the record mode
    • New window/tab handling
      • What does qtwebview currently do?
      • Windows might just open new windows we then dont have any API for.
    • Plugin capability test api
  • QtWebView action steps
    • For 6.11, do the following
    • Test delegate interaction
      • if handled internally, we can do QWindow API
      • if we need to handle it, QWidgets API would be simpler
      • Also test new window handling
    • Capability API to ease implementation of features per plugin
    • JavaScript API for testing purposes.
    • Estimate work to support mingw/clang
  • Feature brainstorm
    • Qt 6.11 planing
      • QtWebView API
    • Extensions API status
      • Something useful
        • like tabs API
        • AdBlocker test
      • WebChannel integration
    • Rust stuff
    • Printing API for frames (new api), JIRA ticket
    • The whole update Chromium 138/140 horror story
  • Support brainstorm
    • Rust requirement
      • Start with official stable rust
      • Might be a problem in the longer run
        • Google uses unstable rust
        • Google uses patched libraries
      • Allan update his patch
    • Chrome standard library
      • Google is now requiring their own binaries
      • Look into what Linux distros are doing (Peter will check Gentoo, Allan will check Debian)
    • AI patch set. MSVC conflict issue, inline asm and stuff.
      • Might be possible to only disable on Windows ARM (or use clang-cl)
      • Need to check compatibility between cl and clang-cl
    • QML issue
    • Working with CI
      • Is super slow
      • Nothing has been done about if for years
      • Nobody seems to know how to fix the systemic issues
    • What we learned from Windows on Arm issues
      • Build took way too long on native build after we finished making it work (40 hours)
      • We tried a cross compilation approach, Michael ended up having to do most of the work
        • But it was broken in packaging combined native and cross-build binaries, with different configurations
        • Now we have matching config builds
      • Are trying to push for using full cross compilation build, but it requires cmake and qmake update to make the cross-build libraries working for native end-user builds.
      • Another approach is using 128 core native builds.
    • Add clang-cl CI config
      • Allan will try to add it
  • Connect to Google/Chromium owners
    • Upstreaming might help build up clout
    • New owners might not even want to work with us
    • Chrome team in Munich. We should try to connect with them
  • Backlog grooming
  • Follow-up discussion
  • Dinner

Wednesday

  • Chromium patch workshop
    • See QtWebEngine/WebEngine_workshop_patches from last workshop
    • We should update copyright on qtwebngine specific files in chromium
    • Went through line 100 to 288 in Log.txt from 130->134 based
    • 1baa6e7f5c8 Reintroduce SANDBOX_EXPORTS, and fix it for heterogeneous executables
      • mark sandbox
      • Might be upstreamable
    • 6dcac6104f3 Fix zygote path used
      • Upstream if the one above is
      • mark sandbox
    • 1e1bb33e531 Disable responsiveness watcher
      • No idea if still neceary, needs better documentation if it is
    • 9abd1f52e2c Soften check for single thread only if layer1 or layer2 sandbox
      • mark sandbox
    • e65f367a27b Enable the option to remove previous user PrefService
      • marked as not necessary in qt6, but we mights still need it until we remove live changes of profiles (qt7)
    • 87dd97fb1e3 Fix changing should_override_user_agent_in_new_tabs_
      • Upstreamable
    • 4b53fc4bfcf Fix pressure of tablet events
      • `Needs to be checked if still relevant
    • db8f956cf2c Fix crossbuilds of v8 snapshots
      • mark snapshot
      • check if still needed
    • e519b425b16 Fix crash on page allocator
      • mark ios
      • mark pdf only?
      • check if still needed
    • 6a15e18891b Allow changing user-agent without replacing the entire network context
      • upstreamable?
      • mark profile
    • d6ce559951b Fix build for expanded sources
      • rename, 99% fix spellchecking
    • 1c0e845f712 Fix initialize of cdm for sandbox from widevine-path
      • rename it is adding another path setting
    • 68ae2cd4qqb2f Do not depend on soda on Linux
      • check sha, rename or merge with webspeech removal
    • 33a944509cd Remove blocking of proper fixes
      • merge with MSVC fixes
      • upstreamable
    • c9c27951357 Disable NetworkServiceSandbox on macOS by default
      • Check if necessary, otherwise document the underlying issue
    • ebb6f9b9cd4 Legalize SSE/NEON intrinsics
      • upstreamable, is illegal, but just happens to work in clang
    • edce0c1ba97 Bring enable_webrtc back
      • Check what we even still save anything significant
    • 110c5efbf13 Make GpuSwitchingManager::RemoveObserver() thread safe
      • Upstreamable
      • mark compositor
      • check if even still relevant
    • 65ef7957593 Fixes for our tests
      • Is like four separate patches, some possibly mergable with other parts
    • e0e30fcd97e Fix crashes on getUserMediaRequest
      • could probably be merge, for instance with enable_webrtc patch
    • 17fc680b8c4 Make clang to inline load/store atomic calls for YieldSortKey struct
      • might not be needed anymore
    • d21e5769b9a Workaround revoked certificate check on Linux
      • needs to be verified it still does anything, if it does, upstreamable
    • c36ae9cca66 Adapt accessibility code for our needs after chromium 90
      • split, part is fixing building without enable_toolkit_views, part is adding Qt specifica accesibility backend
    • 24e2b1ad96e Fix data fragment navigation
      • upstreamable.
    • 8c0a055b7c3 Fix fragment navigations on custom URL schemes
      • fixup of custom url schemes
    • ba19faa985b Pass Qt Prefix path to the macOS V2 Seatbelt Sandbox
      • mark sandbox
    • eb0ec797569 Pass virtual url of data url request back to the UI
      • probably upstreamable
    • 460c5e388e2 Fixup select elements
      • check if still needed,
      • rename to fix for enable_external_popup=false
    • c54458882fa Disable less privileged app container
      • mark sandbox and no-manifest
      • is only needed when executables have no manifest
    • 14c593a4077 Do not override getaddrinfo in libc_interceptor
      • mark as sandbox
    • f4b4ebf43fc Do not initialize default locale in local isolate
      • should likely be squashed with fixups of issues htis caused
    • bb77ba286f2 Fix for QtWebEngine crash on Windows
      • might not be needed with angle, and be for wgl only
      • needs check
    • 28d39e1888f [macOS] Do not subscribe to display callbacks when GPU is disabled
      • might not be needed with angle, and be for cgl only
      • needs check
    • fd0924bc2ac Add network service discovery
      • might need to be squashed
  • Documentation workshop
    • Link to wiki build intructions
      • and have them as simple as possible
      • and with basic troubleshooting
      • Update to assume 6.8+
    • Ask for config.opts and config.summary in bug reports
    • Advocate for modular build of qtwebengine
    • the rest of qt can be toplevel, or release binaries
    • Docu-week
  • Collective sync
  • Conclussion
    • Worked well
    • Virtual workshop in January or so
    • Backlog gardening needs to be done more often in smaller bites.
    • We are likely going to have a lot of pain with future chromium updates
    • Backlog grooming could be moving slower, so everybody can catch up.
    • We might have problems doing all the stuff we comment on in chromium patch review.
      • We might be able to do that together with our clean 134-rebased we are discussing

Summary

What to do better next time?