Fixed
Status Update
Comments
il...@google.com <il...@google.com>
ar...@gmail.com <ar...@gmail.com> #2
Doc changes when unhiding the API:
- WebMessageListener does not support ARRAY_BUFFER, review docs to make sure it clearly documented.
- WebMessageCompat: document
getData
andgetArrayBuffer
will return null, unlessgetType
is equal to string or array buffer. - WebMessagePortCompat: review docs and make sure new type is updated.
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit ab44a8fb40979c6790385beeb83e7d52378a0212
Author: Richard He <linyhe@microsoft.com>
Date: Thu Sep 29 17:58:19 2022
Add ArrayBuffer support in WebMessageCompat.
This add a new type (ArrayBuffer) in WebMessageCompat, which can be
send from App to Chromium and vice versa. A transferable ArrayBuffer
from JavaScript is also supported.
Since the new type is not supported by framework,
`WebMessagePort#setWebMessageCallback` changed the behavior to use
WebView impl first.
And the following PostMessage API uses WebView impl if the
WebMessage typs is not support by framework:
- WebMessagePort#postMessage
- WebViewCompat#postWebMessage
To keep backwords competibility, the following APIs do not throw
exception when the type is not correct.
- String WebMessageCompat#getData
- Byte[] WebMessageCompat#getArrayBuffer
Design doc:https://docs.google.com/document/d/1nsQnwwY43OuA4PsSaMioiKA0c_M1eV1XX2q15YFA7cI/edit?usp=sharing
Test: Added WebViewWebMessageCompatTest
Change-Id: I705512d2be14315831599ceb98e37be300fa5591
Bug: 251152171
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessageListenerAdapter.java
A webkit/webkit/src/main/java/androidx/webkit/internal/WebMessagePayloadAdapter.java
A webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/WebMessageCompatActivity.java
M webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/JsJavaInteractionActivity.java
M webkit/webkit/src/main/java/androidx/webkit/WebMessageCompat.java
A webkit/integration-tests/testapp/src/main/assets/www/web_message_compat.html
M webkit/integration-tests/testapp/src/main/AndroidManifest.xml
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessageAdapter.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebViewFeatureInternal.java
M webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessageCallbackAdapter.java
A webkit/webkit/src/androidTest/java/androidx/webkit/WebViewWebMessageCompatTest.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessagePortImpl.java
A webkit/integration-tests/testapp/src/main/res/layout/activity_web_message_compat.xml
M webkit/webkit/src/main/java/androidx/webkit/WebViewFeature.java
M webkit/integration-tests/testapp/src/main/res/values/donottranslate-strings.xml
https://android-review.googlesource.com/2238574
Branch: androidx-main
commit ab44a8fb40979c6790385beeb83e7d52378a0212
Author: Richard He <linyhe@microsoft.com>
Date: Thu Sep 29 17:58:19 2022
Add ArrayBuffer support in WebMessageCompat.
This add a new type (ArrayBuffer) in WebMessageCompat, which can be
send from App to Chromium and vice versa. A transferable ArrayBuffer
from JavaScript is also supported.
Since the new type is not supported by framework,
`WebMessagePort#setWebMessageCallback` changed the behavior to use
WebView impl first.
And the following PostMessage API uses WebView impl if the
WebMessage typs is not support by framework:
- WebMessagePort#postMessage
- WebViewCompat#postWebMessage
To keep backwords competibility, the following APIs do not throw
exception when the type is not correct.
- String WebMessageCompat#getData
- Byte[] WebMessageCompat#getArrayBuffer
Design doc:
Test: Added WebViewWebMessageCompatTest
Change-Id: I705512d2be14315831599ceb98e37be300fa5591
Bug: 251152171
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessageListenerAdapter.java
A webkit/webkit/src/main/java/androidx/webkit/internal/WebMessagePayloadAdapter.java
A webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/WebMessageCompatActivity.java
M webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/JsJavaInteractionActivity.java
M webkit/webkit/src/main/java/androidx/webkit/WebMessageCompat.java
A webkit/integration-tests/testapp/src/main/assets/www/web_message_compat.html
M webkit/integration-tests/testapp/src/main/AndroidManifest.xml
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessageAdapter.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebViewFeatureInternal.java
M webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessageCallbackAdapter.java
A webkit/webkit/src/androidTest/java/androidx/webkit/WebViewWebMessageCompatTest.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessagePortImpl.java
A webkit/integration-tests/testapp/src/main/res/layout/activity_web_message_compat.xml
M webkit/webkit/src/main/java/androidx/webkit/WebViewFeature.java
M webkit/integration-tests/testapp/src/main/res/values/donottranslate-strings.xml
ap...@google.com <ap...@google.com> #4
The following release(s) address this bug:
androidx.webkit:webkit:1.6.0-alpha02
il...@google.com <il...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-main
commit f0be00e0c911751fe832ea99d88f6b30e25e124e
Author: Richard He <linyhe@microsoft.com>
Date: Fri Apr 21 13:56:44 2023
Add ArrayBuffer support in WebMessageListener
This CL adds ArrayBuffer type support in WebMessageListener,
which can be send from App to Chromium and vice versa.
A new public API in JavaScriptReplyProxy is added to post
ArrayBuffer to Web. For receiving ArrayBuffer from Web,
WebMessageListener#onPostMessage reuses `WebMessageCompat`, which
added ArrayBuffer support in previous CL, see:
I705512d2be14315831599ceb98e37be300fa5591.
This CL also rename feature flag from
`WEB_MESSAGE_GET_MESSAGE_PAYLOAD` to `WEB_MESSAGE_ARRAY_BUFFER`.
Design doc:https://docs.google.com/document/d/e/2PACX-1vTyRry_iKKvYI2vENP-5VzIpfsUH__d5YuipJtKobyAp0nV2W9vDgchs_2q4_hbaUGkM_HnaVO6jTlX/pub
Test: Add in WebViewWebMessageListenerTest
Bug: 251152171
Change-Id: I3e30d6524187b508b714e41844cfbb3c4e36d75b
M webkit/integration-tests/testapp/src/main/assets/www/web_message_listener.html
M webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/WebMessageCompatActivity.java
M webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/WebMessageListenerActivity.java
M webkit/webkit/src/androidTest/java/androidx/webkit/WebViewWebMessageCompatTest.java
M webkit/webkit/src/androidTest/java/androidx/webkit/WebViewWebMessageListenerTest.java
M webkit/webkit/src/main/java/androidx/webkit/JavaScriptReplyProxy.java
M webkit/webkit/src/main/java/androidx/webkit/WebMessageCompat.java
M webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
M webkit/webkit/src/main/java/androidx/webkit/WebViewFeature.java
M webkit/webkit/src/main/java/androidx/webkit/internal/JavaScriptReplyProxyImpl.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessageAdapter.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessageListenerAdapter.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessagePayloadAdapter.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebViewFeatureInternal.java
https://android-review.googlesource.com/2554311
Branch: androidx-main
commit f0be00e0c911751fe832ea99d88f6b30e25e124e
Author: Richard He <linyhe@microsoft.com>
Date: Fri Apr 21 13:56:44 2023
Add ArrayBuffer support in WebMessageListener
This CL adds ArrayBuffer type support in WebMessageListener,
which can be send from App to Chromium and vice versa.
A new public API in JavaScriptReplyProxy is added to post
ArrayBuffer to Web. For receiving ArrayBuffer from Web,
WebMessageListener#onPostMessage reuses `WebMessageCompat`, which
added ArrayBuffer support in previous CL, see:
I705512d2be14315831599ceb98e37be300fa5591.
This CL also rename feature flag from
`WEB_MESSAGE_GET_MESSAGE_PAYLOAD` to `WEB_MESSAGE_ARRAY_BUFFER`.
Design doc:
Test: Add in WebViewWebMessageListenerTest
Bug: 251152171
Change-Id: I3e30d6524187b508b714e41844cfbb3c4e36d75b
M webkit/integration-tests/testapp/src/main/assets/www/web_message_listener.html
M webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/WebMessageCompatActivity.java
M webkit/integration-tests/testapp/src/main/java/com/example/androidx/webkit/WebMessageListenerActivity.java
M webkit/webkit/src/androidTest/java/androidx/webkit/WebViewWebMessageCompatTest.java
M webkit/webkit/src/androidTest/java/androidx/webkit/WebViewWebMessageListenerTest.java
M webkit/webkit/src/main/java/androidx/webkit/JavaScriptReplyProxy.java
M webkit/webkit/src/main/java/androidx/webkit/WebMessageCompat.java
M webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
M webkit/webkit/src/main/java/androidx/webkit/WebViewFeature.java
M webkit/webkit/src/main/java/androidx/webkit/internal/JavaScriptReplyProxyImpl.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessageAdapter.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessageListenerAdapter.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebMessagePayloadAdapter.java
M webkit/webkit/src/main/java/androidx/webkit/internal/WebViewFeatureInternal.java
ca...@gmail.com <ca...@gmail.com> #6
ok
be...@gmail.com <be...@gmail.com> #7
Project: platform/frameworks/support
Branch: androidx-main
commit bf75ca82f3a2182d583436a85f466396cf2f4f72
Author: Richard He <linyhe@microsoft.com>
Date: Thu May 18 14:47:22 2023
Unhide API for WEB_MESSAGE_ARRAY_BUFFER feature.
This CL unhides the public API related to ArrayBuffer support in
WebMessageCompat, WebMessagePortCompat and JsReplyProxy.
Lint baseline: Like WebMessageCompat String constructor, this
change still use WebMessagePortCompat array as parameter.
Fixes: 251152171
Test: ./gradlew :webkit:webkit:checkApi
Test: ./gradlew :webkit:webkit:verifyDependencyVersions
Relnote: "Add support for passing ArrayBuffer over
`WebMessagePortCompat#postMessage`, `JsReplyProxy#postMessage`
and `WebViewCompat#postWebMessage`, receiving ArrayBuffer from
JavaScript over `WebMessagePortCompat` and `WebMessageListener`,
and receiving transferable ArrayBuffer from JavaScript over
`WebMessagePortCompat`."
Change-Id: Ie756728c63c528c3e36417f7719cead78d7c99eb
M webkit/webkit/api/api_lint.ignore
M webkit/webkit/api/current.txt
M webkit/webkit/api/restricted_current.txt
A webkit/webkit/src/androidTest/java/androidx/webkit/WebMessageCompatUnitTest.java
M webkit/webkit/src/main/java/androidx/webkit/JavaScriptReplyProxy.java
M webkit/webkit/src/main/java/androidx/webkit/WebMessageCompat.java
M webkit/webkit/src/main/java/androidx/webkit/WebMessagePortCompat.java
M webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
M webkit/webkit/src/main/java/androidx/webkit/WebViewFeature.java
https://android-review.googlesource.com/2596550
Branch: androidx-main
commit bf75ca82f3a2182d583436a85f466396cf2f4f72
Author: Richard He <linyhe@microsoft.com>
Date: Thu May 18 14:47:22 2023
Unhide API for WEB_MESSAGE_ARRAY_BUFFER feature.
This CL unhides the public API related to ArrayBuffer support in
WebMessageCompat, WebMessagePortCompat and JsReplyProxy.
Lint baseline: Like WebMessageCompat String constructor, this
change still use WebMessagePortCompat array as parameter.
Fixes: 251152171
Test: ./gradlew :webkit:webkit:checkApi
Test: ./gradlew :webkit:webkit:verifyDependencyVersions
Relnote: "Add support for passing ArrayBuffer over
`WebMessagePortCompat#postMessage`, `JsReplyProxy#postMessage`
and `WebViewCompat#postWebMessage`, receiving ArrayBuffer from
JavaScript over `WebMessagePortCompat` and `WebMessageListener`,
and receiving transferable ArrayBuffer from JavaScript over
`WebMessagePortCompat`."
Change-Id: Ie756728c63c528c3e36417f7719cead78d7c99eb
M webkit/webkit/api/api_lint.ignore
M webkit/webkit/api/current.txt
M webkit/webkit/api/restricted_current.txt
A webkit/webkit/src/androidTest/java/androidx/webkit/WebMessageCompatUnitTest.java
M webkit/webkit/src/main/java/androidx/webkit/JavaScriptReplyProxy.java
M webkit/webkit/src/main/java/androidx/webkit/WebMessageCompat.java
M webkit/webkit/src/main/java/androidx/webkit/WebMessagePortCompat.java
M webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
M webkit/webkit/src/main/java/androidx/webkit/WebViewFeature.java
il...@google.com <il...@google.com> #8
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.webkit:webkit:1.8.0-alpha01
Description
Version used: 1.0.0-alpha11
Devices/Android versions reproduced on: Nexus 5X API 27
I've implemented conditional navigation for my login flow as described in this SO post:
Now everything appears to be working, however after being navigated to the login screen and successfully logging in then navigating back to the main screen, on rotation the app crashes with the error: "java.lang.IllegalStateException: unknown destination during restore".
I've created a SO post containing the full error and navgraph for my project:
I've also reproduced the error in this sample app:
For a bit of further information it appears this crash started to occur in version 1.0.0-alpha08.