Merge "Use WebViewUpdateManager instead of raw AIDL." into main
diff --git a/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java b/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java
index 05855e4..546320c 100644
--- a/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java
+++ b/src/com/android/settings/webview/WebViewUpdateServiceWrapper.java
@@ -20,12 +20,12 @@
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 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 List<ApplicationInfo> 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<ApplicationInfo> pkgs = new ArrayList<>();
for (WebViewProviderInfo provider : providers) {
@@ -80,10 +89,15 @@
*/
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 @@
*/
@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;