From 80ef43e7be6ab675f634a486cae50a9067a9971c Mon Sep 17 00:00:00 2001 From: "Torne (Richard Coles)" Date: Fri, 19 Jan 2024 15:51:03 -0500 Subject: [PATCH] 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 --- .../webview/WebViewUpdateServiceWrapper.java | 53 +++++++++++++------ 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java b/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java index 05855e4f348..546320c2aac 100644 --- a/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java +++ b/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java @@ -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 { - return WebViewFactory.getUpdateService().getCurrentWebViewPackage(); - } catch (RemoteException e) { + if (android.webkit.Flags.updateServiceIpcWrapper()) { + return WebViewUpdateManager.getInstance().getCurrentWebViewPackage(); + } else { + return WebViewFactory.getUpdateService().getCurrentWebViewPackage(); + } + } catch (Exception e) { Log.e(TAG, e.toString()); } return null; @@ -59,8 +63,13 @@ public class WebViewUpdateServiceWrapper { public List getValidWebViewApplicationInfos(Context context) { WebViewProviderInfo[] providers = null; try { - providers = WebViewFactory.getUpdateService().getValidWebViewPackages(); - } catch (RemoteException e) { + if (android.webkit.Flags.updateServiceIpcWrapper()) { + providers = context.getSystemService(WebViewUpdateManager.class) + .getValidWebViewPackages(); + } else { + providers = WebViewFactory.getUpdateService().getValidWebViewPackages(); + } + } catch (Exception e) { } List pkgs = new ArrayList<>(); for (WebViewProviderInfo provider : providers) { @@ -80,10 +89,15 @@ public class WebViewUpdateServiceWrapper { */ public boolean setWebViewProvider(String packageName) { try { - return packageName.equals( - WebViewFactory.getUpdateService().changeProviderAndSetting(packageName)); - } catch (RemoteException e) { - Log.e(TAG, "RemoteException when trying to change provider to " + packageName, e); + if (android.webkit.Flags.updateServiceIpcWrapper()) { + return packageName.equals( + WebViewUpdateManager.getInstance().changeProviderAndSetting(packageName)); + } else { + return packageName.equals( + WebViewFactory.getUpdateService().changeProviderAndSetting(packageName)); + } + } 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 { - IWebViewUpdateService service = WebViewFactory.getUpdateService(); - if (service != null) { - WebViewProviderInfo provider = service.getDefaultWebViewPackage(); - if (provider != null) { - return provider.packageName; + if (android.webkit.Flags.updateServiceIpcWrapper()) { + WebViewUpdateManager manager = WebViewUpdateManager.getInstance(); + if (manager != null) { + provider = manager.getDefaultWebViewPackage(); + } + } else { + IWebViewUpdateService service = WebViewFactory.getUpdateService(); + if (service != null) { + 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;