Block the disable option for WebView Default package
Test: atest ApplicationFeatureProviderImplTest
Bug: 308907090
Change-Id: I21785975b965b04895849d2df71fa2f2b4cb4b2d
diff --git a/tests/robotests/Android.bp b/tests/robotests/Android.bp
index 95a78c7..d313878 100644
--- a/tests/robotests/Android.bp
+++ b/tests/robotests/Android.bp
@@ -57,6 +57,7 @@
"Settings_robolectric_meta_service_file",
"SettingsLib-robo-testutils",
"Settings-robo-testutils",
+ "android.webkit.flags-aconfig-java",
"androidx.test.core",
"androidx.test.espresso.core",
"androidx.test.ext.junit",
diff --git a/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
index 6bed1bc..bac0de9 100644
--- a/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
@@ -37,13 +37,20 @@
import android.os.Build;
import android.os.UserHandle;
import android.os.UserManager;
+import android.platform.test.annotations.RequiresFlagsDisabled;
+import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
+import android.webkit.Flags;
import com.android.settings.testutils.ApplicationTestUtils;
+import com.android.settings.webview.WebViewUpdateServiceWrapper;
import com.android.settingslib.testutils.shadow.ShadowDefaultDialerManager;
import com.android.settingslib.testutils.shadow.ShadowSmsApplication;
import org.junit.Before;
import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -67,6 +74,9 @@
@LooperMode(LooperMode.Mode.LEGACY)
public final class ApplicationFeatureProviderImplTest {
+ @Rule
+ public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
private final int MAIN_USER_ID = 0;
private final int MANAGED_PROFILE_ID = 10;
@@ -91,6 +101,8 @@
private DevicePolicyManager mDevicePolicyManager;
@Mock
private LocationManager mLocationManager;
+ @Mock
+ private WebViewUpdateServiceWrapper mWebViewUpdateServiceWrapper;
private ApplicationFeatureProvider mProvider;
@@ -106,7 +118,7 @@
when(mContext.getSystemService(Context.LOCATION_SERVICE)).thenReturn(mLocationManager);
mProvider = new ApplicationFeatureProviderImpl(mContext, mPackageManager,
- mPackageManagerService, mDevicePolicyManager);
+ mPackageManagerService, mDevicePolicyManager, mWebViewUpdateServiceWrapper);
}
private void verifyCalculateNumberOfPolicyInstalledApps(boolean async) {
@@ -342,6 +354,26 @@
}
@Test
+ @RequiresFlagsEnabled(Flags.FLAG_UPDATE_SERVICE_V2)
+ public void getKeepEnabledPackages_shouldContainWebViewPackage() {
+ final String testWebViewPackageName = "com.android.webview";
+ when(mWebViewUpdateServiceWrapper.getDefaultWebViewPackageName())
+ .thenReturn(testWebViewPackageName);
+ final Set<String> allowlist = mProvider.getKeepEnabledPackages();
+ assertThat(allowlist).contains(testWebViewPackageName);
+ }
+
+ @Test
+ @RequiresFlagsDisabled(Flags.FLAG_UPDATE_SERVICE_V2)
+ public void getKeepEnabledPackages_shouldNotContainWebViewPackageIfFlagDisabled() {
+ final String testWebViewPackageName = "com.android.webview";
+ when(mWebViewUpdateServiceWrapper.getDefaultWebViewPackageName())
+ .thenReturn(testWebViewPackageName);
+ final Set<String> allowlist = mProvider.getKeepEnabledPackages();
+ assertThat(allowlist).doesNotContain(testWebViewPackageName);
+ }
+
+ @Test
@Config(shadows = {ShadowSmsApplication.class, ShadowDefaultDialerManager.class})
public void getKeepEnabledPackages_shouldContainPackageInstaller() {
final String testDialer = "com.android.test.defaultdialer";