Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ef8deffa authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "webview: implement new minimum version check."" into main

parents 61e40ee7 1def7090
Loading
Loading
Loading
Loading
+4 −29
Original line number Diff line number Diff line
@@ -36,32 +36,17 @@ import java.util.List;
 */
@SystemApi
public interface WebViewFactoryProvider {
    /**
     * Used as the requirement when Flags.useBEntryPoint() is false.
     * @hide
     */
    /** @hide */
    int MINIMUM_SUPPORTED_TARGET_SDK = Build.VERSION_CODES.TIRAMISU;

    /**
     * Used as the requirement when Flags.useBEntryPoint() is true.
     * TODO: set to the actual minimum required version code - this is just the
     *       version shipped in V.
     * @hide
     */
    long MINIMUM_SUPPORTED_VERSION_CODE = 661308800L;

    /**
     * Returns whether the WebView implementation represented by {@code packageInfo}
     * is compatible with this version of Android.
     * @hide
     */
    static boolean isCompatibleImplementationPackage(@NonNull PackageInfo packageInfo) {
        if (Flags.useBEntryPoint()) {
            return packageInfo.versionCode >= MINIMUM_SUPPORTED_VERSION_CODE;
        } else {
        return packageInfo.applicationInfo.targetSdkVersion >= MINIMUM_SUPPORTED_TARGET_SDK;
    }
    }

    /**
     * Returns a string describing the minimum requirement for a WebView implementation
@@ -69,13 +54,7 @@ public interface WebViewFactoryProvider {
     * @hide
     */
    static @NonNull String describeCompatibleImplementationPackage() {
        if (Flags.useBEntryPoint()) {
            return TextUtils.formatSimple("Minimum versionCode for OS support: %d",
                    MINIMUM_SUPPORTED_VERSION_CODE);
        } else {
            return TextUtils.formatSimple("Minimum targetSdkVersion: %d",
                    MINIMUM_SUPPORTED_TARGET_SDK);
        }
        return TextUtils.formatSimple("Minimum targetSdkVersion: %d", MINIMUM_SUPPORTED_TARGET_SDK);
    }

    /**
@@ -84,12 +63,8 @@ public interface WebViewFactoryProvider {
     * @hide
     */
    static @NonNull String getWebViewFactoryClassName() {
        if (Flags.useBEntryPoint()) {
            return "com.android.webview.chromium.WebViewChromiumFactoryProviderForB";
        } else {
        return "com.android.webview.chromium.WebViewChromiumFactoryProviderForT";
    }
    }

    /**
     * This Interface provides glue for implementing the backend of WebView static methods which
+0 −8
Original line number Diff line number Diff line
@@ -42,11 +42,3 @@ flag {
    description: "New APIs required by File System Access"
    bug: "40101963"
}

flag {
    name: "use_b_entry_point"
    namespace: "webview"
    description: "Use B-specific entry point to WebView APK"
    bug: "373617389"
    is_fixed_read_only: true
}
+0 −52
Original line number Diff line number Diff line
@@ -25,12 +25,9 @@ import android.content.pm.PackageInfo;
import android.content.pm.Signature;
import android.os.Build;
import android.os.Bundle;
import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.util.Base64;
import android.webkit.Flags;
import android.webkit.WebViewFactory;
import android.webkit.WebViewProviderInfo;
import android.webkit.WebViewProviderResponse;
@@ -1242,7 +1239,6 @@ public class WebViewUpdateServiceTest {
     * that packages targeting an older version are not valid.
     */
    @Test
    @RequiresFlagsDisabled(Flags.FLAG_USE_B_ENTRY_POINT)
    public void testTargetSdkVersionValidity() {
        PackageInfo newSdkPackage = createPackageInfo("newTargetSdkPackage",
                true /* enabled */, true /* valid */, true /* installed */);
@@ -1284,54 +1280,6 @@ public class WebViewUpdateServiceTest {
                1 /* first preparation phase */);
    }

    /**
     * Ensure that packages with a versionCode new enough for the current platform are valid, and
     * that older packages are not valid.
     */
    @Test
    @RequiresFlagsEnabled(Flags.FLAG_USE_B_ENTRY_POINT)
    public void testVersionCodeOSCompatValidity() {
        PackageInfo newVersionPackage = createPackageInfo("newVersionPackage",
                true /* enabled */, true /* valid */, true /* installed */);
        newVersionPackage.setLongVersionCode(200L);
        PackageInfo currentVersionPackage = createPackageInfo("currentVersionPackage",
                true /* enabled */, true /* valid */, true /* installed */);
        currentVersionPackage.setLongVersionCode(100L);
        PackageInfo oldVersionPackage = createPackageInfo("oldVersionPackage",
                true /* enabled */, true /* valid */, true /* installed */);
        oldVersionPackage.setLongVersionCode(50L);

        WebViewProviderInfo newVersionProviderInfo =
                new WebViewProviderInfo(newVersionPackage.packageName, "", true, false, null);
        WebViewProviderInfo currentVersionProviderInfo =
                new WebViewProviderInfo(currentVersionPackage.packageName, "", true, false, null);
        WebViewProviderInfo[] packages =
                new WebViewProviderInfo[] {
                    currentVersionProviderInfo,
                    new WebViewProviderInfo(oldVersionPackage.packageName, "", true, false, null),
                    newVersionProviderInfo
                };
        setupWithPackages(packages);
        // Mock the compatibility predicate as requiring 100 as versionCode.
        mTestSystemImpl.setCompatibilityPredicate(
                pi -> pi.getLongVersionCode() >= 100L);
        // Start with the setting pointing to the invalid package
        mTestSystemImpl.updateUserSetting(oldVersionPackage.packageName);

        mTestSystemImpl.setPackageInfo(newVersionPackage);
        mTestSystemImpl.setPackageInfo(currentVersionPackage);
        mTestSystemImpl.setPackageInfo(oldVersionPackage);

        assertArrayEquals(
                new WebViewProviderInfo[] { currentVersionProviderInfo, newVersionProviderInfo },
                mWebViewUpdateServiceImpl.getValidWebViewPackages());

        runWebViewBootPreparationOnMainSync();

        checkPreparationPhasesForPackage(currentVersionPackage.packageName,
                1 /* first preparation phase */);
    }

    @Test
    public void testDefaultWebViewPackageIsTheFirstAvailableByDefault() {
        String nonDefaultPackage = "nonDefaultPackage";