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

This commit is contained in:
Richard (Torne) Coles
2024-02-13 18:10:36 +00:00
committed by Android (Google) Code Review

View File

@@ -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;