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

Commit c7138d93 authored by Richard (Torne) Coles's avatar Richard (Torne) Coles Committed by Android (Google) Code Review
Browse files

Merge "Use WebViewUpdateManager instead of raw AIDL." into main

parents 7ff2ab0d 80ef43e7
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;