Merge "Use WebViewUpdateManager instead of raw AIDL." into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
c7138d9378
@@ -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 {
|
||||||
return WebViewFactory.getUpdateService().getCurrentWebViewPackage();
|
if (android.webkit.Flags.updateServiceIpcWrapper()) {
|
||||||
} catch (RemoteException e) {
|
return WebViewUpdateManager.getInstance().getCurrentWebViewPackage();
|
||||||
|
} else {
|
||||||
|
return WebViewFactory.getUpdateService().getCurrentWebViewPackage();
|
||||||
|
}
|
||||||
|
} 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 {
|
||||||
providers = WebViewFactory.getUpdateService().getValidWebViewPackages();
|
if (android.webkit.Flags.updateServiceIpcWrapper()) {
|
||||||
} catch (RemoteException e) {
|
providers = context.getSystemService(WebViewUpdateManager.class)
|
||||||
|
.getValidWebViewPackages();
|
||||||
|
} else {
|
||||||
|
providers = WebViewFactory.getUpdateService().getValidWebViewPackages();
|
||||||
|
}
|
||||||
|
} 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 {
|
||||||
return packageName.equals(
|
if (android.webkit.Flags.updateServiceIpcWrapper()) {
|
||||||
WebViewFactory.getUpdateService().changeProviderAndSetting(packageName));
|
return packageName.equals(
|
||||||
} catch (RemoteException e) {
|
WebViewUpdateManager.getInstance().changeProviderAndSetting(packageName));
|
||||||
Log.e(TAG, "RemoteException when trying to change provider to " + packageName, e);
|
} 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;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -112,18 +126,23 @@ public class WebViewUpdateServiceWrapper {
|
|||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public String getDefaultWebViewPackageName() {
|
public String getDefaultWebViewPackageName() {
|
||||||
|
WebViewProviderInfo provider = null;
|
||||||
try {
|
try {
|
||||||
IWebViewUpdateService service = WebViewFactory.getUpdateService();
|
if (android.webkit.Flags.updateServiceIpcWrapper()) {
|
||||||
if (service != null) {
|
WebViewUpdateManager manager = WebViewUpdateManager.getInstance();
|
||||||
WebViewProviderInfo provider = service.getDefaultWebViewPackage();
|
if (manager != null) {
|
||||||
if (provider != null) {
|
provider = manager.getDefaultWebViewPackage();
|
||||||
return provider.packageName;
|
}
|
||||||
|
} else {
|
||||||
|
IWebViewUpdateService service = WebViewFactory.getUpdateService();
|
||||||
|
if (service != null) {
|
||||||
|
provider = service.getDefaultWebViewPackage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} 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;
|
||||||
|
Reference in New Issue
Block a user