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;