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

Issue metadata

Status: Fixed
Owner:
Closed: Jan 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug

Blocked on:
issue 623989

Blocking:
issue 586703
issue 635895



Sign in to add a comment

Upstream WebView java code for Android 7.0

Project Member Reported by torne@chromium.org, Sep 2 2016

Issue description

We need to upstream the internal version of the WebView glue layer for Android 7.0. This first requires:

1) rolling the public SDK ( issue 623989 )

2) checking in a new system SDK jar for 7.0 - in this case we can build one from the AOSP 7.0 branch since that's out already, but we should, separately, talk to android about whether we can get a prebuilt of this for future releases in advance of the AOSP source release (as soon as possible after the public SDK release).

3) actually upstream the differing code

4) go through and fix up all the things that use temporary API/codename/etc checks as mentioned in issue 586703

Bo was looking at this as part of the unforking project so assigning to him for now, but can reassign as needed.

We really should get this done for M55 as we've already missed several releases :(
 

Comment 1 by torne@chromium.org, Sep 2 2016

Labels: OS-Android

Comment 2 by boliu@chromium.org, Sep 2 2016

I'll try to work on the system sdk jar today
Project Member

Comment 3 by bugdroid1@chromium.org, Sep 2 2016

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/clank/internal/apps/+/1e5f607462b9de2658a857995163257a15d3178c

commit 1e5f607462b9de2658a857995163257a15d3178c
Author: Bo Liu <boliu@google.com>
Date: Fri Sep 02 18:54:21 2016

Project Member

Comment 4 by bugdroid1@chromium.org, Sep 2 2016

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

commit 1714619ebb3e94c7bd1e4be123f1be3bd1c1424c
Author: Bo Liu <boliu@chromium.org>
Date: Fri Sep 02 18:56:43 2016

android: Add new system jar for android 7

Only adding the jar file. It's not used yet in this CL.

BUG= 643660 
R=sgurun@chromium.org

Review URL: https://codereview.chromium.org/2300383003 .

Cr-Commit-Position: refs/heads/master@{#416310}

[add] https://crrev.com/1714619ebb3e94c7bd1e4be123f1be3bd1c1424c/third_party/android_platform/webview/frameworks_7.0.0_r1.jar

Comment 5 by boliu@chromium.org, Sep 2 2016

So we don't need to roll the sdk.. things built fine with the new jar file after upstreaming: https://codereview.chromium.org/2298093008/

Comment 6 by boliu@chromium.org, Sep 2 2016

Blocking: 635895
Project Member

Comment 7 by bugdroid1@chromium.org, Sep 2 2016

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

commit 52e7818fabf74f3deaacc952e5fc29daa55ba1e3
Author: boliu <boliu@chromium.org>
Date: Fri Sep 02 23:45:16 2016

android webview: Upstream android 7 glue layer

BUG= 643660 

Review-Url: https://codereview.chromium.org/2298093008
Cr-Commit-Position: refs/heads/master@{#416392}

[modify] https://crrev.com/52e7818fabf74f3deaacc952e5fc29daa55ba1e3/android_webview/glue/BUILD.gn
[add] https://crrev.com/52e7818fabf74f3deaacc952e5fc29daa55ba1e3/android_webview/glue/java/src/com/android/webview/chromium/MonochromeLibraryPreloader.java
[add] https://crrev.com/52e7818fabf74f3deaacc952e5fc29daa55ba1e3/android_webview/glue/java/src/com/android/webview/chromium/ServiceWorkerClientAdapter.java
[add] https://crrev.com/52e7818fabf74f3deaacc952e5fc29daa55ba1e3/android_webview/glue/java/src/com/android/webview/chromium/ServiceWorkerControllerAdapter.java
[add] https://crrev.com/52e7818fabf74f3deaacc952e5fc29daa55ba1e3/android_webview/glue/java/src/com/android/webview/chromium/ServiceWorkerSettingsAdapter.java
[add] https://crrev.com/52e7818fabf74f3deaacc952e5fc29daa55ba1e3/android_webview/glue/java/src/com/android/webview/chromium/TokenBindingManagerAdapter.java
[modify] https://crrev.com/52e7818fabf74f3deaacc952e5fc29daa55ba1e3/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java
[modify] https://crrev.com/52e7818fabf74f3deaacc952e5fc29daa55ba1e3/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
[modify] https://crrev.com/52e7818fabf74f3deaacc952e5fc29daa55ba1e3/android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java
[modify] https://crrev.com/52e7818fabf74f3deaacc952e5fc29daa55ba1e3/android_webview/glue/java/src/com/android/webview/chromium/WebViewDelegateFactory.java
[modify] https://crrev.com/52e7818fabf74f3deaacc952e5fc29daa55ba1e3/build/config/android/config.gni

Comment 8 by torne@chromium.org, Sep 5 2016

Oh, yeah. I thought there was an actual need to roll the SDK to get newer build tools (aapt?) to support new manifest features and the like, but I guess the glue itself doesn't touch that, and I'm not sure if that really works that way or not anyway.

Comment 9 by boliu@chromium.org, Sep 7 2016

Cc: michaelbai@chromium.org
A lot of clean up depends on actually rolling the sdk and updating the target sdk version.

There is one particular clean up I'm interested in: removing use_webview_internal_framework

Downstream, it should merged with use_unpublished_apis:
use_webview_internal_framework should always imply use_unpublished_apis, and use_unpublished_apis=true but use_webview_internal_framework=false isn't really needed either.

Upstream, apparently it's used to remove system_webview_apk target so it can be defined downstream. After sdk roll, that won't be necessary anymore.
Note, we still need build system_webview_apk with Android O in downstream, so,  use_webview_internal_framework or other similar thing needs in upstream. 
Cc: kerz@chromium.org
IIRC, kerz had concern of the variable name we use for building with unpublished framework, if we want use name other than 'use_webview_internal_framework' in upstream, please sync with him.
> Note, we still need build system_webview_apk with Android O in downstream, so,  use_webview_internal_framework or other similar thing needs in upstream.

I'll have to think a bit about that one. I'm hoping with unforking, we can make it work without having to move the target definition downstream.

> IIRC, kerz had concern of the variable name we use for building with unpublished framework, if we want use name other than 'use_webview_internal_framework' in upstream, please sync with him.

The plan is to *remove* all traces of use_webview_internal_framework from upstream... end of discussion? :p
Right, because we don't need to support gyp now, downstream system_webview_apk should be able to move to upstream, maybe get ride of use_webview_internal_framework, but we still need a way to know something (like framework jar, manifest) are already defined in downstream.
There's still a problem with building upstream: the sandbox service is not set as an externalService so multiprocess doesn't work. The extra attribute is still guarded by use_webview_internal_framework and downstream-only.
Yeah we only talked about removing use_webview_internal_framework, but I didn't even look into it since sdk roll still hasn't happened.
I assumed it was already the case that setting it was only required if you wanted to compile against the next unreleased SDK, though, not that right now you still have to set it to actually get a working build.

I'll just fix it, anyway :)
The target SDK also need to set to 24.
Project Member

Comment 18 by bugdroid1@chromium.org, Oct 5 2016

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

commit 59981e3bcf550b3db4c0d7f6f0953c873626fb70
Author: torne <torne@chromium.org>
Date: Wed Oct 05 16:40:25 2016

Update WebView manifest for API 24.

The sandboxed renderer service must be defined as an external service
for multiprocess to work; this was only being set via a downstream jinja
variable override. Remove the jinja variable as it's not used for
anything else, and just always set externalService to true. Also, target
API 24 by default.

BUG= 643660 

Review-Url: https://codereview.chromium.org/2387413003
Cr-Commit-Position: refs/heads/master@{#423185}

[modify] https://crrev.com/59981e3bcf550b3db4c0d7f6f0953c873626fb70/android_webview/apk/java/AndroidManifest.xml

Project Member

Comment 19 by bugdroid1@chromium.org, Oct 27 2016

Labels: merge-merged-2840
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/59981e3bcf550b3db4c0d7f6f0953c873626fb70

commit 59981e3bcf550b3db4c0d7f6f0953c873626fb70
Author: torne <torne@chromium.org>
Date: Wed Oct 05 16:40:25 2016

Update WebView manifest for API 24.

The sandboxed renderer service must be defined as an external service
for multiprocess to work; this was only being set via a downstream jinja
variable override. Remove the jinja variable as it's not used for
anything else, and just always set externalService to true. Also, target
API 24 by default.

BUG= 643660 

Review-Url: https://codereview.chromium.org/2387413003
Cr-Commit-Position: refs/heads/master@{#423185}

[modify] https://crrev.com/59981e3bcf550b3db4c0d7f6f0953c873626fb70/android_webview/apk/java/AndroidManifest.xml

Comment 20 by dimu@google.com, Nov 4 2016

Labels: -merge-merged-2840
[Automated comment] removing mislabelled merge-merged-2840

Comment 21 by boliu@chromium.org, Jan 25 2017

Status: Fixed (was: Assigned)
Don't think there's anything else to do here..

Sign in to add a comment