* Use `ExecuteScriptWithResult` to log eval errors
* Also log for older webviews
* linux
* Fix windows
* apple
* deref
* too much copy paste
* Note limitation on Android
* Add change log
Cache the Android asset-loader setting in RustWebViewClient so intercepted resource requests do not cross JNI into Rust state each time. Also initialize the WebViewAssetLoader only when it is enabled.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix(windows): guard cleared parent subclass refdata
Prevent teardown reentrancy from dereferencing cleared WebView2 controller refdata. Add a native Win32 regression test.
* test(windows): skip native subclass test under Miri
Miri cannot call Win32 foreign functions such as CreateWindowExW. Keep the test active under normal Windows cargo test runs.
* RemoveWindowSubclass instead
* remove test
* clean up
* clippy
---------
Co-authored-by: Tony <legendmastertony@gmail.com>
Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>
The webview2, webkitgtk and android IPC handlers built an http::Request from the webview's current document URL and unwrapped it, aborting the process whenever that URL was not a valid http::Uri (for example a file:// URL, or one containing a raw space or non-ASCII characters). Invalid IPC requests are now logged under the tracing feature and dropped instead of panicking, mirroring the existing WKWebView delegate behavior.
Co-authored-by: degant <6065982+degant@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* chore: updates for tao 0.36
ref https://github.com/tauri-apps/tao/pull/1209
* refactor: changes for tao 0.36 lifecycle renames (#1790)
* refactor: changes for tao 0.36 lifecycle renames
* Update
* Make it easier to see that `onCreate` runs first
* more docs
* Try to use an atomic bool instead of ProcessLifecycleOwner
* Revert "Try to use an atomic bool instead of ProcessLifecycleOwner"
This reverts commit 11dab6bcc0a472f2bd6555d7f545bdd08fda4232.
* update tao
* update change file
* clean up
* Rename binding `wryCreate` to `onFirstActivityCreateWry`
* more docs
---------
Co-authored-by: Tony <68118705+Legend-Master@users.noreply.github.com>
memmap2 0.9.5 is pulled in via winit (a dev-dependency of wry) ->
smithay-client-toolkit / sctk-adwaita (Linux Wayland decoration
theming). Affected versions under-validated the offset/len parameters
on Mmap::advise_range() and friends, allowing an out-of-bounds pointer
to reach the madvise/msync syscalls (undefined behavior, though the
invalid pointer is never dereferenced).
A plain `cargo update -p memmap2` resolves to the patched 0.9.11 with
no other bumps needed. Cargo.lock only, no source changes.
Verified `cargo check --workspace` passes.
Fixes#1770
* fix: release REQUEST_HANDLER sooner on Android
Attempting to speed up assets loading on Android with this
* Update .changes info
* cargo fmt
---------
Co-authored-by: Tony <legendmastertony@gmail.com>
* feat: add permission handler API - implement cross-platform permission handler API, fix combined camera and microphone logic on macOS, update documentation to clarify NFC and Bluetooth support, and simplify permission_handler example using permission.site
* fix(wkwebview): remove leftover PermissionObserver from UIDelegate signature
* Fix `permission_handler` example on linux
* Use type instead of string check
* Add more platform specific notes
* Move permissions to a file
* Add notice about prompt not supported on linux
* fix(webkitgtk): handle combined audio+video permissions and use is_for_display_device on v2_42
* fix: reorder module declarations for rustfmt
* fix(android): scope permission handler per webview
подтверждено
* fix(android): honor permission handler for geolocation
подтверждено
* fix(android): avoid overgranting mixed permission requests
* fix(android): scope permission callbacks by webview
* fix(android): pass existing webview id string
* Migrate `PACKAGE.get().unwrap()`
* Fix `web_chrome_client`
* small refactor on permissionLauncher
* Add `PermissionResponse::Default` docs for all platforms
* fix(android): simplify permission JNI response
* document allow is not supported on android
* refactor: simplify permission responses
* fix: update permission handler example
* fix(android): pass unknown permissions to handler
* fix(android): allow explicit unknown permissions
* onPermissionRequestNative will not return other values
* Send individual permissions to rust side
and support partial allow
---------
Co-authored-by: Tony <legendmastertony@gmail.com>
* Try to run benchmark on all platforms
* Disable other ci for now
* fix get_target
* disable print worker info on mac and windows
* Fix windows .exe extension
* sleep between runs
* `--shell` not `shell`
* output platform specific benchmark results
* Actually run `migrate_old_benchmark_data`
* Revert "Disable other ci for now"
This reverts commit e47e08726fb666be22aa87835e8e31953d3b0155.
* Rename the files directly instead
* Only run benchmark on PR if files changed
* refactor: make more private
* refactor: remove unwraps
* refactor: remove no longer necessary Send/Sync overrides
* refactor: less thinking about ffi safety of bool
* add change file
Adds `WebViewBuilderExtWindows::with_profile_name(name)` so embedded
webviews can opt into a named WebView2 profile. Webviews with different
profile names within the same environment have isolated cookies, storage,
IndexedDB, and cache while sharing the runtime — matching WebView2's
documented multi-profile pattern. When unset, behavior is unchanged
(unnamed default profile).
Implementation:
- New `profile_name: Option<String>` field on the Windows
`PlatformSpecificWebViewAttributes`.
- New trait method on `WebViewBuilderExtWindows`.
- In `create_controller`, when a profile name is configured, call
`ICoreWebView2ControllerOptions::SetProfileName` before
`CreateCoreWebView2ControllerWithOptions`.
Profile names must follow WebView2's naming rules (alphanumeric, `.`,
`_`, `-`, ` `, up to 64 chars, not starting/ending with `.` or ` `).
See https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/multi-profile-support