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

Commit 80ef43e7 authored by Torne (Richard Coles)'s avatar Torne (Richard Coles) Committed by Richard Coles
Browse files

Use WebViewUpdateManager instead of raw AIDL.

Use the new IPC wrapper WebViewUpdateManager instead of directly
consuming IWebViewUpdateService.

Bug: 319292658
Test: m RunSettingsRoboTests
Change-Id: I75a3788aeac9757ce423454c4b6a2a63f5c4f4b2
parent ee85a6e0
Loading
Loading
Loading
Loading
+36 −17
Original line number Diff line number Diff line
@@ -20,12 +20,12 @@ import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.RemoteException;
import android.util.Log;
import android.webkit.IWebViewUpdateService;
import android.webkit.UserPackage;
import android.webkit.WebViewFactory;
import android.webkit.WebViewProviderInfo;
import android.webkit.WebViewUpdateManager;
import android.widget.Toast;

import androidx.annotation.Nullable;
@@ -44,8 +44,12 @@ public class WebViewUpdateServiceWrapper {
     */
    public PackageInfo getCurrentWebViewPackage() {
        try {
            if (android.webkit.Flags.updateServiceIpcWrapper()) {
                return WebViewUpdateManager.getInstance().getCurrentWebViewPackage();
            } else {
                return WebViewFactory.getUpdateService().getCurrentWebViewPackage();
        } catch (RemoteException e) {
            }
        } catch (Exception e) {
            Log.e(TAG, e.toString());
        }
        return null;
@@ -59,8 +63,13 @@ public class WebViewUpdateServiceWrapper {
    public List<ApplicationInfo> getValidWebViewApplicationInfos(Context context) {
        WebViewProviderInfo[] providers = null;
        try {
            if (android.webkit.Flags.updateServiceIpcWrapper()) {
                providers = context.getSystemService(WebViewUpdateManager.class)
                        .getValidWebViewPackages();
            } else {
                providers = WebViewFactory.getUpdateService().getValidWebViewPackages();
        } catch (RemoteException e) {
            }
        } catch (Exception e) {
        }
        List<ApplicationInfo> pkgs = new ArrayList<>();
        for (WebViewProviderInfo provider : providers) {
@@ -80,10 +89,15 @@ public class WebViewUpdateServiceWrapper {
     */
    public boolean setWebViewProvider(String packageName) {
        try {
            if (android.webkit.Flags.updateServiceIpcWrapper()) {
                return packageName.equals(
                        WebViewUpdateManager.getInstance().changeProviderAndSetting(packageName));
            } else {
                return packageName.equals(
                        WebViewFactory.getUpdateService().changeProviderAndSetting(packageName));
        } catch (RemoteException e) {
            Log.e(TAG, "RemoteException when trying to change provider to " + packageName, e);
            }
        } catch (Exception e) {
            Log.e(TAG, "Exception when trying to change provider to " + packageName, e);
        }
        return false;
    }
@@ -112,18 +126,23 @@ public class WebViewUpdateServiceWrapper {
     */
    @Nullable
    public String getDefaultWebViewPackageName() {
        WebViewProviderInfo provider = null;
        try {
            if (android.webkit.Flags.updateServiceIpcWrapper()) {
                WebViewUpdateManager manager = WebViewUpdateManager.getInstance();
                if (manager != null) {
                    provider = manager.getDefaultWebViewPackage();
                }
            } else {
                IWebViewUpdateService service = WebViewFactory.getUpdateService();
                if (service != null) {
                WebViewProviderInfo provider = service.getDefaultWebViewPackage();
                if (provider != null) {
                    return provider.packageName;
                    provider = service.getDefaultWebViewPackage();
                }
            }
        } catch (RemoteException e) {
            Log.e(TAG, "RemoteException when trying to fetch default WebView package Name", e);
        } catch (Exception e) {
            Log.e(TAG, "Exception when trying to fetch default WebView package Name", e);
        }
        return null;
        return provider != null ? provider.packageName : null;
    }

    static final int PACKAGE_FLAGS = PackageManager.MATCH_ANY_USER;