New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 831554 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Apr 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug

Blocking:
issue 781754



Sign in to add a comment

WebkitToCompatConverterBoundaryInterface contains a method signature with a post-L parameter, breaking Lollipop

Project Member Reported by gsennton@chromium.org, Apr 11 2018

Issue description

The method signature

/* SupportLibServiceWorkerSettings */ InvocationHandler convertServiceWorkerSettings(ServiceWorkerWebSettings settings);

breaks Lollipop because ServiceWorkerWebSettings is not defined on Lollipop.


So when we create a Proxy for WebkitToCompatConverterBoundaryInterface we crash because Proxy needs to fetch the method signatures of the interface it implements.



We should probably have WebkitToCompatConverterBoundaryInterface deal with post-L classes by declaring them as Objects, rather than the actual classes themselves :/

Nate / Torne, WDYT?
 
Project Member

Comment 1 by bugdroid1@chromium.org, Apr 11 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4f96918a47768b2ae1e56cca65d63da8559af2f7

commit 4f96918a47768b2ae1e56cca65d63da8559af2f7
Author: Gustav Sennton <gsennton@google.com>
Date: Wed Apr 11 16:00:20 2018

[webview] Pass Object instead of post-L webkit object over boundary.

When passing a ServiceWorkerWebSettings object across the support
library boundary - reference that object as an Object rather than as a
ServiceWorkerWebSettings.

The objective of the WebkitToCompatConverter is to convert webkit
objects into support library objects. But webkit objects introduced
post-L cannot be passed across the support library boundary since
whenever we create a Proxy for the interface
(WebkitToCompatConverterBoundaryInterface) passing the webkit object,
that Proxy needs access to the post-L webkit class (along with all other
classes referenced by the interface), which means we'll crash on phones
without a definition of the webkit class.

Bug:  831554 
Change-Id: I12d731994a8d38dda0f69c92917c817ec753cfa4
Reviewed-on: https://chromium-review.googlesource.com/1006960
Reviewed-by: Richard Coles <torne@chromium.org>
Commit-Queue: Gustav Sennton <gsennton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#549900}
[modify] https://crrev.com/4f96918a47768b2ae1e56cca65d63da8559af2f7/android_webview/support_library/boundary_interfaces/src/org/chromium/support_lib_boundary/WebkitToCompatConverterBoundaryInterface.java
[modify] https://crrev.com/4f96918a47768b2ae1e56cca65d63da8559af2f7/android_webview/support_library/java/src/org/chromium/support_lib_glue/SupportLibWebkitToCompatConverterAdapter.java

Status: Fixed (was: Assigned)
No manual verification necessary here, I've added an automatic test that ensures this doesn't regress.

Sign in to add a comment