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

Commit 0a245fb6 authored by Ziad Youssef's avatar Ziad Youssef
Browse files

Add a method to get the default webview provider

The method will be used by settings to get which package to keep enabled.
Also, this defines which package we will fallback to for the modified findPreferredWebViewPackage.

Test:  atest com.android.server.webkit.WebViewUpdateServiceTest

Bug: 308907090
Change-Id: Ib5efef1b04ba2fe098ef2695e56902818f0a20c9
parent 0645abef
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -79,4 +79,9 @@ interface IWebViewUpdateService {
     * Used by Settings to enable/disable multiprocess.
     */
    void enableMultiProcess(boolean enable);

    /**
     * Used by Settings to get the default WebView package.
     */
    WebViewProviderInfo getDefaultWebViewPackage();
}
+5 −0
Original line number Diff line number Diff line
@@ -257,6 +257,11 @@ public class WebViewUpdateService extends SystemService {
            return WebViewUpdateService.this.mImpl.getValidWebViewPackages();
        }

        @Override // Binder call
        public WebViewProviderInfo getDefaultWebViewPackage() {
            return WebViewUpdateService.this.mImpl.getDefaultWebViewPackage();
        }

        @Override // Binder call
        public WebViewProviderInfo[] getAllWebViewPackages() {
            return WebViewUpdateService.this.mImpl.getWebViewPackages();
+7 −0
Original line number Diff line number Diff line
@@ -385,6 +385,13 @@ class WebViewUpdateServiceImpl implements WebViewUpdateServiceInterface {
        return providers;
    }

    @Override
    public WebViewProviderInfo getDefaultWebViewPackage() {
        throw new IllegalStateException(
                "getDefaultWebViewPackage shouldn't be called if update_service_v2 flag is"
                        + " disabled.");
    }

    private static class ProviderAndPackageInfo {
        public final WebViewProviderInfo provider;
        public final PackageInfo packageInfo;
+18 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.AsyncTask;
import android.os.Trace;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.AndroidRuntimeException;
import android.util.Slog;
import android.webkit.UserPackage;
import android.webkit.WebViewFactory;
@@ -374,6 +375,23 @@ class WebViewUpdateServiceImpl2 implements WebViewUpdateServiceInterface {
        return providers;
    }

    /**
     * Returns the default WebView provider which should be first availableByDefault option in the
     * system config.
     */
    @Override
    public WebViewProviderInfo getDefaultWebViewPackage() {
        WebViewProviderInfo[] webviewProviders = getWebViewPackages();
        for (WebViewProviderInfo provider : webviewProviders) {
            if (provider.availableByDefault) {
                return provider;
            }
        }
        // This should be unreachable because the config parser enforces that there is at least one
        // availableByDefault provider.
        throw new AndroidRuntimeException("No available by default WebView Provider.");
    }

    private static class ProviderAndPackageInfo {
        public final WebViewProviderInfo provider;
        public final PackageInfo packageInfo;
+2 −0
Original line number Diff line number Diff line
@@ -40,6 +40,8 @@ interface WebViewUpdateServiceInterface {

    WebViewProviderInfo[] getValidWebViewPackages();

    WebViewProviderInfo getDefaultWebViewPackage();

    PackageInfo getCurrentWebViewPackage();

    boolean isMultiProcessEnabled();
Loading