Commit 48d91511 authored by Clark DuVall's avatar Clark DuVall Committed by Commit Bot

Revert "Move getPacProcessor() to GlueApiHelperForR"

This reverts commit 02b24a76.

Reason for revert: Reintroduces the perf regression: https://pinpoint-dot-chromeperf.appspot.com/job/16e0ecee920000

Original change's description:
> 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: Nate Fischer <ntfschr@chromium.org>
> Reviewed-by: Richard Coles <torne@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#794655}

TBR=torne@chromium.org,ntfschr@chromium.org,cduvall@chromium.org

Change-Id: I8451360f542ba1b546975c5fd84f84d81b0c502a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 1111909
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2335768Reviewed-by: default avatarClark DuVall <cduvall@chromium.org>
Commit-Queue: Clark DuVall <cduvall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#794686}
parent da473853
......@@ -45,7 +45,6 @@ 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,7 +17,6 @@ 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;
......@@ -716,9 +715,4 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider {
getSingleton().getBrowserContextOnUiThread().setWebLayerRunningInSameProcess();
});
}
@Override
public PacProcessor getPacProcessor() {
return GlueApiHelperForR.getPacProcessor();
}
}
......@@ -4,6 +4,8 @@
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);
......@@ -12,4 +14,9 @@ class WebViewChromiumFactoryProviderForR extends WebViewChromiumFactoryProvider
protected WebViewChromiumFactoryProviderForR(android.webkit.WebViewDelegate delegate) {
super(delegate);
}
@Override
public PacProcessor getPacProcessor() {
return PacProcessorImpl.getInstance();
}
}
......@@ -3556,7 +3556,6 @@ 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,9 +693,7 @@ public final class WebLayerImpl extends IWebLayer.Stub {
}
private static void notifyWebViewRunningInProcess(ClassLoader webViewClassLoader) {
// TODO(crbug.com/1112001): Investigate why loading classes causes strict mode
// violations in some situations.
try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) {
try {
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