Commit 02b24a76 authored by Clark DuVall's avatar Clark DuVall Committed by Commit Bot

Move getPacProcessor() to GlueApiHelperForR

Follow up after feedback on http://crrev.com/c/2328302.

Bug: 1111909
Change-Id: If3107a6bc513d2aad898e8bc87c8436392ee057d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2335385
Commit-Queue: Clark DuVall <cduvall@chromium.org>
Reviewed-by: default avatarNate Fischer <ntfschr@chromium.org>
Reviewed-by: default avatarRichard Coles <torne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#794655}
parent 2487104f
......@@ -45,6 +45,7 @@ android_library("glue_java") {
"java/src/com/android/webview/chromium/GlueApiHelperForOMR1.java",
"java/src/com/android/webview/chromium/GlueApiHelperForP.java",
"java/src/com/android/webview/chromium/GlueApiHelperForQ.java",
"java/src/com/android/webview/chromium/GlueApiHelperForR.java",
"java/src/com/android/webview/chromium/GraphicsUtils.java",
"java/src/com/android/webview/chromium/MonochromeLibraryPreloader.java",
"java/src/com/android/webview/chromium/PacProcessorImpl.java",
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package com.android.webview.chromium;
import android.annotation.TargetApi;
import android.os.Build;
import android.webkit.PacProcessor;
import org.chromium.base.annotations.VerifiesOnR;
/**
* Utility class to use new APIs that were added in R (API level 30). These need to exist in a
* separate class so that Android framework can successfully verify glue layer classes without
* encountering the new APIs. Note that GlueApiHelper is only for APIs that cannot go to ApiHelper
* in base/, for reasons such as using system APIs or instantiating an adapter class that is
* specific to glue layer.
*/
@VerifiesOnR
@TargetApi(Build.VERSION_CODES.R)
public final class GlueApiHelperForR {
private GlueApiHelperForR() {}
public static PacProcessor getPacProcessor() {
return PacProcessorImpl.getInstance();
}
}
......@@ -17,6 +17,7 @@ import android.provider.Settings;
import android.view.ViewGroup;
import android.webkit.CookieManager;
import android.webkit.GeolocationPermissions;
import android.webkit.PacProcessor;
import android.webkit.ServiceWorkerController;
import android.webkit.TokenBindingService;
import android.webkit.TracingController;
......@@ -715,4 +716,9 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider {
getSingleton().getBrowserContextOnUiThread().setWebLayerRunningInSameProcess();
});
}
@Override
public PacProcessor getPacProcessor() {
return GlueApiHelperForR.getPacProcessor();
}
}
......@@ -4,8 +4,6 @@
package com.android.webview.chromium;
import android.webkit.PacProcessor;
class WebViewChromiumFactoryProviderForR extends WebViewChromiumFactoryProvider {
public static WebViewChromiumFactoryProvider create(android.webkit.WebViewDelegate delegate) {
return new WebViewChromiumFactoryProviderForR(delegate);
......@@ -14,9 +12,4 @@ class WebViewChromiumFactoryProviderForR extends WebViewChromiumFactoryProvider
protected WebViewChromiumFactoryProviderForR(android.webkit.WebViewDelegate delegate) {
super(delegate);
}
@Override
public PacProcessor getPacProcessor() {
return PacProcessorImpl.getInstance();
}
}
......@@ -3556,6 +3556,7 @@ if (is_android) {
"android/java/src/org/chromium/base/annotations/VerifiesOnOMR1.java",
"android/java/src/org/chromium/base/annotations/VerifiesOnP.java",
"android/java/src/org/chromium/base/annotations/VerifiesOnQ.java",
"android/java/src/org/chromium/base/annotations/VerifiesOnR.java",
"android/java/src/org/chromium/base/compat/ApiHelperForM.java",
"android/java/src/org/chromium/base/compat/ApiHelperForN.java",
"android/java/src/org/chromium/base/compat/ApiHelperForO.java",
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.base.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* The annotated method or class verifies on R, but not below.
*
* The annotated method (or methods on the annotated class) are guaranteed to not be inlined by R8
* on builds targeted below R. This prevents class verification errors (which results in a very slow
* retry-verification-at-runtime) from spreading into other classes on these lower versions.
*/
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.CLASS)
public @interface VerifiesOnR {}
......@@ -693,7 +693,9 @@ public final class WebLayerImpl extends IWebLayer.Stub {
}
private static void notifyWebViewRunningInProcess(ClassLoader webViewClassLoader) {
try {
// TODO(crbug.com/1112001): Investigate why loading classes causes strict mode
// violations in some situations.
try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) {
Class<?> webViewChromiumFactoryProviderClass =
Class.forName("com.android.webview.chromium.WebViewChromiumFactoryProvider",
true, webViewClassLoader);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment