Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Update Webview Android JS builtins added version #25886

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

SessionHu
Copy link

Summary

This PR updates JavaScript builtins support version of Webview Android. Most changes are changing ≤37 or mirror to ≤4.

Test results and supporting details

I wrote a simple tool to determine if the value is undefined to check if the browser supports this feature (only implemented 3 checks so far). Which is available at SessionHu/check-js-feat.
Then I run the server on my another device and open the page on the old Android 4.2 TV with an browser which using Android System Webview.
Here is the result photo (UserAgent on the top, support features in green background, unsupport in red. And I cannot take screenshot on that device):

here 3 photos shot on phone camera

IMG_20250210_115227
IMG_20250210_115341
IMG_20250210_115403

Although the system version is 4.2.1 instead of 4 according to the navigator.userAgent and System Settings. I believe it has the same behavior as 4. Because I did not find Android Webview 4.2 release in /browsers/webview_android.json.

I also do some other tests on that device. But test code were already removed before this PR opened.

Related issues

Not fond yet

@github-actions github-actions bot added data:js Compat data for JS/ECMAScript features. https://developer.mozilla.org/docs/Web/JavaScript size:m [PR only] 25-100 LoC changed labels Feb 10, 2025
Copy link
Member

@Elchi3 Elchi3 left a comment

Choose a reason for hiding this comment

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

Here's the output of npm run diff:

javascript.builtins.Array:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.Array:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.every:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.filter:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.forEach:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.indexOf:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.lastIndexOf:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.map:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.reduce:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.reduceRight:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.some:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.toLocaleString:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Array.toString:
 → support.webview_android.version_added is edited ("≤37" → "≤4")
javascript.builtins.Object:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.create:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.defineProperties:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.defineProperty:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.freeze:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.getOwnPropertyDescriptor:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.getOwnPropertyNames:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.getPrototypeOf:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.is:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.isExtensible:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.isFrozen:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.keys:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.preventExtensions:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.Object.seal:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.String:
 → support.webview_android is edited ({"version_added":"4.4"} → {"version_added":"≤4"}) - No longer mirrors
javascript.builtins.String.trim:
 → support.webview_android.version_added is edited ("≤37" → "≤4")

I'm not too excited about the changes away from "mirror". I don't think WebView Android shipped things earlier than Chrome here. So, this might suggest that the chrome versions could be set to earlier in these cases.

@SessionHu
Copy link
Author

Perhaps my test results were influenced by device provider. In fact, Android 4 might not support some ES5 features as well as Chrome. So I reverted some changes based on the relevant information.

@github-actions github-actions bot added size:l [PR only] 101-1000 LoC changed and removed size:m [PR only] 25-100 LoC changed labels Feb 11, 2025
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
data:js Compat data for JS/ECMAScript features. https://developer.mozilla.org/docs/Web/JavaScript size:l [PR only] 101-1000 LoC changed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants