diff --git a/Android.mk b/Android.mk index f10b3ec2d08..3610e7774fb 100644 --- a/Android.mk +++ b/Android.mk @@ -41,6 +41,7 @@ LOCAL_STATIC_JAVA_LIBRARIES := \ androidx.lifecycle_lifecycle-extensions \ guava \ jsr305 \ + settings-contextual-card-protos-lite \ contextualcards \ settings-logtags \ diff --git a/libs/contextualcards.aar b/libs/contextualcards.aar index a44a26c38b1..5e855fa0dec 100755 Binary files a/libs/contextualcards.aar and b/libs/contextualcards.aar differ diff --git a/protos/Android.bp b/protos/Android.bp new file mode 100644 index 00000000000..533dbca6564 --- /dev/null +++ b/protos/Android.bp @@ -0,0 +1,8 @@ +java_library_static { + name: "settings-contextual-card-protos-lite", + host_supported: true, + proto: { + type: "lite", + }, + srcs: ["contextual_card_list.proto"], +} \ No newline at end of file diff --git a/protos/contextual_card_list.proto b/protos/contextual_card_list.proto new file mode 100644 index 00000000000..89e6c138640 --- /dev/null +++ b/protos/contextual_card_list.proto @@ -0,0 +1,19 @@ +syntax = "proto2"; + +package com.android.settings.intelligence; +option java_outer_classname = "ContextualCardProto"; + +message ContextualCardList { + repeated ContextualCard card = 1; +} + +message ContextualCard { + // Slice uri of the contextual card + optional string sliceUri = 1; + + // {@link ContextualCardCategory}. + optional int32 category = 2; + + // Name of the card. It should be identical in every app + optional string cardName = 3; +} \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 9843b800259..b52bfea6481 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -10088,7 +10088,7 @@ All Settings - Your Settings + Suggestions CBRS Data diff --git a/src/com/android/settings/MonitoringCertInfoActivity.java b/src/com/android/settings/MonitoringCertInfoActivity.java index 6785b4be541..eadebc1f4fe 100644 --- a/src/com/android/settings/MonitoringCertInfoActivity.java +++ b/src/com/android/settings/MonitoringCertInfoActivity.java @@ -46,10 +46,17 @@ public class MonitoringCertInfoActivity extends Activity implements OnClickListe mUserId = getIntent().getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId()); + final UserHandle user; + if (mUserId == UserHandle.USER_NULL) { + user = null; + } else { + user = UserHandle.of(mUserId); + } + DevicePolicyManager dpm = getSystemService(DevicePolicyManager.class); final int numberOfCertificates = getIntent().getIntExtra( Settings.EXTRA_NUMBER_OF_CERTIFICATES, 1); - final int titleId = RestrictedLockUtils.getProfileOrDeviceOwner(this, mUserId) != null + final int titleId = RestrictedLockUtils.getProfileOrDeviceOwner(this, user) != null ? R.plurals.ssl_ca_cert_settings_button // Check certificate : R.plurals.ssl_ca_cert_dialog_title; // Trust or remove certificate final CharSequence title = getResources().getQuantityText(titleId, numberOfCertificates); diff --git a/src/com/android/settings/RestrictedSettingsFragment.java b/src/com/android/settings/RestrictedSettingsFragment.java index df438d54069..13bc9c51147 100644 --- a/src/com/android/settings/RestrictedSettingsFragment.java +++ b/src/com/android/settings/RestrictedSettingsFragment.java @@ -222,8 +222,8 @@ public abstract class RestrictedSettingsFragment extends SettingsPreferenceFragm public EnforcedAdmin getRestrictionEnforcedAdmin() { mEnforcedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(getActivity(), mRestrictionKey, UserHandle.myUserId()); - if (mEnforcedAdmin != null && mEnforcedAdmin.userId == UserHandle.USER_NULL) { - mEnforcedAdmin.userId = UserHandle.myUserId(); + if (mEnforcedAdmin != null && mEnforcedAdmin.user == null) { + mEnforcedAdmin.user = UserHandle.of(UserHandle.myUserId()); } return mEnforcedAdmin; } diff --git a/src/com/android/settings/TrustedCredentialsDialogBuilder.java b/src/com/android/settings/TrustedCredentialsDialogBuilder.java index 6fd846d0135..806da92099b 100644 --- a/src/com/android/settings/TrustedCredentialsDialogBuilder.java +++ b/src/com/android/settings/TrustedCredentialsDialogBuilder.java @@ -229,7 +229,7 @@ class TrustedCredentialsDialogBuilder extends AlertDialog.Builder { && !mDpm.isCaCertApproved(certHolder.getAlias(), certHolder.getUserId()); final boolean isProfileOrDeviceOwner = RestrictedLockUtils.getProfileOrDeviceOwner( - mActivity, certHolder.getUserId()) != null; + mActivity, UserHandle.of(certHolder.getUserId())) != null; // Show trust button only when it requires consumer user (non-PO/DO) to approve CharSequence displayText = mActivity.getText(!isProfileOrDeviceOwner && mNeedsApproval diff --git a/src/com/android/settings/applications/autofill/AutofillPickerTrampolineActivity.java b/src/com/android/settings/applications/autofill/AutofillPickerTrampolineActivity.java index 9500fd5ae34..ee58bfea799 100644 --- a/src/com/android/settings/applications/autofill/AutofillPickerTrampolineActivity.java +++ b/src/com/android/settings/applications/autofill/AutofillPickerTrampolineActivity.java @@ -14,9 +14,9 @@ package com.android.settings.applications.autofill; import android.app.Activity; +import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; -import android.os.UserHandle; import android.view.autofill.AutofillManager; import com.android.settings.applications.defaultapps.DefaultAutofillPicker; @@ -34,23 +34,23 @@ public class AutofillPickerTrampolineActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - // First check if the current user's service already belongs to the app... - final Intent intent = getIntent(); - final String packageName = intent.getData().getSchemeSpecificPart(); - final String currentService = DefaultAutofillPicker.getDefaultKey( - this, UserHandle.myUserId()); - if (currentService != null && currentService.startsWith(packageName)) { - // ...and succeed right away if it does. - setResult(RESULT_OK); + final AutofillManager afm = getSystemService(AutofillManager.class); + + // First check if the Autofill is available for the current user... + if (afm == null || !afm.hasAutofillFeature() || !afm.isAutofillSupported()) { + // ... and fail right away if it is not. + setResult(RESULT_CANCELED); finish(); return; } - // Then check if the Autofill is available for the current user... - final AutofillManager afm = getSystemService(AutofillManager.class); - if (afm == null || !afm.hasAutofillFeature() || !afm.isAutofillSupported()) { - // ... and fail right away if it is not. - setResult(RESULT_CANCELED); + // Then check if the current user's service already belongs to the app... + final Intent intent = getIntent(); + final String packageName = intent.getData().getSchemeSpecificPart(); + final ComponentName currentService = afm.getAutofillServiceComponentName(); + if (currentService != null && currentService.getPackageName().equals(packageName)) { + // ...and succeed right away if it does. + setResult(RESULT_OK); finish(); return; } diff --git a/src/com/android/settings/dashboard/RestrictedDashboardFragment.java b/src/com/android/settings/dashboard/RestrictedDashboardFragment.java index ca30247e2f2..f43445ba5dd 100644 --- a/src/com/android/settings/dashboard/RestrictedDashboardFragment.java +++ b/src/com/android/settings/dashboard/RestrictedDashboardFragment.java @@ -215,8 +215,8 @@ public abstract class RestrictedDashboardFragment extends DashboardFragment { public EnforcedAdmin getRestrictionEnforcedAdmin() { mEnforcedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(getActivity(), mRestrictionKey, UserHandle.myUserId()); - if (mEnforcedAdmin != null && mEnforcedAdmin.userId == UserHandle.USER_NULL) { - mEnforcedAdmin.userId = UserHandle.myUserId(); + if (mEnforcedAdmin != null && mEnforcedAdmin.user == null) { + mEnforcedAdmin.user = UserHandle.of(UserHandle.myUserId()); } return mEnforcedAdmin; } diff --git a/src/com/android/settings/datausage/BillingCycleSettings.java b/src/com/android/settings/datausage/BillingCycleSettings.java index 2d96fe92092..45997f8efc3 100644 --- a/src/com/android/settings/datausage/BillingCycleSettings.java +++ b/src/com/android/settings/datausage/BillingCycleSettings.java @@ -73,7 +73,8 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements static final String KEY_SET_DATA_LIMIT = "set_data_limit"; private static final String KEY_DATA_LIMIT = "data_limit"; - private NetworkTemplate mNetworkTemplate; + @VisibleForTesting + NetworkTemplate mNetworkTemplate; private Preference mBillingCycle; private Preference mDataWarning; private SwitchPreference mEnableDataWarning; @@ -100,10 +101,15 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements public void onCreate(Bundle icicle) { super.onCreate(icicle); - mDataUsageController = new DataUsageController(getContext()); + final Context context = getContext(); + mDataUsageController = new DataUsageController(context); Bundle args = getArguments(); mNetworkTemplate = args.getParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE); + if (mNetworkTemplate == null) { + mNetworkTemplate = DataUsageUtils.getDefaultTemplate(context, + DataUsageUtils.getDefaultSubscriptionId(context)); + } mBillingCycle = findPreference(KEY_BILLING_CYCLE); mEnableDataWarning = (SwitchPreference) findPreference(KEY_SET_DATA_WARNING); diff --git a/src/com/android/settings/datausage/DataUsageUtils.java b/src/com/android/settings/datausage/DataUsageUtils.java index 3001d2e3f1e..53565ac803e 100644 --- a/src/com/android/settings/datausage/DataUsageUtils.java +++ b/src/com/android/settings/datausage/DataUsageUtils.java @@ -172,8 +172,7 @@ public final class DataUsageUtils { return SystemProperties.get(TEST_RADIOS_PROP).contains("wifi"); } - ConnectivityManager connectivityManager = - context.getSystemService(ConnectivityManager.class); + final ConnectivityManager connectivityManager = ConnectivityManager.from(context); return connectivityManager != null && connectivityManager.isNetworkSupported(TYPE_WIFI); } diff --git a/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java b/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java index 104b216b604..11427661cdb 100644 --- a/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java +++ b/src/com/android/settings/enterprise/ActionDisabledByAdminDialog.java @@ -53,12 +53,18 @@ public class ActionDisabledByAdminDialog extends Activity @androidx.annotation.VisibleForTesting EnforcedAdmin getAdminDetailsFromIntent(Intent intent) { - final EnforcedAdmin admin = new EnforcedAdmin(null, UserHandle.myUserId()); + final EnforcedAdmin admin = new EnforcedAdmin(null, UserHandle.of(UserHandle.myUserId())); if (intent == null) { return admin; } admin.component = intent.getParcelableExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN); - admin.userId = intent.getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId()); + + int userId = intent.getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId()); + if (userId == UserHandle.USER_NULL) { + admin.user = null; + } else { + admin.user = UserHandle.of(userId); + } return admin; } diff --git a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java index ac1939ceed0..f5010f9d5d4 100644 --- a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java +++ b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java @@ -16,6 +16,7 @@ package com.android.settings.enterprise; +import android.annotation.UserIdInt; import android.app.Activity; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; @@ -60,6 +61,14 @@ public class ActionDisabledByAdminDialogHelper { mActivity = activity; } + private @UserIdInt int getEnforcementAdminUserId() { + if (mEnforcedAdmin.user == null) { + return UserHandle.USER_NULL; + } else { + return mEnforcedAdmin.user.getIdentifier(); + } + } + public AlertDialog.Builder prepareDialogBuilder(String restriction, EnforcedAdmin enforcedAdmin) { mEnforcedAdmin = enforcedAdmin; @@ -68,7 +77,7 @@ public class ActionDisabledByAdminDialogHelper { final AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); mDialogView = (ViewGroup) LayoutInflater.from(builder.getContext()).inflate( R.layout.admin_support_details_dialog, null); - initializeDialogViews(mDialogView, mEnforcedAdmin.component, mEnforcedAdmin.userId, + initializeDialogViews(mDialogView, mEnforcedAdmin.component, getEnforcementAdminUserId(), mRestriction); return builder .setPositiveButton(R.string.okay, null) @@ -86,7 +95,7 @@ public class ActionDisabledByAdminDialogHelper { } mEnforcedAdmin = admin; mRestriction = restriction; - initializeDialogViews(mDialogView, mEnforcedAdmin.component, mEnforcedAdmin.userId, + initializeDialogViews(mDialogView, mEnforcedAdmin.component, getEnforcementAdminUserId(), mRestriction); } @@ -108,7 +117,15 @@ public class ActionDisabledByAdminDialogHelper { } setAdminSupportTitle(root, restriction); - setAdminSupportDetails(mActivity, root, new EnforcedAdmin(admin, userId)); + + final UserHandle user; + if (userId == UserHandle.USER_NULL) { + user = null; + } else { + user = UserHandle.of(userId); + } + + setAdminSupportDetails(mActivity, root, new EnforcedAdmin(admin, user)); } @VisibleForTesting @@ -152,20 +169,27 @@ public class ActionDisabledByAdminDialogHelper { if (enforcedAdmin == null || enforcedAdmin.component == null) { return; } + + final int userId; + if (enforcedAdmin.user == null) { + userId = UserHandle.USER_NULL; + } else { + userId = enforcedAdmin.user.getIdentifier(); + } + final DevicePolicyManager dpm = (DevicePolicyManager) activity.getSystemService( Context.DEVICE_POLICY_SERVICE); if (!RestrictedLockUtilsInternal.isAdminInCurrentUserOrProfile(activity, enforcedAdmin.component) || !RestrictedLockUtils.isCurrentUserOrProfile( - activity, enforcedAdmin.userId)) { + activity, userId)) { enforcedAdmin.component = null; } else { - if (enforcedAdmin.userId == UserHandle.USER_NULL) { - enforcedAdmin.userId = UserHandle.myUserId(); + if (enforcedAdmin.user == null) { + enforcedAdmin.user = UserHandle.of(UserHandle.myUserId()); } CharSequence supportMessage = null; if (UserHandle.isSameApp(Process.myUid(), Process.SYSTEM_UID)) { - supportMessage = dpm.getShortSupportMessageForUser( - enforcedAdmin.component, enforcedAdmin.userId); + supportMessage = dpm.getShortSupportMessageForUser(enforcedAdmin.component, userId); } if (supportMessage != null) { final TextView textView = root.findViewById(R.id.admin_support_msg); @@ -183,8 +207,7 @@ public class ActionDisabledByAdminDialogHelper { enforcedAdmin.component); intent.putExtra(DeviceAdminAdd.EXTRA_CALLED_FROM_SUPPORT_DIALOG, true); // DeviceAdminAdd class may need to run as managed profile. - activity.startActivityAsUser(intent, - new UserHandle(enforcedAdmin.userId)); + activity.startActivityAsUser(intent, enforcedAdmin.user); } else { intent.setClass(activity, Settings.DeviceAdminSettingsActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); diff --git a/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java b/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java index 44705c59522..2dede95e758 100644 --- a/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java +++ b/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java @@ -21,14 +21,12 @@ import static android.provider.SettingsSlicesContract.KEY_WIFI; import android.annotation.Nullable; import com.android.settings.homepage.deviceinfo.DataUsageSlice; +import com.android.settings.intelligence.ContextualCardProto.ContextualCard; +import com.android.settings.intelligence.ContextualCardProto.ContextualCardList; import com.android.settings.wifi.WifiSlice; -import com.google.android.settings.intelligence.libs.contextualcards.ContextualCard; import com.google.android.settings.intelligence.libs.contextualcards.ContextualCardProvider; -import java.util.ArrayList; -import java.util.List; - /** Provides dynamic card for SettingsIntelligence. */ public class SettingsContextualCardProvider extends ContextualCardProvider { @@ -36,21 +34,22 @@ public class SettingsContextualCardProvider extends ContextualCardProvider { @Override @Nullable - public List getContextualCards() { - final List cards = new ArrayList<>(); + public ContextualCardList getContextualCards() { final ContextualCard wifiCard = - new ContextualCard.Builder() + ContextualCard.newBuilder() .setSliceUri(WifiSlice.WIFI_URI.toString()) - .setName(KEY_WIFI) + .setCardName(KEY_WIFI) .build(); final ContextualCard dataUsageCard = - new ContextualCard.Builder() + ContextualCard.newBuilder() .setSliceUri(DataUsageSlice.DATA_USAGE_CARD_URI.toString()) - .setName(DataUsageSlice.PATH_DATA_USAGE_CARD) + .setCardName(DataUsageSlice.PATH_DATA_USAGE_CARD) .build(); + final ContextualCardList cards = ContextualCardList.newBuilder() + .addCard(wifiCard) + .addCard(dataUsageCard) + .build(); - cards.add(wifiCard); - cards.add(dataUsageCard); return cards; } } diff --git a/src/com/android/settings/notification/RingtonePreferenceControllerBase.java b/src/com/android/settings/notification/RingtonePreferenceControllerBase.java index 7d5ebf13347..7b37855c6f7 100644 --- a/src/com/android/settings/notification/RingtonePreferenceControllerBase.java +++ b/src/com/android/settings/notification/RingtonePreferenceControllerBase.java @@ -25,6 +25,7 @@ import androidx.preference.Preference; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; +import com.android.settingslib.utils.ThreadUtils; public abstract class RingtonePreferenceControllerBase extends AbstractPreferenceController implements PreferenceControllerMixin { @@ -45,11 +46,17 @@ public abstract class RingtonePreferenceControllerBase extends AbstractPreferenc @Override public void updateState(Preference preference) { + ThreadUtils.postOnBackgroundThread(() -> updateSummary(preference)); + } + + private void updateSummary(Preference preference) { Uri ringtoneUri = RingtoneManager.getActualDefaultRingtoneUri(mContext, getRingtoneType()); final CharSequence summary = Ringtone.getTitle( mContext, ringtoneUri, false /* followSettingsUri */, true /* allowRemote */); if (summary != null) { - preference.setSummary(summary); + ThreadUtils.postOnMainThread(() -> { + preference.setSummary(summary); + }); } } diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothEnablerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothEnablerTest.java index 6c78c65c889..fe10d3e28c8 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothEnablerTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothEnablerTest.java @@ -31,6 +31,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.os.UserHandle; import android.os.UserManager; import android.view.View; @@ -67,7 +68,8 @@ public class BluetoothEnablerTest { @BeforeClass public static void beforeClass() { - sFakeEnforcedAdmin = new EnforcedAdmin(new ComponentName("test.package", "test.Class"), 10); + sFakeEnforcedAdmin = new EnforcedAdmin(new ComponentName("test.package", "test.Class"), + UserHandle.of(10)); } @Mock diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothSliceBuilderTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothSliceBuilderTest.java index bfbdd7f78a4..faab3bd39a3 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothSliceBuilderTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothSliceBuilderTest.java @@ -19,14 +19,11 @@ package com.android.settings.bluetooth; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; @@ -61,11 +58,6 @@ public class BluetoothSliceBuilderTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); - // Prevent crash in SliceMetadata. - Resources resources = spy(mContext.getResources()); - doReturn(60).when(resources).getDimensionPixelSize(anyInt()); - doReturn(resources).when(mContext).getResources(); - // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); } @@ -98,4 +90,4 @@ public class BluetoothSliceBuilderTest { assertThat(adapter.isEnabled()).isTrue(); } -} \ No newline at end of file +} diff --git a/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java b/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java index eb5e4911664..1560af3261b 100644 --- a/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java +++ b/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java @@ -16,14 +16,17 @@ package com.android.settings.datausage; import static android.net.NetworkPolicy.CYCLE_NONE; +import static com.google.common.truth.Truth.assertThat; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; - +import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyLong; import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.nullable; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -32,14 +35,20 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; +import android.content.res.Resources; +import android.net.ConnectivityManager; +import android.net.NetworkPolicyManager; import android.os.Bundle; +import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; import androidx.preference.PreferenceManager; import androidx.preference.SwitchPreference; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settingslib.NetworkPolicyEditor; +import com.android.settingslib.widget.FooterPreference; +import com.android.settingslib.widget.FooterPreferenceMixinCompat; import org.junit.Before; import org.junit.Test; @@ -47,6 +56,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; +import org.robolectric.util.ReflectionHelpers; @RunWith(SettingsRobolectricTestRunner.class) public class BillingCycleSettingsTest { @@ -60,6 +70,10 @@ public class BillingCycleSettingsTest { PreferenceManager mMockPreferenceManager; @Mock private NetworkPolicyEditor mNetworkPolicyEditor; + @Mock + private ConnectivityManager mConnectivityManager; + @Mock + private NetworkPolicyManager mNetworkPolicyManager; private Context mContext; @Mock @@ -96,7 +110,8 @@ public class BillingCycleSettingsTest { public void testDataUsageLimit_shouldNotBeSetOnCancel() { mConfirmLimitFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE); - assertFalse(mSharedPreferences.getBoolean(BillingCycleSettings.KEY_SET_DATA_LIMIT, true)); + assertThat(mSharedPreferences.getBoolean(BillingCycleSettings.KEY_SET_DATA_LIMIT, true)) + .isFalse(); verify(mMockBillingCycleSettings, never()).setPolicyLimitBytes(anyLong()); } @@ -104,7 +119,8 @@ public class BillingCycleSettingsTest { public void testDataUsageLimit_shouldBeSetOnConfirmation() { mConfirmLimitFragment.onClick(null, DialogInterface.BUTTON_POSITIVE); - assertTrue(mSharedPreferences.getBoolean(BillingCycleSettings.KEY_SET_DATA_LIMIT, false)); + assertThat(mSharedPreferences.getBoolean(BillingCycleSettings.KEY_SET_DATA_LIMIT, false)) + .isTrue(); verify(mMockBillingCycleSettings).setPolicyLimitBytes(LIMIT_BYTES); } @@ -124,4 +140,32 @@ public class BillingCycleSettingsTest { verify(mBillingCycle).setSummary(null); } + + @Test + public void onCreate_emptyArguments_shouldSetDefaultNetworkTemplate() { + final BillingCycleSettings billingCycleSettings = spy(new BillingCycleSettings()); + when(billingCycleSettings.getContext()).thenReturn(mContext); + when(billingCycleSettings.getArguments()).thenReturn(Bundle.EMPTY); + final FragmentActivity activity = mock(FragmentActivity.class); + when(billingCycleSettings.getActivity()).thenReturn(activity); + final Resources.Theme theme = mContext.getTheme(); + when(activity.getTheme()).thenReturn(theme); + doNothing().when(billingCycleSettings) + .onCreatePreferences(any(Bundle.class), nullable(String.class)); + when(mContext.getSystemService(Context.NETWORK_POLICY_SERVICE)) + .thenReturn(mNetworkPolicyManager); + when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)) + .thenReturn(mConnectivityManager); + when(mConnectivityManager.isNetworkSupported(anyInt())).thenReturn(true); + final SwitchPreference preference = mock(SwitchPreference.class); + when(billingCycleSettings.findPreference(anyString())).thenReturn(preference); + final FooterPreferenceMixinCompat footer = mock(FooterPreferenceMixinCompat.class); + ReflectionHelpers.setField(billingCycleSettings, "mFooterPreferenceMixin", footer); + when(footer.createFooterPreference()).thenReturn(mock(FooterPreference.class)); + + billingCycleSettings.onCreate(Bundle.EMPTY); + + assertThat(billingCycleSettings.mNetworkTemplate).isNotNull(); + } + } \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java index 254e4f6f654..517154867c5 100644 --- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java @@ -121,7 +121,7 @@ public class DataUsageSummaryPreferenceControllerTest { mActivity = spy(Robolectric.buildActivity(FragmentActivity.class).get()); when(mActivity.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); - when(mActivity.getSystemService(ConnectivityManager.class)) + when(mActivity.getSystemService(Context.CONNECTIVITY_SERVICE)) .thenReturn(mConnectivityManager); when(mTelephonyManager.getSimState()).thenReturn(TelephonyManager.SIM_STATE_READY); when(mConnectivityManager.isNetworkSupported(TYPE_WIFI)).thenReturn(false); diff --git a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java index 9b138a657a3..0a265a11fe3 100644 --- a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java +++ b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java @@ -27,6 +27,7 @@ import android.content.ComponentName; import android.content.Intent; import android.content.pm.UserInfo; import android.os.Process; +import android.os.UserHandle; import android.os.UserManager; import android.view.ViewGroup; import android.widget.FrameLayout; @@ -76,7 +77,7 @@ public class ActionDisabledByAdminDialogHelperTest { final int userId = 123; final ComponentName component = new ComponentName("some.package.name", "some.package.name.SomeClass"); - final EnforcedAdmin admin = new EnforcedAdmin(component, userId); + final EnforcedAdmin admin = new EnforcedAdmin(component, UserHandle.of(userId)); mHelper.showAdminPolicies(admin, mActivity); @@ -90,7 +91,7 @@ public class ActionDisabledByAdminDialogHelperTest { @Test public void testShowAdminPoliciesWithoutComponent() { final int userId = 123; - final EnforcedAdmin admin = new EnforcedAdmin(null, userId); + final EnforcedAdmin admin = new EnforcedAdmin(null, UserHandle.of(userId)); mHelper.showAdminPolicies(admin, mActivity); final Intent intent = mActivityShadow.getNextStartedActivity(); assertEquals(intent.getComponent(), new ComponentName(mActivity, @@ -146,7 +147,7 @@ public class ActionDisabledByAdminDialogHelperTest { final ViewGroup view = new FrameLayout(mActivity); final ComponentName component = new ComponentName("some.package.name", "some.package.name.SomeClass"); - final EnforcedAdmin admin = new EnforcedAdmin(component, 123); + final EnforcedAdmin admin = new EnforcedAdmin(component, UserHandle.of(123)); final TextView textView = new TextView(mActivity); textView.setId(R.id.admin_support_msg); @@ -169,7 +170,7 @@ public class ActionDisabledByAdminDialogHelperTest { final ShadowUserManager userManagerShadow = Shadow.extract(userManager); final ComponentName component = new ComponentName("some.package.name", "some.package.name.SomeClass"); - final EnforcedAdmin admin = new EnforcedAdmin(component, 123); + final EnforcedAdmin admin = new EnforcedAdmin(component, UserHandle.of(123)); dpmShadow.setShortSupportMessageForUser(component, 123, "some message"); dpmShadow.setIsAdminActiveAsUser(false); diff --git a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogTest.java b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogTest.java index ebdfad695fb..e016a06990c 100644 --- a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogTest.java +++ b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogTest.java @@ -43,7 +43,7 @@ public class ActionDisabledByAdminDialogTest { public void testGetAdminDetailsFromIntent() { final int userId = 123; final ComponentName component = new ComponentName("com.some.package", ".SomeClass"); - final EnforcedAdmin expectedAdmin = new EnforcedAdmin(component, userId); + final EnforcedAdmin expectedAdmin = new EnforcedAdmin(component, UserHandle.of(userId)); final Intent intent = new Intent(); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, component); @@ -54,7 +54,7 @@ public class ActionDisabledByAdminDialogTest { @Test public void testGetAdminDetailsFromNullIntent() { final int userId = UserHandle.myUserId(); - final EnforcedAdmin expectedAdmin = new EnforcedAdmin(null, userId); + final EnforcedAdmin expectedAdmin = new EnforcedAdmin(null, UserHandle.of(userId)); Assert.assertEquals(expectedAdmin, mDialog.getAdminDetailsFromIntent(null)); } diff --git a/tests/robotests/src/com/android/settings/flashlight/FlashlightSliceBuilderTest.java b/tests/robotests/src/com/android/settings/flashlight/FlashlightSliceBuilderTest.java index 07296e652c5..6bea0312a71 100644 --- a/tests/robotests/src/com/android/settings/flashlight/FlashlightSliceBuilderTest.java +++ b/tests/robotests/src/com/android/settings/flashlight/FlashlightSliceBuilderTest.java @@ -19,12 +19,9 @@ package com.android.settings.flashlight; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import android.content.Context; -import android.content.res.Resources; import android.provider.Settings; import androidx.slice.Slice; @@ -55,11 +52,6 @@ public class FlashlightSliceBuilderTest { public void setUp() { mContext = spy(RuntimeEnvironment.application); - // Prevent crash in SliceMetadata. - Resources resources = spy(mContext.getResources()); - doReturn(60).when(resources).getDimensionPixelSize(anyInt()); - doReturn(resources).when(mContext).getResources(); - // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); } diff --git a/tests/robotests/src/com/android/settings/homepage/CardContentLoaderTest.java b/tests/robotests/src/com/android/settings/homepage/CardContentLoaderTest.java index 865989d3765..defe0d9f759 100644 --- a/tests/robotests/src/com/android/settings/homepage/CardContentLoaderTest.java +++ b/tests/robotests/src/com/android/settings/homepage/CardContentLoaderTest.java @@ -23,6 +23,7 @@ import android.net.Uri; import com.android.settings.homepage.deviceinfo.DataUsageSlice; import com.android.settings.homepage.deviceinfo.DeviceInfoSlice; +import com.android.settings.homepage.deviceinfo.StorageSlice; import com.android.settings.slices.SettingsSliceProvider; import com.android.settings.testutils.SettingsRobolectricTestRunner; @@ -56,14 +57,15 @@ public class CardContentLoaderTest { public void createStaticCards_shouldReturnTwoCards() { final List defaultData = mCardContentLoader.createStaticCards(); - assertThat(defaultData).hasSize(2); + assertThat(defaultData).hasSize(3); } @Test public void createStaticCards_shouldContainDataUsageAndDeviceInfo() { final Uri dataUsage = DataUsageSlice.DATA_USAGE_CARD_URI; final Uri deviceInfo = DeviceInfoSlice.DEVICE_INFO_CARD_URI; - final List expectedUris = Arrays.asList(dataUsage, deviceInfo); + final Uri storageInfo = StorageSlice.STORAGE_CARD_URI; + final List expectedUris = Arrays.asList(dataUsage, deviceInfo, storageInfo); final List actualCardUris = mCardContentLoader.createStaticCards().stream().map( ContextualCard::getSliceUri).collect(Collectors.toList()); diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java index 80d94977607..a80b963c594 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java @@ -24,9 +24,9 @@ import android.content.Context; import android.net.Uri; import android.os.Bundle; +import com.android.settings.intelligence.ContextualCardProto.ContextualCardList; import com.android.settings.testutils.SettingsRobolectricTestRunner; -import com.google.android.settings.intelligence.libs.contextualcards.ContextualCard; import com.google.android.settings.intelligence.libs.contextualcards.ContextualCardProvider; import org.junit.Before; @@ -34,8 +34,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; -import java.util.ArrayList; - @RunWith(SettingsRobolectricTestRunner.class) public class SettingsContextualCardProviderTest { @@ -54,11 +52,12 @@ public class SettingsContextualCardProviderTest { } @Test - public void contentProviderCall_returnCorrectSize() { + public void contentProviderCall_returnCorrectSize() throws Exception { final Bundle returnValue = mResolver.call(mUri, ContextualCardProvider.METHOD_GET_CARD_LIST, "", null); - final ArrayList cards = - returnValue.getParcelableArrayList(ContextualCardProvider.BUNDLE_CARD_LIST); - assertThat(cards.size()).isEqualTo(2); + final ContextualCardList cards = + ContextualCardList.parseFrom( + returnValue.getByteArray(ContextualCardProvider.BUNDLE_CARD_LIST)); + assertThat(cards.getCardCount()).isEqualTo(2); } } \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/homepage/deviceinfo/DataUsageSliceTest.java b/tests/robotests/src/com/android/settings/homepage/deviceinfo/DataUsageSliceTest.java index c03070c5363..c0af3d811dc 100644 --- a/tests/robotests/src/com/android/settings/homepage/deviceinfo/DataUsageSliceTest.java +++ b/tests/robotests/src/com/android/settings/homepage/deviceinfo/DataUsageSliceTest.java @@ -19,12 +19,10 @@ package com.android.settings.homepage.deviceinfo; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import android.content.Context; -import android.content.res.Resources; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; @@ -60,11 +58,6 @@ public class DataUsageSliceTest { public void setUp() { mContext = spy(RuntimeEnvironment.application); - // Prevent crash in SliceMetadata. - Resources resources = spy(mContext.getResources()); - doReturn(60).when(resources).getDimensionPixelSize(anyInt()); - doReturn(resources).when(mContext).getResources(); - // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); diff --git a/tests/robotests/src/com/android/settings/location/LocationSliceBuilderTest.java b/tests/robotests/src/com/android/settings/location/LocationSliceBuilderTest.java index 65b2e878d6a..90222caf2b1 100644 --- a/tests/robotests/src/com/android/settings/location/LocationSliceBuilderTest.java +++ b/tests/robotests/src/com/android/settings/location/LocationSliceBuilderTest.java @@ -2,12 +2,9 @@ package com.android.settings.location; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import android.content.Context; -import android.content.res.Resources; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; @@ -37,11 +34,6 @@ public class LocationSliceBuilderTest { public void setUp() { mContext = spy(RuntimeEnvironment.application); - // Prevent crash in SliceMetadata. - Resources resources = spy(mContext.getResources()); - doReturn(60).when(resources).getDimensionPixelSize(anyInt()); - doReturn(resources).when(mContext).getResources(); - // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); } diff --git a/tests/robotests/src/com/android/settings/mobilenetwork/Enhanced4gLteSliceHelperTest.java b/tests/robotests/src/com/android/settings/mobilenetwork/Enhanced4gLteSliceHelperTest.java index 6d983816040..1943b3630ac 100644 --- a/tests/robotests/src/com/android/settings/mobilenetwork/Enhanced4gLteSliceHelperTest.java +++ b/tests/robotests/src/com/android/settings/mobilenetwork/Enhanced4gLteSliceHelperTest.java @@ -23,7 +23,6 @@ import static android.app.slice.SliceItem.FORMAT_TEXT; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -32,7 +31,6 @@ import static org.mockito.Mockito.when; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import android.telephony.CarrierConfigManager; import androidx.slice.Slice; @@ -98,11 +96,6 @@ public class Enhanced4gLteSliceHelperTest { //setup for SliceBroadcastReceiver test mReceiver = spy(new SliceBroadcastReceiver()); - // Prevent crash in SliceMetadata. - Resources resources = spy(mContext.getResources()); - doReturn(60).when(resources).getDimensionPixelSize(anyInt()); - doReturn(resources).when(mContext).getResources(); - mEnhanced4gLteSliceHelper = new FakeEnhanced4gLteSliceHelper(mContext); // Set-up specs for SliceMetadata. diff --git a/tests/robotests/src/com/android/settings/notification/ZenModeSliceBuilderTest.java b/tests/robotests/src/com/android/settings/notification/ZenModeSliceBuilderTest.java index bfc5c428f05..6c43736b816 100644 --- a/tests/robotests/src/com/android/settings/notification/ZenModeSliceBuilderTest.java +++ b/tests/robotests/src/com/android/settings/notification/ZenModeSliceBuilderTest.java @@ -20,14 +20,11 @@ import static android.app.slice.Slice.EXTRA_TOGGLE_STATE; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import android.provider.Settings; import androidx.slice.Slice; @@ -60,11 +57,6 @@ public class ZenModeSliceBuilderTest { public void setUp() { mContext = spy(RuntimeEnvironment.application); - // Prevent crash in SliceMetadata. - Resources resources = spy(mContext.getResources()); - doReturn(60).when(resources).getDimensionPixelSize(anyInt()); - doReturn(resources).when(mContext).getResources(); - // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); } diff --git a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java index 16e9cb737a5..078186af6c8 100644 --- a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java +++ b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java @@ -18,7 +18,6 @@ package com.android.settings.slices; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; @@ -27,7 +26,6 @@ import static org.mockito.Mockito.verify; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import android.net.Uri; import android.provider.Settings; import android.provider.SettingsSlicesContract; @@ -85,11 +83,6 @@ public class SliceBuilderUtilsTest { mFeatureFactory = FakeFeatureFactory.setupForTest(); mLoggingArgumentCatpor = ArgumentCaptor.forClass(Pair.class); - // Prevent crash in SliceMetadata. - Resources resources = spy(mContext.getResources()); - doReturn(60).when(resources).getDimensionPixelSize(anyInt()); - doReturn(resources).when(mContext).getResources(); - // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); } diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/SettingsShadowResources.java b/tests/robotests/src/com/android/settings/testutils/shadow/SettingsShadowResources.java index a68c5d38bac..bd21cdc3cb3 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/SettingsShadowResources.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/SettingsShadowResources.java @@ -30,18 +30,12 @@ import org.robolectric.android.XmlResourceParserImpl; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.annotation.RealObject; -import org.robolectric.res.StyleData; -import org.robolectric.res.StyleResolver; -import org.robolectric.res.ThemeStyleSet; import org.robolectric.shadows.ShadowAssetManager; import org.robolectric.shadows.ShadowResources; import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers.ClassParameter; import org.w3c.dom.Node; -import java.util.List; -import java.util.Map; - /** * Shadow Resources and Theme classes to handle resource references that Robolectric shadows cannot * handle because they are too new or private. @@ -207,46 +201,10 @@ public class SettingsShadowResources extends ShadowResources { if (attributeValue.contains("attr/fingerprint_layout_theme")) { // Workaround for https://github.com/robolectric/robolectric/issues/2641 node.setNodeValue("@style/FingerprintLayoutTheme"); - } else if (attributeValue.startsWith("@*android:string")) { - node.setNodeValue("PLACEHOLDER"); - } else if (attributeValue.startsWith("@*android:dimen")) { - node.setNodeValue("321dp"); - } else if (attributeValue.startsWith("@*android:drawable")) { - node.setNodeValue(""); } } } } - - // Track down all styles and remove all inheritance from private styles. - final Map appliedStylesList = - ReflectionHelpers.getField(mAssetManager, "nativeThemes"); - synchronized (appliedStylesList) { - for (Long idx : appliedStylesList.keySet()) { - final ThemeStyleSet appliedStyles = ReflectionHelpers.getField( - appliedStylesList.get(idx), "themeStyleSet"); - // The Object's below are actually ShadowAssetManager.OverlayedStyle. - // We can't use - - // it here because it's private. - final List overlayedStyles = - ReflectionHelpers.getField(appliedStyles, "styles"); - for (Object appliedStyle : overlayedStyles) { - final StyleResolver styleResolver = ReflectionHelpers.getField(appliedStyle, - "style"); - final List styleDatas = - ReflectionHelpers.getField(styleResolver, "styles"); - for (StyleData styleData : styleDatas) { - if (styleData.getParent() != null && - styleData.getParent().startsWith("@*android:style")) { - ReflectionHelpers.setField(StyleData.class, styleData, "parent", - null); - } - } - } - - } - } return super.obtainStyledAttributes(set, attrs, defStyleAttr, defStyleRes); } diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowKeyValueListParser.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowKeyValueListParser.java deleted file mode 100644 index 5dce99096c3..00000000000 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowKeyValueListParser.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.testutils.shadow; - -import android.util.KeyValueListParser; - -import org.robolectric.annotation.Implementation; -import org.robolectric.annotation.Implements; - -/** - * Shadow for {@link KeyValueListParser} so we could implement - * {@link #getBoolean(String, boolean)} that doesn't support in the current - * robolectric - */ -@Implements(KeyValueListParser.class) -public class ShadowKeyValueListParser { - - @Implementation - public boolean getBoolean(String key, boolean defaultValue) { - return defaultValue; - } -} diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSliceTest.java index dda5d8fc8f9..5a2f546236d 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiSliceTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiSliceTest.java @@ -19,13 +19,10 @@ package com.android.settings.wifi; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import android.net.wifi.WifiManager; import androidx.core.graphics.drawable.IconCompat; @@ -58,11 +55,6 @@ public class WifiSliceTest { public void setUp() { mContext = spy(RuntimeEnvironment.application); - // Prevent crash in SliceMetadata. - Resources resources = spy(mContext.getResources()); - doReturn(60).when(resources).getDimensionPixelSize(anyInt()); - doReturn(resources).when(mContext).getResources(); - // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java index 7e8771188c7..c5c4b672ca5 100644 --- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java +++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java @@ -23,7 +23,6 @@ import static android.app.slice.SliceItem.FORMAT_TEXT; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; @@ -33,7 +32,6 @@ import static org.mockito.Mockito.when; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import android.telephony.CarrierConfigManager; import androidx.slice.Slice; @@ -104,11 +102,6 @@ public class WifiCallingSliceHelperTest { when(mSlicesFeatureProvider.getCustomSliceManager(any(Context.class))) .thenReturn(manager); - // Prevent crash in SliceMetadata. - Resources resources = spy(mContext.getResources()); - doReturn(60).when(resources).getDimensionPixelSize(anyInt()); - doReturn(resources).when(mContext).getResources(); - mWfcSliceHelper = new FakeWifiCallingSliceHelper(mContext); // Set-up specs for SliceMetadata.