Skip to content

[webview_flutter_tizen] Update webview_flutter to 4.14.1 - #1153

Open
seungsoo47 wants to merge 5 commits into
flutter-tizen:mainfrom
seungsoo47:webview_flutter-update-4.14.1
Open

seungsoo47 wants to merge 5 commits into
flutter-tizen:mainfrom
seungsoo47:webview_flutter-update-4.14.1

Conversation

@seungsoo47

@seungsoo47 seungsoo47 commented Sep 16, 2026

Copy link
Copy Markdown
Contributor
  • Update minimum supported SDK version to Flutter 3.38/Dart 3.10.
  • Update webview_flutter to 4.14.1.
  • Update webview_flutter_platform_interface to 2.15.1.
  • Select the web engine backend from the device's platform version.
  • Fix a crash and missing request headers on the WV backend.
  • Fix cookie operations using a destroyed WebView.
  • Correct the WV API declarations.

#1135

seungsoo47 and others added 5 commits September 16, 2026 19:10
…ersion

DefaultBackendForPlatform() read the TIZEN_API_VERSION environment
variable, which carries the api-version the application declares in its
tizen-manifest.xml, not the platform version of the device. Every example
app in this repository declares 6.0, so the EWK backend was selected on
every device regardless of its Tizen version; a Tizen 10.1 target that
should have used the WV wrapper backend ran EWK instead.

Read the platform version from system-info instead, following the same
pattern webview_flutter_lwe and device_info_plus already use.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
WvWebViewBackend::LoadUrlRequest built an Eina_Hash and passed it to
wv_view_url_request_set, whose local typedef declared the parameter as an
untyped void*. The WV library iterates that pointer as a GHashTable, so
the compiler accepted the mismatch and the library walked an unrelated
structure: request headers were never delivered, and the walk corrupted
heap metadata, aborting the application later with
"malloc_consolidate(): unaligned fastbin chunk detected".

Build a GHashTable and declare the parameter as GHashTable* so the same
mismatch cannot recur silently.

The unused Eina.h and Evas.h includes are dropped with it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The WV function signatures are re-declared locally because the plugin
reaches them through dlsym, and dlsym validates nothing. Comparing every
bound symbol against the platform headers turned up two divergences
besides the request header type:

* wv_key_event_s was missing its trailing const char* device_name member,
  so wv_view_send_key_event read past the end of the stack-allocated
  struct. This is latent today because only the WV standalone path reads
  that field.
* Nine function pointers declared an int return where the API returns
  bool or void.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The cookie method channel was created as a local in the WebView
constructor and destroyed when the constructor returned, while the
handler it installed on the messenger captured the WebView and outlived
it. Nothing ever cleared that handler, and the channel name carried no
view id, so a second WebView silently replaced the first one's handler
and a cookie call after the last WebView was disposed reached freed
memory.

Register the channel once in the plugin, clear its handler in the plugin
destructor, and route calls to the current WebView.

ClearCookies gains a view check in both backends: the backend view is
created lazily on the first WebView method call, so a cookie call that
arrives before it passed a null view into the engine.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Update webview_flutter to 4.14.1 and webview_flutter_platform_interface
to 2.15.1, raising the minimum supported SDK to Flutter 3.38/Dart 3.10.

The only API added between 4.13.1 and 4.14.1 is
WebViewCookieManager.getCookies. It throws UnimplementedError for now:
the EWK cookie API returns nothing because of an engine defect being
fixed, and the WV counterpart is not exported by the platform library.
The example app follows upstream and lists cookies through getCookies
rather than reading document.cookie.

loadFileWithParams, added in platform_interface 2.14.0, needs no
implementation: its base delegates to loadFile, which this package
already provides.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fe925abd8e

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread packages/webview_flutter/tizen/src/webview.cc
Comment thread packages/webview_flutter/example/lib/main.dart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant