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
This commit is contained in:
Torne (Richard Coles)
2024-01-19 15:51:03 -05:00
committed by Richard Coles
parent ee85a6e0e9
commit 80ef43e7be

View File

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