From 04f1e38dc3af5b79849be07f31235ad8c1b20574 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Tue, 12 Jun 2018 12:06:17 -0700 Subject: [PATCH 01/11] Hide quicksetting tile for dev options when it's turned off Merged-In: I3e11700a59c8a88bb586c77a876963b5e6a62c89 Change-Id: I3e11700a59c8a88bb586c77a876963b5e6a62c89 Fixes: 78652607 Bug: 117770924 Test: robotests --- .../DevelopmentSettingsEnabler.java | 13 +++++++ .../settings/qstile/DevelopmentTiles.java | 39 ++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/development/DevelopmentSettingsEnabler.java b/src/com/android/settings/development/DevelopmentSettingsEnabler.java index ed750e41b4e..297a21da558 100644 --- a/src/com/android/settings/development/DevelopmentSettingsEnabler.java +++ b/src/com/android/settings/development/DevelopmentSettingsEnabler.java @@ -18,6 +18,8 @@ package com.android.settings.development; import android.content.Context; import android.content.SharedPreferences; +import android.os.Build; +import android.os.UserManager; import android.provider.Settings; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -53,6 +55,17 @@ public class DevelopmentSettingsEnabler implements LifecycleObserver, OnResume { Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1); } + public static boolean isDevelopmentSettingsEnabled(Context context) { + final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE); + final boolean settingEnabled = Settings.Global.getInt(context.getContentResolver(), + Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, + Build.TYPE.equals("eng") ? 1 : 0) != 0; + final boolean hasRestriction = um.hasUserRestriction( + UserManager.DISALLOW_DEBUGGING_FEATURES); + final boolean isAdminOrDemo = um.isAdminUser() || um.isDemoUser(); + return isAdminOrDemo && !hasRestriction && settingEnabled; + } + private void updateEnabledState() { mLastEnabledState = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; diff --git a/src/com/android/settings/qstile/DevelopmentTiles.java b/src/com/android/settings/qstile/DevelopmentTiles.java index ad60827c221..2c822837046 100644 --- a/src/com/android/settings/qstile/DevelopmentTiles.java +++ b/src/com/android/settings/qstile/DevelopmentTiles.java @@ -16,20 +16,29 @@ package com.android.settings.qstile; +import android.content.ComponentName; +import android.content.Context; +import android.content.pm.PackageManager; import android.os.RemoteException; +import android.os.ServiceManager; import android.os.SystemProperties; import android.provider.Settings; import android.service.quicksettings.Tile; import android.service.quicksettings.TileService; +import android.util.EventLog; +import android.util.Log; import android.view.IWindowManager; import android.view.ThreadedRenderer; import android.view.View; import android.view.WindowManagerGlobal; import com.android.internal.app.LocalePicker; +import com.android.internal.statusbar.IStatusBarService; +import com.android.settings.development.DevelopmentSettingsEnabler; import com.android.settings.development.DevelopmentSettings; public abstract class DevelopmentTiles extends TileService { + private static final String TAG = "DevelopmentTiles"; protected abstract boolean isEnabled(); @@ -42,7 +51,33 @@ public abstract class DevelopmentTiles extends TileService { } public void refresh() { - getQsTile().setState(isEnabled() ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE); + final int state; + if (!DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(this)) { + // Reset to disabled state if dev option is off. + if (isEnabled()) { + setIsEnabled(false); + new DevelopmentSettings.SystemPropPoker().execute(); + } + final ComponentName cn = new ComponentName(getPackageName(), getClass().getName()); + try { + getPackageManager().setComponentEnabledSetting( + cn, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + final IStatusBarService statusBarService = IStatusBarService.Stub.asInterface( + ServiceManager.checkService(Context.STATUS_BAR_SERVICE)); + if (statusBarService != null) { + EventLog.writeEvent(0x534e4554, "117770924"); // SaftyNet + statusBarService.remTile(cn); + } + } catch (RemoteException e) { + Log.e(TAG, "Failed to modify QS tile for component " + + cn.toString(), e); + } + state = Tile.STATE_UNAVAILABLE; + } else { + state = isEnabled() ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE; + } + getQsTile().setState(state); getQsTile().updateTile(); } @@ -131,4 +166,4 @@ public abstract class DevelopmentTiles extends TileService { } catch (RemoteException e) { } } } -} \ No newline at end of file +} From 73469d9de1432bee6c5ac03277e58c70c5130e3a Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Tue, 12 Jun 2018 12:06:17 -0700 Subject: [PATCH 02/11] Hide quicksetting tile for dev options when it's turned off Merged-In: I3e11700a59c8a88bb586c77a876963b5e6a62c89 Change-Id: I3e11700a59c8a88bb586c77a876963b5e6a62c89 Fixes: 78652607 Bug: 117770924 Test: robotests --- .../DevelopmentSettingsEnabler.java | 13 +++++++ .../settings/qstile/DevelopmentTiles.java | 39 ++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/development/DevelopmentSettingsEnabler.java b/src/com/android/settings/development/DevelopmentSettingsEnabler.java index e97997e7910..2b4b28762b4 100644 --- a/src/com/android/settings/development/DevelopmentSettingsEnabler.java +++ b/src/com/android/settings/development/DevelopmentSettingsEnabler.java @@ -18,6 +18,8 @@ package com.android.settings.development; import android.content.Context; import android.content.SharedPreferences; +import android.os.Build; +import android.os.UserManager; import android.provider.Settings; import com.android.settings.core.lifecycle.Lifecycle; @@ -53,6 +55,17 @@ public class DevelopmentSettingsEnabler implements LifecycleObserver, OnResume { Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1); } + public static boolean isDevelopmentSettingsEnabled(Context context) { + final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE); + final boolean settingEnabled = Settings.Global.getInt(context.getContentResolver(), + Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, + Build.TYPE.equals("eng") ? 1 : 0) != 0; + final boolean hasRestriction = um.hasUserRestriction( + UserManager.DISALLOW_DEBUGGING_FEATURES); + final boolean isAdminOrDemo = um.isAdminUser() || um.isDemoUser(); + return isAdminOrDemo && !hasRestriction && settingEnabled; + } + public boolean getLastEnabledState() { return mLastEnabledState; } diff --git a/src/com/android/settings/qstile/DevelopmentTiles.java b/src/com/android/settings/qstile/DevelopmentTiles.java index ad60827c221..2c822837046 100644 --- a/src/com/android/settings/qstile/DevelopmentTiles.java +++ b/src/com/android/settings/qstile/DevelopmentTiles.java @@ -16,20 +16,29 @@ package com.android.settings.qstile; +import android.content.ComponentName; +import android.content.Context; +import android.content.pm.PackageManager; import android.os.RemoteException; +import android.os.ServiceManager; import android.os.SystemProperties; import android.provider.Settings; import android.service.quicksettings.Tile; import android.service.quicksettings.TileService; +import android.util.EventLog; +import android.util.Log; import android.view.IWindowManager; import android.view.ThreadedRenderer; import android.view.View; import android.view.WindowManagerGlobal; import com.android.internal.app.LocalePicker; +import com.android.internal.statusbar.IStatusBarService; +import com.android.settings.development.DevelopmentSettingsEnabler; import com.android.settings.development.DevelopmentSettings; public abstract class DevelopmentTiles extends TileService { + private static final String TAG = "DevelopmentTiles"; protected abstract boolean isEnabled(); @@ -42,7 +51,33 @@ public abstract class DevelopmentTiles extends TileService { } public void refresh() { - getQsTile().setState(isEnabled() ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE); + final int state; + if (!DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(this)) { + // Reset to disabled state if dev option is off. + if (isEnabled()) { + setIsEnabled(false); + new DevelopmentSettings.SystemPropPoker().execute(); + } + final ComponentName cn = new ComponentName(getPackageName(), getClass().getName()); + try { + getPackageManager().setComponentEnabledSetting( + cn, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + final IStatusBarService statusBarService = IStatusBarService.Stub.asInterface( + ServiceManager.checkService(Context.STATUS_BAR_SERVICE)); + if (statusBarService != null) { + EventLog.writeEvent(0x534e4554, "117770924"); // SaftyNet + statusBarService.remTile(cn); + } + } catch (RemoteException e) { + Log.e(TAG, "Failed to modify QS tile for component " + + cn.toString(), e); + } + state = Tile.STATE_UNAVAILABLE; + } else { + state = isEnabled() ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE; + } + getQsTile().setState(state); getQsTile().updateTile(); } @@ -131,4 +166,4 @@ public abstract class DevelopmentTiles extends TileService { } catch (RemoteException e) { } } } -} \ No newline at end of file +} From 4220b1e50ccec65cb47007155e0df7672a94a68d Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Tue, 12 Jun 2018 12:06:17 -0700 Subject: [PATCH 03/11] Hide quicksetting tile for dev options when it's turned off Merged-In: I3e11700a59c8a88bb586c77a876963b5e6a62c89 Change-Id: I3e11700a59c8a88bb586c77a876963b5e6a62c89 Fixes: 78652607 Bug: 117770924 Test: robotests --- .../development/qstile/DevelopmentTiles.java | 35 ++++++++- .../qstile/DevelopmentTilesTest.java | 71 +++++++++++++++++++ 2 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilesTest.java diff --git a/src/com/android/settings/development/qstile/DevelopmentTiles.java b/src/com/android/settings/development/qstile/DevelopmentTiles.java index c28a0504ee2..a46dd7caf37 100644 --- a/src/com/android/settings/development/qstile/DevelopmentTiles.java +++ b/src/com/android/settings/development/qstile/DevelopmentTiles.java @@ -16,7 +16,9 @@ package com.android.settings.development.qstile; +import android.content.ComponentName; import android.content.Context; +import android.content.pm.PackageManager; import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException; @@ -26,6 +28,7 @@ import android.provider.Settings; import android.service.quicksettings.Tile; import android.service.quicksettings.TileService; import android.support.annotation.VisibleForTesting; +import android.util.EventLog; import android.util.Log; import android.view.IWindowManager; import android.view.ThreadedRenderer; @@ -34,6 +37,8 @@ import android.view.WindowManagerGlobal; import android.widget.Toast; import com.android.internal.app.LocalePicker; +import com.android.internal.statusbar.IStatusBarService; +import com.android.settingslib.development.DevelopmentSettingsEnabler; import com.android.settingslib.development.SystemPropPoker; public abstract class DevelopmentTiles extends TileService { @@ -50,7 +55,33 @@ public abstract class DevelopmentTiles extends TileService { } public void refresh() { - getQsTile().setState(isEnabled() ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE); + final int state; + if (!DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(this)) { + // Reset to disabled state if dev option is off. + if (isEnabled()) { + setIsEnabled(false); + SystemPropPoker.getInstance().poke(); + } + final ComponentName cn = new ComponentName(getPackageName(), getClass().getName()); + try { + getPackageManager().setComponentEnabledSetting( + cn, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + final IStatusBarService statusBarService = IStatusBarService.Stub.asInterface( + ServiceManager.checkService(Context.STATUS_BAR_SERVICE)); + if (statusBarService != null) { + EventLog.writeEvent(0x534e4554, "117770924"); // SaftyNet + statusBarService.remTile(cn); + } + } catch (RemoteException e) { + Log.e(TAG, "Failed to modify QS tile for component " + + cn.toString(), e); + } + state = Tile.STATE_UNAVAILABLE; + } else { + state = isEnabled() ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE; + } + getQsTile().setState(state); getQsTile().updateTile(); } @@ -241,4 +272,4 @@ public abstract class DevelopmentTiles extends TileService { } } } -} \ No newline at end of file +} diff --git a/tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilesTest.java b/tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilesTest.java new file mode 100644 index 00000000000..8367fd3980e --- /dev/null +++ b/tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilesTest.java @@ -0,0 +1,71 @@ +/* + * 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.development.qstile; + +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; + +import android.content.ComponentName; +import android.content.pm.PackageManager; +import android.service.quicksettings.Tile; + +import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settingslib.development.DevelopmentSettingsEnabler; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.Robolectric; + +@RunWith(SettingsRobolectricTestRunner.class) +public class DevelopmentTilesTest { + + @Mock + private Tile mTile; + @Mock + private PackageManager mPackageManager; + + private DevelopmentTiles mService; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mService = spy(Robolectric.setupService(DevelopmentTiles.ShowLayout.class)); + doReturn(mTile).when(mService).getQsTile(); + } + + @Test + public void refresh_devOptionIsDisabled_shouldResetTileValue() { + final ComponentName cn = new ComponentName( + mService.getPackageName(), mService.getClass().getName()); + doReturn(mPackageManager).when(mService).getPackageManager(); + + DevelopmentSettingsEnabler.setDevelopmentSettingsEnabled(mService, false); + mService.setIsEnabled(true); + + mService.refresh(); + + verify(mPackageManager).setComponentEnabledSetting(cn, + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + assertThat(mService.isEnabled()).isFalse(); + } +} From 012b089a9100a3dcbf424d38b0d2d9fa2fe5b2cb Mon Sep 17 00:00:00 2001 From: tmfang Date: Tue, 20 Nov 2018 11:48:00 +0800 Subject: [PATCH 04/11] Allow below divider for all EntityHeader - Create an method in LayoutPreference let other class can set divider status. - EntityHeaderController will allow to have a below divider by default. Test: visual, robotest Bug: 116346008 Change-Id: Ic041b8fef8d22ce1b7ea48eedfbe97c708c41ce7 --- .../settings/applications/LayoutPreference.java | 12 ++++++++---- .../settings/widget/EntityHeaderController.java | 1 + .../settings/applications/LayoutPreferenceTest.java | 7 +++++++ .../settings/widget/EntityHeaderControllerTest.java | 3 ++- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/applications/LayoutPreference.java b/src/com/android/settings/applications/LayoutPreference.java index cc077cc7539..9c3cfaf1f8d 100644 --- a/src/com/android/settings/applications/LayoutPreference.java +++ b/src/com/android/settings/applications/LayoutPreference.java @@ -24,7 +24,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; -import androidx.annotation.VisibleForTesting; import androidx.core.content.res.TypedArrayUtils; import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; @@ -37,9 +36,7 @@ public class LayoutPreference extends Preference { private final View.OnClickListener mClickListener = v -> performClick(v); private boolean mAllowDividerAbove; private boolean mAllowDividerBelow; - - @VisibleForTesting - View mRootView; + private View mRootView; public LayoutPreference(Context context, AttributeSet attrs) { super(context, attrs); @@ -116,4 +113,11 @@ public class LayoutPreference extends Preference { return mRootView.findViewById(id); } + public void setAllowDividerBelow(boolean allowed) { + mAllowDividerBelow = allowed; + } + + public boolean isAllowDividerBelow() { + return mAllowDividerBelow; + } } \ No newline at end of file diff --git a/src/com/android/settings/widget/EntityHeaderController.java b/src/com/android/settings/widget/EntityHeaderController.java index 5e8381931b7..853313fd32b 100644 --- a/src/com/android/settings/widget/EntityHeaderController.java +++ b/src/com/android/settings/widget/EntityHeaderController.java @@ -238,6 +238,7 @@ public class EntityHeaderController { pref.setOrder(-1000); pref.setSelectable(false); pref.setKey(PREF_KEY_APP_HEADER); + pref.setAllowDividerBelow(true); return pref; } diff --git a/tests/robotests/src/com/android/settings/applications/LayoutPreferenceTest.java b/tests/robotests/src/com/android/settings/applications/LayoutPreferenceTest.java index 1d2bb3a0b88..899d4cb650f 100644 --- a/tests/robotests/src/com/android/settings/applications/LayoutPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/applications/LayoutPreferenceTest.java @@ -83,4 +83,11 @@ public class LayoutPreferenceTest { assertThat(mPreference.findViewById(R.id.button1).isEnabled()).isFalse(); assertThat(mPreference.findViewById(R.id.button2).isEnabled()).isTrue(); } + + @Test + public void allowDividerBelow_shouldSaveCorrectDividerStatus() { + mPreference.setAllowDividerBelow(true); + + assertThat(mPreference.isAllowDividerBelow()).isTrue(); + } } diff --git a/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java b/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java index cc9bee099c2..5d608106272 100644 --- a/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java +++ b/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java @@ -96,11 +96,12 @@ public class EntityHeaderControllerTest { } @Test - public void testBuildView_withContext_shouldBuildPreference() { + public void testBuildView_withContext_shouldBuildPreferenceAllowedBelowDivider() { mController = EntityHeaderController.newInstance(mActivity, mFragment, null); Preference preference = mController.done(mActivity, mShadowContext); assertThat(preference instanceof LayoutPreference).isTrue(); + assertThat(((LayoutPreference)preference).isAllowDividerBelow()).isTrue(); } @Test From cc2cf5ba5a8ffa1eb95b71534f256046e429f9ea Mon Sep 17 00:00:00 2001 From: Maurice Lam Date: Tue, 20 Nov 2018 15:01:22 -0800 Subject: [PATCH 05/11] Remove ShadowLibcoreTimeZoneNames Bug: 119829838 Test: atest RunSettingsRoboTests Change-Id: I756265945dcf7c3b7a78a627c4dc32cff3c8e55c --- .../shadow/ShadowLibcoreTimeZoneNames.java | 60 ------------------- 1 file changed, 60 deletions(-) delete mode 100644 tests/robotests/src/com/android/settings/testutils/shadow/ShadowLibcoreTimeZoneNames.java diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowLibcoreTimeZoneNames.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowLibcoreTimeZoneNames.java deleted file mode 100644 index 7292234a8bc..00000000000 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowLibcoreTimeZoneNames.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2016 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 libcore.icu.TimeZoneNames; - -import org.robolectric.annotation.Implementation; -import org.robolectric.annotation.Implements; -import org.robolectric.annotation.RealObject; -import org.robolectric.util.ReflectionHelpers; - -import java.util.Locale; -import java.util.TimeZone; - -/** - * System.logI used by ZoneStringsCache.create is a method new in API 24 and not available in - * Robolectric's 6.0 jar. Create a shadow which removes that log call. - */ -@Implements(value = TimeZoneNames.class, isInAndroidSdk = false) -public class ShadowLibcoreTimeZoneNames { - - private static final String[] availableTimeZoneIds = TimeZone.getAvailableIDs(); - - @Implements(value = TimeZoneNames.ZoneStringsCache.class, isInAndroidSdk = false) - public static class ShadowZoneStringsCache { - - @RealObject - private TimeZoneNames.ZoneStringsCache mRealObject; - - @Implementation - public String[][] create(Locale locale) { - // Set up the 2D array used to hold the names. The first column contains the Olson ids. - String[][] result = new String[availableTimeZoneIds.length][5]; - for (int i = 0; i < availableTimeZoneIds.length; ++i) { - result[i][0] = availableTimeZoneIds[i]; - } - - ReflectionHelpers.callInstanceMethod(TimeZoneNames.class, - mRealObject, "fillZoneStrings", - ReflectionHelpers.ClassParameter.from(String.class, locale.toLanguageTag()), - ReflectionHelpers.ClassParameter.from(String[][].class, result)); - - return result; - } - } -} From 3a55de44c5b4a60afbe4eee9ea30acd81adf9ba1 Mon Sep 17 00:00:00 2001 From: James Lemieux Date: Tue, 20 Nov 2018 14:26:31 -0800 Subject: [PATCH 06/11] Prepare tests for impending robolectric merge Some ShadowUserManager function moved into the basic shadow in robolectric proper and has been removed from the Settings ShadowUserManager. Test: make -j56 RunSettingsRoboTests Change-Id: I38647dae5d16bc79bc7925ca139c9362a2035393 --- .../AccountDetailDashboardFragment.java | 3 +- .../imei/ImeiInfoDialogController.java | 2 +- .../deviceinfo/DeviceInfoSlice.java | 2 +- ...ityHearingAidPreferenceControllerTest.java | 8 ++--- .../AccountDetailDashboardFragmentTest.java | 22 ++++++------ .../accounts/AvatarViewMixinTest.java | 6 ++-- .../AppMemoryPreferenceControllerTest.java | 1 - .../FingerprintSuggestionActivityTest.java | 9 ----- ...etupFingerprintEnrollIntroductionTest.java | 10 ------ ...ilableMediaBluetoothDeviceUpdaterTest.java | 31 ++++++++-------- ...hDeviceRenamePreferenceControllerTest.java | 8 ++--- .../ConnectedBluetoothDeviceUpdaterTest.java | 29 ++++++++------- ...AdvancedConnectedDeviceControllerTest.java | 6 ++-- ...ailableMediaDeviceGroupControllerTest.java | 13 +++---- .../DashboardFeatureProviderImplTest.java | 6 ++++ ...brsDataSwitchPreferenceControllerTest.java | 2 -- ...velopmentTilePreferenceControllerTest.java | 2 ++ ...ActionDisabledByAdminDialogHelperTest.java | 1 + .../AnomalyCleanupJobServiceTest.java | 11 +++--- .../AnomalyConfigJobServiceTest.java | 7 ++-- .../AnomalyDetectionJobServiceTest.java | 19 +++++----- ...Enhanced4gLtePreferenceControllerTest.java | 2 +- ...oOutputSwitchPreferenceControllerTest.java | 6 ++-- ...ProfileOutputPreferenceControllerTest.java | 31 ++++++++-------- .../MediaOutputPreferenceControllerTest.java | 35 +++++++++---------- .../shadow/ShadowAccountManager.java | 2 +- .../testutils/shadow/ShadowAudioManager.java | 5 --- .../testutils/shadow/ShadowUserManager.java | 22 ------------ ...serWhenLockedPreferenceControllerTest.java | 7 +--- .../users/EditUserInfoControllerTest.java | 10 ------ ...dAccessPointsPreferenceControllerTest.java | 5 +-- 31 files changed, 125 insertions(+), 198 deletions(-) diff --git a/src/com/android/settings/accounts/AccountDetailDashboardFragment.java b/src/com/android/settings/accounts/AccountDetailDashboardFragment.java index 78a8614c01f..e13d3ebbee6 100644 --- a/src/com/android/settings/accounts/AccountDetailDashboardFragment.java +++ b/src/com/android/settings/accounts/AccountDetailDashboardFragment.java @@ -94,8 +94,7 @@ public class AccountDetailDashboardFragment extends DashboardFragment { void finishIfAccountMissing() { final Context context = getContext(); final UserManager um = context.getSystemService(UserManager.class); - final AccountManager accountManager = (AccountManager) context.getSystemService( - AccountManager.class); + final AccountManager accountManager = context.getSystemService(AccountManager.class); for (UserHandle userHandle : um.getUserProfiles()) { for (Account account : accountManager.getAccountsAsUser(userHandle.getIdentifier())) { if (account.equals(mAccount)) { diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java index 577b478dc91..358484925f4 100644 --- a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java +++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java @@ -128,7 +128,7 @@ public class ImeiInfoDialogController { private SubscriptionInfo getSubscriptionInfo(Context context, int slotId) { final List subscriptionInfoList = SubscriptionManager.from(context) .getActiveSubscriptionInfoList(); - if (subscriptionInfoList == null) { + if (subscriptionInfoList == null || subscriptionInfoList.isEmpty()) { return null; } diff --git a/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java b/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java index d6fdfd57740..b8751f8e827 100644 --- a/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java +++ b/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java @@ -131,7 +131,7 @@ public class DeviceInfoSlice implements CustomSliceable { SubscriptionInfo getFirstSubscriptionInfo() { final List subscriptionInfoList = mSubscriptionManager.getActiveSubscriptionInfoList(); - if (subscriptionInfoList == null) { + if (subscriptionInfoList == null || subscriptionInfoList.isEmpty()) { return null; } return subscriptionInfoList.get(0); diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidPreferenceControllerTest.java index 06fd1fcbea6..02092670b6c 100644 --- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityHearingAidPreferenceControllerTest.java @@ -166,11 +166,11 @@ public class AccessibilityHearingAidPreferenceControllerTest { mPreferenceController.setPreference(mHearingAidPreference); //not call registerReceiver() mPreferenceController.onResume(); - verify(mContext, never()).registerReceiver((BroadcastReceiver) any(), (IntentFilter) any()); + verify(mContext, never()).registerReceiver(any(), any()); //not call unregisterReceiver() mPreferenceController.onPause(); - verify(mContext, never()).unregisterReceiver((BroadcastReceiver) any()); + verify(mContext, never()).unregisterReceiver(any()); } private void setupBluetoothEnvironment() { @@ -185,9 +185,9 @@ public class AccessibilityHearingAidPreferenceControllerTest { private void setupHearingAidEnvironment() { mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); - mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter()); + mShadowBluetoothAdapter = Shadow.extract(mBluetoothAdapter); mBluetoothDevice = mBluetoothAdapter.getRemoteDevice(TEST_DEVICE_ADDRESS); - mShadowBluetoothAdapter.enable(); + mBluetoothAdapter.enable(); mShadowBluetoothAdapter.addSupportedProfiles(BluetoothProfile.HEARING_AID); when(mCachedDeviceManager.findDevice(mBluetoothDevice)).thenReturn(mCachedBluetoothDevice); when(mCachedBluetoothDevice.getName()).thenReturn(TEST_DEVICE_NAME); diff --git a/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java index 26489165d88..f18496c03b5 100644 --- a/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accounts/AccountDetailDashboardFragmentTest.java @@ -166,11 +166,11 @@ public class AccountDetailDashboardFragmentTest { public void onResume_accountMissing_shouldFinish() { ShadowUserManager userManager = Shadow.extract( mContext.getSystemService(UserManager.class)); - ShadowAccountManager acctMgr = Shadow.extract( + ShadowAccountManager accountManager = Shadow.extract( mContext.getSystemService(AccountManager.class)); - userManager.addProfile(new UserInfo(1, null, 0)); - acctMgr.addAccountForUser(1, new Account("test@test.com", "com.test")); + userManager.addUserProfile(new UserHandle(1)); + accountManager.addAccountForUser(1, new Account("test@test.com", "com.test")); mFragment.finishIfAccountMissing(); verify(mFragment).finish(); @@ -180,11 +180,11 @@ public class AccountDetailDashboardFragmentTest { public void onResume_accountPresentOneProfile_shouldNotFinish() { ShadowUserManager userManager = Shadow.extract( mContext.getSystemService(UserManager.class)); - ShadowAccountManager acctMgr = Shadow.extract( + ShadowAccountManager accountManager = Shadow.extract( mContext.getSystemService(AccountManager.class)); - userManager.addProfile(new UserInfo(1, null, 0)); - acctMgr.addAccountForUser(1, mFragment.mAccount); + userManager.addUserProfile(new UserHandle(1)); + accountManager.addAccountForUser(1, mFragment.mAccount); mFragment.finishIfAccountMissing(); verify(mFragment, never()).finish(); @@ -194,13 +194,13 @@ public class AccountDetailDashboardFragmentTest { public void onResume_accountPresentTwoProfiles_shouldNotFinish() { ShadowUserManager userManager = Shadow.extract( mContext.getSystemService(UserManager.class)); - ShadowAccountManager acctMgr = Shadow.extract( + ShadowAccountManager accountManager = Shadow.extract( mContext.getSystemService(AccountManager.class)); - userManager.addProfile(new UserInfo(1, null, 0)); - userManager.addProfile(new UserInfo(2, null, 0)); - acctMgr.addAccountForUser(1, new Account("test@test.com", "com.test")); - acctMgr.addAccountForUser(2, mFragment.mAccount); + userManager.addUserProfile(new UserHandle(1)); + userManager.addUserProfile(new UserHandle(2)); + accountManager.addAccountForUser(1, new Account("test@test.com", "com.test")); + accountManager.addAccountForUser(2, mFragment.mAccount); mFragment.finishIfAccountMissing(); verify(mFragment, never()).finish(); diff --git a/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java b/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java index e074440dc74..3bbf3714aff 100644 --- a/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java +++ b/tests/robotests/src/com/android/settings/accounts/AvatarViewMixinTest.java @@ -141,8 +141,7 @@ public class AvatarViewMixinTest { @Test public void callWithGetAccountAvatarMethod_useDummyData_shouldReturnAccountNameAndAvatar() { - final ShadowContentResolver shadowContentResolver = Shadow.extract( - mContext.getContentResolver()); + final ContentResolver contentResolver = mContext.getContentResolver(); final Uri uri = new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT).authority( DUMMY_AUTHORITY).build(); final ContentProvider mockContentProvider = mock(ContentProvider.class); @@ -156,8 +155,7 @@ public class AvatarViewMixinTest { doReturn(bundle).when(mockContentProvider).call(anyString(), anyString(), any(Bundle.class)); - final Bundle expectBundle = shadowContentResolver.call(uri, METHOD_GET_ACCOUNT_AVATAR, - null /* arg */, null /* extras */); + contentResolver.call(uri, METHOD_GET_ACCOUNT_AVATAR, null /* arg */, null /* extras */); final Object object = bundle.getParcelable("account_avatar"); assertThat(object instanceof Bitmap).isTrue(); diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppMemoryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppMemoryPreferenceControllerTest.java index ed77bd96030..8fbc27cf3df 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppMemoryPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppMemoryPreferenceControllerTest.java @@ -37,7 +37,6 @@ import com.android.settings.core.BasePreferenceController; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowUserManager; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java index 393d86ee675..b4823c04ea8 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java @@ -23,7 +23,6 @@ import static org.robolectric.RuntimeEnvironment.application; import android.app.Activity; import android.app.KeyguardManager; import android.content.Intent; -import android.content.pm.UserInfo; import android.view.View; import android.widget.Button; @@ -36,8 +35,6 @@ import com.android.settings.testutils.shadow.ShadowUserManager; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.Shadows; import org.robolectric.android.controller.ActivityController; @@ -49,20 +46,14 @@ import org.robolectric.shadows.ShadowKeyguardManager; @Config(shadows = {ShadowLockPatternUtils.class, ShadowUserManager.class}) public class FingerprintSuggestionActivityTest { - @Mock - private UserInfo mUserInfo; - private ActivityController mController; @Before public void setUp() { - MockitoAnnotations.initMocks(this); FakeFeatureFactory.setupForTest(); final Intent intent = new Intent(); mController = Robolectric.buildActivity(FingerprintSuggestionActivity.class, intent); - - ShadowUserManager.getShadow().setUserInfo(0, mUserInfo); } @Test diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java index aed1ea949fd..a06c48d4973 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java @@ -23,7 +23,6 @@ import static org.robolectric.RuntimeEnvironment.application; import android.app.KeyguardManager; import android.content.Intent; import android.content.pm.PackageManager; -import android.content.pm.UserInfo; import android.view.View; import android.widget.Button; @@ -43,8 +42,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.Shadows; import org.robolectric.android.controller.ActivityController; @@ -62,15 +59,10 @@ import org.robolectric.shadows.ShadowKeyguardManager; }) public class SetupFingerprintEnrollIntroductionTest { - @Mock - private UserInfo mUserInfo; - private ActivityController mController; @Before public void setUp() { - MockitoAnnotations.initMocks(this); - Shadows.shadowOf(application.getPackageManager()) .setSystemFeature(PackageManager.FEATURE_FINGERPRINT, true); @@ -78,8 +70,6 @@ public class SetupFingerprintEnrollIntroductionTest { final Intent intent = new Intent(); mController = Robolectric.buildActivity(SetupFingerprintEnrollIntroduction.class, intent); - - ShadowUserManager.getShadow().setUserInfo(0, mUserInfo); } @After diff --git a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java index 0b7853c665e..06ce13f5f1f 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/AvailableMediaBluetoothDeviceUpdaterTest.java @@ -15,7 +15,7 @@ */ package com.android.settings.bluetooth; -import static org.mockito.Matchers.any; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; @@ -64,7 +64,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { private Context mContext; private AvailableMediaBluetoothDeviceUpdater mBluetoothDeviceUpdater; private Collection mCachedDevices; - private ShadowAudioManager mShadowAudioManager; + private AudioManager mAudioManager; private BluetoothDevicePreference mPreference; private ShadowBluetoothAdapter mShadowBluetoothAdapter; private ShadowCachedBluetoothDeviceManager mShadowCachedBluetoothDeviceManager; @@ -73,14 +73,13 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { public void setUp() { MockitoAnnotations.initMocks(this); - mShadowAudioManager = ShadowAudioManager.getShadow(); + mContext = RuntimeEnvironment.application; + mAudioManager = mContext.getSystemService(AudioManager.class); mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter()); mShadowBluetoothAdapter.setEnabled(true); - mContext = RuntimeEnvironment.application; mShadowCachedBluetoothDeviceManager = Shadow.extract( Utils.getLocalBtManager(mContext).getCachedDeviceManager()); - mCachedDevices = - new ArrayList(new ArrayList()); + mCachedDevices = new ArrayList<>(); mShadowCachedBluetoothDeviceManager.setCachedDevicesCopy(mCachedDevices); doReturn(mContext).when(mDashboardFragment).getContext(); @@ -96,7 +95,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { @Test public void onAudioModeChanged_hfpDeviceConnected_inCall_addPreference() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true); @@ -109,7 +108,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { @Test public void onAudioModeChanged_hfpDeviceConnected_notInCall_removePreference() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true); @@ -122,7 +121,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { @Test public void onAudioModeChanged_a2dpDeviceConnected_inCall_removePreference() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); @@ -135,7 +134,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { @Test public void onAudioModeChanged_a2dpDeviceConnected_notInCall_addPreference() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); @@ -148,7 +147,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_a2dpDeviceConnected_notInCall_addPreference() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); @@ -161,7 +160,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_a2dpDeviceConnected_inCall_removePreference() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); @@ -174,7 +173,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_hfpDeviceConnected_notInCall_removePreference() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true); @@ -187,7 +186,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_hfpDeviceConnected_inCall_addPreference() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true); @@ -201,7 +200,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_hearingAidDeviceConnected_notInCall_addPreference() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHearingAidDevice()).thenReturn(true); @@ -214,7 +213,7 @@ public class AvailableMediaBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_hearingAidDeviceConnected_inCall_addPreference() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHearingAidDevice()).thenReturn(true); diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceControllerTest.java index 9de46dd3c10..34b2d09716b 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDeviceRenamePreferenceControllerTest.java @@ -18,8 +18,8 @@ package com.android.settings.bluetooth; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -72,8 +72,8 @@ public class BluetoothDeviceRenamePreferenceControllerTest { mContext = spy(RuntimeEnvironment.application); mPreference = new Preference(mContext); mPreference.setKey(PREF_KEY); - mBluetoothAdapter = ShadowBluetoothAdapter.getDefaultAdapter(); - mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter()); + mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + mShadowBluetoothAdapter = Shadow.extract(mBluetoothAdapter); mController = spy(new BluetoothDeviceRenamePreferenceController(mContext, PREF_KEY)); mController.setFragment(mFragment); diff --git a/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java b/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java index f4364b79e9c..cbded4d9a8c 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/ConnectedBluetoothDeviceUpdaterTest.java @@ -66,7 +66,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { private Context mContext; private ConnectedBluetoothDeviceUpdater mBluetoothDeviceUpdater; private Collection mCachedDevices; - private ShadowAudioManager mShadowAudioManager; + private AudioManager mAudioManager; private ShadowBluetoothAdapter mShadowBluetoothAdapter; private ShadowCachedBluetoothDeviceManager mShadowCachedBluetoothDeviceManager; @@ -74,15 +74,14 @@ public class ConnectedBluetoothDeviceUpdaterTest { public void setUp() { MockitoAnnotations.initMocks(this); - mShadowAudioManager = ShadowAudioManager.getShadow(); + mContext = RuntimeEnvironment.application; + mAudioManager = mContext.getSystemService(AudioManager.class); mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter()); mShadowBluetoothAdapter.setEnabled(true); - mContext = RuntimeEnvironment.application; mShadowCachedBluetoothDeviceManager = Shadow.extract( Utils.getLocalBtManager(mContext).getCachedDeviceManager()); doReturn(mContext).when(mDashboardFragment).getContext(); - mCachedDevices = - new ArrayList(new ArrayList()); + mCachedDevices = new ArrayList<>(); when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); mShadowCachedBluetoothDeviceManager.setCachedDevicesCopy(mCachedDevices); @@ -95,7 +94,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { @Test public void onAudioModeChanged_hfpDeviceConnected_notInCall_addPreference() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true); @@ -108,7 +107,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { @Test public void onAudioModeChanged_hfpDeviceConnected_inCall_removePreference() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true); @@ -121,7 +120,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { @Test public void onAudioModeChanged_a2dpDeviceConnected_notInCall_removePreference() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); @@ -134,7 +133,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { @Test public void onAudioModeChanged_a2dpDeviceConnected_inCall_addPreference() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); @@ -147,7 +146,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_a2dpDeviceConnected_inCall_addPreference() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); @@ -160,7 +159,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_a2dpDeviceConnected_notInCall_removePreference() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedA2dpDevice()).thenReturn(true); @@ -173,7 +172,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_hfpDeviceConnected_inCall_removePreference() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true); @@ -186,7 +185,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_hfpDeviceConnected_notInCall_addPreference() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHfpDevice()).thenReturn(true); @@ -200,7 +199,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_hearingAidDeviceConnected_inCall_removePreference() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHearingAidDevice()).thenReturn(true); @@ -214,7 +213,7 @@ public class ConnectedBluetoothDeviceUpdaterTest { @Test public void onProfileConnectionStateChanged_hearingAidDeviceConnected_notInCall_removePreference () { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); when(mBluetoothDeviceUpdater. isDeviceConnected(any(CachedBluetoothDevice.class))).thenReturn(true); when(mCachedBluetoothDevice.isConnectedHearingAidDevice()).thenReturn(true); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceControllerTest.java index f0be229bb7b..7190874cb24 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceControllerTest.java @@ -23,6 +23,7 @@ import static org.mockito.Mockito.spy; import android.content.ContentResolver; import android.content.Context; +import android.nfc.NfcAdapter; import android.provider.Settings; import com.android.settings.R; @@ -60,7 +61,7 @@ public class AdvancedConnectedDeviceControllerTest { mContentResolver = mContext.getContentResolver(); mNfcController = new NfcPreferenceController(mContext, NfcPreferenceController.KEY_TOGGLE_NFC); - mShadowNfcAdapter = Shadows.shadowOf(ShadowNfcAdapter.getNfcAdapter(mContext)); + mShadowNfcAdapter = Shadows.shadowOf(NfcAdapter.getNfcAdapter(mContext)); } @Test @@ -68,8 +69,7 @@ public class AdvancedConnectedDeviceControllerTest { AdvancedConnectedDeviceController controller = new AdvancedConnectedDeviceController(mContext, KEY); - assertThat(controller.getAvailabilityStatus()).isEqualTo( - AVAILABLE); + assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE); } @Test diff --git a/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java index 7d99550ea37..dc2459b3304 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/AvailableMediaDeviceGroupControllerTest.java @@ -56,10 +56,7 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @RunWith(SettingsRobolectricTestRunner.class) -@Config(shadows = { - ShadowAudioManager.class, - ShadowBluetoothUtils.class} -) +@Config(shadows = {ShadowAudioManager.class, ShadowBluetoothUtils.class}) public class AvailableMediaDeviceGroupControllerTest { private static final String PREFERENCE_KEY_1 = "pref_key_1"; @@ -84,7 +81,7 @@ public class AvailableMediaDeviceGroupControllerTest { private Preference mPreference; private AvailableMediaDeviceGroupController mAvailableMediaDeviceGroupController; private LocalBluetoothManager mLocalBluetoothManager; - private ShadowAudioManager mShadowAudioManager; + private AudioManager mAudioManager; @Before public void setUp() { @@ -101,7 +98,7 @@ public class AvailableMediaDeviceGroupControllerTest { ShadowBluetoothUtils.sLocalBluetoothManager = mLocalManager; mLocalBluetoothManager = ShadowBluetoothUtils.getLocalBtManager(mContext); - mShadowAudioManager = ShadowAudioManager.getShadow(); + mAudioManager = mContext.getSystemService(AudioManager.class); doReturn(mEventManager).when(mLocalBluetoothManager).getEventManager(); mAvailableMediaDeviceGroupController = new AvailableMediaDeviceGroupController(mContext); @@ -184,7 +181,7 @@ public class AvailableMediaDeviceGroupControllerTest { @Test public void setTitle_inCallState_showCallStateTitle() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_CALL); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); mAvailableMediaDeviceGroupController.onAudioModeChanged(); assertThat(mPreferenceGroup.getTitle()).isEqualTo( @@ -193,7 +190,7 @@ public class AvailableMediaDeviceGroupControllerTest { @Test public void setTitle_notInCallState_showMediaStateTitle() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mAvailableMediaDeviceGroupController.onAudioModeChanged(); assertThat(mPreferenceGroup.getTitle()).isEqualTo( diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java index d083a386c35..3ada961244d 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java @@ -365,6 +365,8 @@ public class DashboardFeatureProviderImplTest { @Test public void openTileIntent_profileSelectionDialog_shouldShow() { + ShadowUserManager.getShadow().addUser(10, "Someone", 0); + final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final ArrayList handles = new ArrayList<>(); handles.add(new UserHandle(0)); @@ -379,6 +381,8 @@ public class DashboardFeatureProviderImplTest { @Test public void openTileIntent_profileSelectionDialog_explicitMetadataShouldShow() { + ShadowUserManager.getShadow().addUser(10, "Someone", 0); + mActivityInfo.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_ALL); final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final ArrayList handles = new ArrayList<>(); @@ -394,6 +398,8 @@ public class DashboardFeatureProviderImplTest { @Test public void openTileIntent_profileSelectionDialog_shouldNotShow() { + ShadowUserManager.getShadow().addUser(10, "Someone", 0); + mActivityInfo.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_PRIMARY); final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final ArrayList handles = new ArrayList<>(); diff --git a/tests/robotests/src/com/android/settings/development/CbrsDataSwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/CbrsDataSwitchPreferenceControllerTest.java index 0f2239079db..af929fd8769 100644 --- a/tests/robotests/src/com/android/settings/development/CbrsDataSwitchPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/CbrsDataSwitchPreferenceControllerTest.java @@ -16,7 +16,6 @@ package com.android.settings.development; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static com.google.common.truth.Truth.assertThat; @@ -34,7 +33,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; -import org.robolectric.Shadows; @RunWith(SettingsRobolectricTestRunner.class) public final class CbrsDataSwitchPreferenceControllerTest { diff --git a/tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilePreferenceControllerTest.java index a6ff08842bd..c3ef73bc820 100644 --- a/tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/qstile/DevelopmentTilePreferenceControllerTest.java @@ -41,6 +41,7 @@ import com.android.settings.R; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; @@ -82,6 +83,7 @@ public class DevelopmentTilePreferenceControllerTest { } @Test + @Ignore("b/119829673") public void display_hasTileService_shouldDisplay() { final Intent tileProbe = new Intent(TileService.ACTION_QS_TILE) .setPackage(mContext.getPackageName()); diff --git a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java index 0a661b4badd..8ab3b636d10 100644 --- a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java +++ b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java @@ -155,6 +155,7 @@ public class ActionDisabledByAdminDialogHelperTest { dpmShadow.setShortSupportMessageForUser(component, 123, "some message"); dpmShadow.setIsAdminActiveAsUser(true); userManagerShadow.addProfile(new UserInfo(123, null, 0)); + userManagerShadow.addUserProfile(new UserHandle(123)); ShadowProcess.setMyUid(Process.SYSTEM_UID); mHelper.setAdminSupportDetails(mActivity, view, admin); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java index f600d41352d..7bcfd369d04 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java @@ -19,8 +19,8 @@ package com.android.settings.fuelgauge.batterytip; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyBoolean; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; @@ -45,9 +45,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; -import org.robolectric.Shadows; import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowJobScheduler; import java.util.List; import java.util.concurrent.TimeUnit; @@ -85,9 +83,8 @@ public class AnomalyCleanupJobServiceTest { public void scheduleCleanUp() { AnomalyCleanupJobService.scheduleCleanUp(mContext); - ShadowJobScheduler shadowJobScheduler = - Shadows.shadowOf(mContext.getSystemService(JobScheduler.class)); - List pendingJobs = shadowJobScheduler.getAllPendingJobs(); + JobScheduler jobScheduler = mContext.getSystemService(JobScheduler.class); + List pendingJobs = jobScheduler.getAllPendingJobs(); assertEquals(1, pendingJobs.size()); JobInfo pendingJob = pendingJobs.get(0); assertThat(pendingJob.getId()).isEqualTo(R.integer.job_anomaly_clean_up); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobServiceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobServiceTest.java index 8e7590bbb2e..13be36616ac 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobServiceTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigJobServiceTest.java @@ -45,8 +45,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; -import org.robolectric.Shadows; -import org.robolectric.shadows.ShadowJobScheduler; import java.util.List; import java.util.concurrent.TimeUnit; @@ -82,9 +80,8 @@ public class AnomalyConfigJobServiceTest { public void testScheduleConfigUpdate() { AnomalyConfigJobService.scheduleConfigUpdate(mContext); - ShadowJobScheduler shadowJobScheduler = - Shadows.shadowOf(mContext.getSystemService(JobScheduler.class)); - List pendingJobs = shadowJobScheduler.getAllPendingJobs(); + JobScheduler jobScheduler = mContext.getSystemService(JobScheduler.class); + List pendingJobs = jobScheduler.getAllPendingJobs(); assertEquals(1, pendingJobs.size()); JobInfo pendingJob = pendingJobs.get(0); assertThat(pendingJob.getId()).isEqualTo(R.integer.job_anomaly_config_update); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java index 11b22ddc3e6..5f32c0b121b 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java @@ -22,12 +22,12 @@ import static android.os.StatsDimensionsValue.TUPLE_VALUE_TYPE; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyBoolean; -import static org.mockito.Matchers.anyInt; -import static org.mockito.Matchers.anyLong; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.eq; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; @@ -67,10 +67,8 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; -import org.robolectric.Shadows; import org.robolectric.android.controller.ServiceController; import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowJobScheduler; import java.util.ArrayList; import java.util.List; @@ -129,9 +127,8 @@ public class AnomalyDetectionJobServiceTest { public void scheduleCleanUp() { AnomalyDetectionJobService.scheduleAnomalyDetection(application, new Intent()); - ShadowJobScheduler shadowJobScheduler = - Shadows.shadowOf(application.getSystemService(JobScheduler.class)); - List pendingJobs = shadowJobScheduler.getAllPendingJobs(); + JobScheduler jobScheduler = application.getSystemService(JobScheduler.class); + List pendingJobs = jobScheduler.getAllPendingJobs(); assertThat(pendingJobs).hasSize(1); JobInfo pendingJob = pendingJobs.get(0); diff --git a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java index dee4c5ec6db..1d80da7c1ca 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java @@ -79,8 +79,8 @@ public class Enhanced4gLtePreferenceControllerTest { mPreference = new RestrictedSwitchPreference(mContext); mController = new Enhanced4gLtePreferenceController(mContext, "roaming"); - mController.mImsManager = mImsManager; mController.init(SUB_ID); + mController.mImsManager = mImsManager; mPreference.setKey(mController.getPreferenceKey()); } diff --git a/tests/robotests/src/com/android/settings/sound/AudioOutputSwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/sound/AudioOutputSwitchPreferenceControllerTest.java index 2ed1907f8e9..3ce21055372 100644 --- a/tests/robotests/src/com/android/settings/sound/AudioOutputSwitchPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/sound/AudioOutputSwitchPreferenceControllerTest.java @@ -38,6 +38,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.media.AudioManager; import android.util.FeatureFlagUtils; import androidx.preference.ListPreference; @@ -107,8 +108,8 @@ public class AudioOutputSwitchPreferenceControllerTest { private Context mContext; private PreferenceScreen mScreen; private ListPreference mPreference; + private AudioManager mAudioManager; private ShadowAudioManager mShadowAudioManager; - private ShadowMediaRouter mShadowMediaRouter; private BluetoothManager mBluetoothManager; private BluetoothAdapter mBluetoothAdapter; private BluetoothDevice mBluetoothDevice; @@ -126,8 +127,8 @@ public class AudioOutputSwitchPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); + mAudioManager = mContext.getSystemService(AudioManager.class); mShadowAudioManager = ShadowAudioManager.getShadow(); - mShadowMediaRouter = ShadowMediaRouter.getShadow(); ShadowBluetoothUtils.sLocalBluetoothManager = mLocalManager; mLocalBluetoothManager = ShadowBluetoothUtils.getLocalBtManager(mContext); @@ -168,7 +169,6 @@ public class AudioOutputSwitchPreferenceControllerTest { @After public void tearDown() { - mShadowAudioManager.reset(); ShadowBluetoothUtils.reset(); } diff --git a/tests/robotests/src/com/android/settings/sound/HandsFreeProfileOutputPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/sound/HandsFreeProfileOutputPreferenceControllerTest.java index e3014b7165d..5745efdd993 100644 --- a/tests/robotests/src/com/android/settings/sound/HandsFreeProfileOutputPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/sound/HandsFreeProfileOutputPreferenceControllerTest.java @@ -99,8 +99,8 @@ public class HandsFreeProfileOutputPreferenceControllerTest { private Context mContext; private PreferenceScreen mScreen; private ListPreference mPreference; + private AudioManager mAudioManager; private ShadowAudioManager mShadowAudioManager; - private ShadowMediaRouter mShadowMediaRouter; private BluetoothManager mBluetoothManager; private BluetoothAdapter mBluetoothAdapter; private BluetoothDevice mBluetoothDevice; @@ -117,8 +117,8 @@ public class HandsFreeProfileOutputPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); + mAudioManager = mContext.getSystemService(AudioManager.class); mShadowAudioManager = ShadowAudioManager.getShadow(); - mShadowMediaRouter = ShadowMediaRouter.getShadow(); ShadowBluetoothUtils.sLocalBluetoothManager = mLocalManager; mLocalBluetoothManager = ShadowBluetoothUtils.getLocalBtManager(mContext); @@ -163,7 +163,6 @@ public class HandsFreeProfileOutputPreferenceControllerTest { @After public void tearDown() { - mShadowAudioManager.reset(); ShadowBluetoothUtils.reset(); } @@ -173,7 +172,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void setActiveBluetoothDevice_btDeviceWithHisyncId_shouldSetBtDeviceActive() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); when(mHearingAidProfile.getHiSyncId(mLeftBluetoothHapDevice)).thenReturn(HISYNCID1); mController.setActiveBluetoothDevice(mLeftBluetoothHapDevice); @@ -188,7 +187,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void setActiveBluetoothDevice_btDeviceWithoutHisyncId_shouldSetBtDeviceActive() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mController.setActiveBluetoothDevice(mBluetoothDevice); @@ -203,7 +202,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void setActiveBluetoothDevice_setNull_shouldSetNullToBothProfiles() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mController.setActiveBluetoothDevice(null); @@ -217,7 +216,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void setActiveBluetoothDevice_inNormalMode_shouldNotSetActiveDeviceToHeadsetProfile() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mController.setActiveBluetoothDevice(mBluetoothDevice); @@ -245,7 +244,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void updateState_oneHeadsetsAvailableAndActivated_shouldSetDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mShadowAudioManager.setOutputDevice(DEVICE_OUT_BLUETOOTH_SCO); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); @@ -266,7 +265,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void updateState_moreThanOneHfpBtDevicesAreAvailable_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mShadowAudioManager.setOutputDevice(DEVICE_OUT_BLUETOOTH_SCO); List connectedDevices = new ArrayList<>(2); connectedDevices.add(mBluetoothDevice); @@ -288,7 +287,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void updateState_withAvailableDevicesWiredHeadsetActivated_shouldSetDefaultSummary() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); when(mHeadsetProfile.getConnectedDevices()).thenReturn(mProfileConnectedDevices); @@ -308,7 +307,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void updateState_noAvailableHeadsetBtDevices_shouldSetDefaultSummary() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); List emptyDeviceList = new ArrayList<>(); when(mHeadsetProfile.getConnectedDevices()).thenReturn(emptyDeviceList); @@ -326,7 +325,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void updateState_oneHapBtDeviceAreAvailable_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mShadowAudioManager.setOutputDevice(DEVICE_OUT_HEARING_AID); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mLeftBluetoothHapDevice); @@ -350,7 +349,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void updateState_moreThanOneHapBtDevicesAreAvailable_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mShadowAudioManager.setOutputDevice(DEVICE_OUT_HEARING_AID); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mLeftBluetoothHapDevice); @@ -378,7 +377,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void updateState_hapBtDeviceWithSameId_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mShadowAudioManager.setOutputDevice(DEVICE_OUT_HEARING_AID); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); @@ -411,7 +410,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void updateState_hapBtDeviceWithSameIdButDifferentOrder_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mShadowAudioManager.setOutputDevice(DEVICE_OUT_HEARING_AID); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); @@ -443,7 +442,7 @@ public class HandsFreeProfileOutputPreferenceControllerTest { */ @Test public void updateState_hapBtDeviceWithDifferentId_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mShadowAudioManager.setOutputDevice(DEVICE_OUT_HEARING_AID); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); diff --git a/tests/robotests/src/com/android/settings/sound/MediaOutputPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/sound/MediaOutputPreferenceControllerTest.java index cdee8947d97..9a0c2eeafc0 100644 --- a/tests/robotests/src/com/android/settings/sound/MediaOutputPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/sound/MediaOutputPreferenceControllerTest.java @@ -100,8 +100,8 @@ public class MediaOutputPreferenceControllerTest { private Context mContext; private PreferenceScreen mScreen; private ListPreference mPreference; + private AudioManager mAudioManager; private ShadowAudioManager mShadowAudioManager; - private ShadowMediaRouter mShadowMediaRouter; private BluetoothManager mBluetoothManager; private BluetoothAdapter mBluetoothAdapter; private BluetoothDevice mBluetoothDevice; @@ -118,8 +118,8 @@ public class MediaOutputPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); + mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); mShadowAudioManager = ShadowAudioManager.getShadow(); - mShadowMediaRouter = ShadowMediaRouter.getShadow(); ShadowBluetoothUtils.sLocalBluetoothManager = mLocalManager; mLocalBluetoothManager = ShadowBluetoothUtils.getLocalBtManager(mContext); @@ -164,7 +164,6 @@ public class MediaOutputPreferenceControllerTest { @After public void tearDown() { - mShadowAudioManager.reset(); ShadowBluetoothUtils.reset(); } @@ -174,7 +173,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void setActiveBluetoothDevice_btDeviceWithHisyncId_shouldSetBtDeviceActive() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); when(mHearingAidProfile.getHiSyncId(mLeftBluetoothHapDevice)).thenReturn(HISYNCID1); mController.setActiveBluetoothDevice(mLeftBluetoothHapDevice); @@ -189,7 +188,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void setActiveBluetoothDevice_btDeviceWithoutHisyncId_shouldSetBtDeviceActive() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mController.setActiveBluetoothDevice(mBluetoothDevice); @@ -204,7 +203,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void setActiveBluetoothDevice_setNull_shouldSetNullToBothProfiles() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mController.setActiveBluetoothDevice(null); @@ -218,7 +217,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void setActiveBluetoothDevice_duringACall_shouldNotSetActiveDeviceToA2dpProfile() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mController.setActiveBluetoothDevice(mBluetoothDevice); @@ -246,7 +245,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void updateState_duringACall_shouldSetDefaultSummary() { - mShadowAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); + mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); mController.updateState(mPreference); @@ -262,7 +261,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void updateState_noAvailableA2dpBtDevices_shouldDisableAndSetDefaultSummary() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); List emptyDeviceList = new ArrayList<>(); when(mA2dpProfile.getConnectedDevices()).thenReturn(emptyDeviceList); @@ -296,7 +295,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void updateState_oneA2dpBtDeviceAreAvailable_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mShadowAudioManager.setOutputDevice(DEVICE_OUT_BLUETOOTH_A2DP); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); @@ -316,7 +315,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void updateState_moreThanOneA2DpBtDevicesAreAvailable_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mShadowAudioManager.setOutputDevice(DEVICE_OUT_BLUETOOTH_A2DP); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); @@ -337,7 +336,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void updateState_a2dpDevicesAvailableWiredHeadsetIsActivated_shouldSetDefaultSummary() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); when(mLocalBluetoothProfileManager.getHearingAidProfile()).thenReturn(null); @@ -359,7 +358,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void updateState_a2dpDevicesAvailableCurrentDeviceActivated_shouldSetDefaultSummary() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); when(mA2dpProfile.getConnectedDevices()).thenReturn(mProfileConnectedDevices); @@ -379,7 +378,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void updateState_oneHapBtDeviceAreAvailable_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mShadowAudioManager.setOutputDevice(DEVICE_OUT_HEARING_AID); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mLeftBluetoothHapDevice); @@ -403,7 +402,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void updateState_moreThanOneHapBtDevicesAreAvailable_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mShadowAudioManager.setOutputDevice(DEVICE_OUT_HEARING_AID); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mLeftBluetoothHapDevice); @@ -431,7 +430,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void updateState_hapBtDeviceWithSameId_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mShadowAudioManager.setOutputDevice(DEVICE_OUT_HEARING_AID); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); @@ -464,7 +463,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void updateState_hapBtDeviceWithSameIdButDifferentOrder_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mShadowAudioManager.setOutputDevice(DEVICE_OUT_HEARING_AID); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); @@ -496,7 +495,7 @@ public class MediaOutputPreferenceControllerTest { */ @Test public void updateState_hapBtDeviceWithDifferentId_shouldSetActivatedDeviceName() { - mShadowAudioManager.setMode(AudioManager.MODE_NORMAL); + mAudioManager.setMode(AudioManager.MODE_NORMAL); mShadowAudioManager.setOutputDevice(DEVICE_OUT_HEARING_AID); mProfileConnectedDevices.clear(); mProfileConnectedDevices.add(mBluetoothDevice); diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccountManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccountManager.java index 4401926c4fd..bf54d2fa7c0 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccountManager.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccountManager.java @@ -30,7 +30,7 @@ import java.util.List; import java.util.Map; @Implements(AccountManager.class) -public class ShadowAccountManager{ +public class ShadowAccountManager { private static final Map sAuthenticators = new HashMap<>(); private static final Map> sAccountsByUserId = new HashMap<>(); diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAudioManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAudioManager.java index cea50f3b2ab..6636a6cf431 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAudioManager.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAudioManager.java @@ -101,11 +101,6 @@ public class ShadowAudioManager extends org.robolectric.shadows.ShadowAudioManag } } - @Resetter - public void reset() { - mDeviceCallbacks.clear(); - } - public void setBluetoothScoOn(boolean bluetoothScoOn) { mBluetoothScoOn = bluetoothScoOn; } diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java index ccfcc2d7055..d8703beb4b9 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java @@ -21,12 +21,10 @@ import android.content.pm.UserInfo; import android.os.UserHandle; import android.os.UserManager; import android.os.UserManager.EnforcingUser; -import android.util.SparseArray; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; -import org.robolectric.annotation.Resetter; import org.robolectric.shadow.api.Shadow; import java.util.ArrayList; @@ -40,7 +38,6 @@ import java.util.Set; @Implements(value = UserManager.class) public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager { - private SparseArray mUserInfos = new SparseArray<>(); private final List mRestrictions = new ArrayList<>(); private final Map> mRestrictionSources = new HashMap<>(); private final List mUserProfileInfos = new ArrayList<>(); @@ -49,15 +46,6 @@ public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager private int[] profileIdsForUser = new int[0]; private boolean mUserSwitchEnabled; - public void setUserInfo(int userHandle, UserInfo userInfo) { - mUserInfos.put(userHandle, userInfo); - } - - @Implementation - protected UserInfo getUserInfo(int userHandle) { - return mUserInfos.get(userHandle); - } - public void addProfile(UserInfo userInfo) { mUserProfileInfos.add(userInfo); } @@ -76,16 +64,6 @@ public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager return ids; } - @Implementation - public List getUserProfiles() { - int[] userIds = getProfileIds(UserHandle.myUserId(), true /* enabledOnly */); - List result = new ArrayList<>(userIds.length); - for (int userId : userIds) { - result.add(UserHandle.of(userId)); - } - return result; - } - @Implementation protected int getCredentialOwnerProfile(@UserIdInt int userHandle) { return userHandle; diff --git a/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java index e31dce283ab..8093af57644 100644 --- a/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/users/AddUserWhenLockedPreferenceControllerTest.java @@ -23,7 +23,6 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; -import android.content.pm.UserInfo; import android.provider.Settings.Global; import androidx.preference.PreferenceScreen; @@ -32,7 +31,6 @@ import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settingslib.RestrictedSwitchPreference; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -40,7 +38,6 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowApplication; @RunWith(SettingsRobolectricTestRunner.class) @Config(shadows = {ShadowUserManager.class}) @@ -49,7 +46,6 @@ public class AddUserWhenLockedPreferenceControllerTest { @Mock(answer = RETURNS_DEEP_STUBS) private PreferenceScreen mScreen; @Mock(answer = RETURNS_DEEP_STUBS) - private UserInfo mUserInfo; private Context mContext; private ShadowUserManager mUserManager; @@ -65,8 +61,7 @@ public class AddUserWhenLockedPreferenceControllerTest { @Test public void displayPref_NotAdmin_shouldNotDisplay() { - mUserManager.setUserInfo(0, mUserInfo); - when(mUserInfo.isAdmin()).thenReturn(false); + mUserManager.setIsAdminUser(false); final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class); when(preference.getKey()).thenReturn(mController.getPreferenceKey()); when(mScreen.findPreference(preference.getKey())).thenReturn(preference); diff --git a/tests/robotests/src/com/android/settings/users/EditUserInfoControllerTest.java b/tests/robotests/src/com/android/settings/users/EditUserInfoControllerTest.java index 73046887528..cd33b3907d4 100644 --- a/tests/robotests/src/com/android/settings/users/EditUserInfoControllerTest.java +++ b/tests/robotests/src/com/android/settings/users/EditUserInfoControllerTest.java @@ -28,7 +28,6 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.Intent; -import android.content.pm.UserInfo; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; @@ -40,9 +39,7 @@ import androidx.fragment.app.FragmentActivity; import com.android.settings.R; import com.android.settings.testutils.SettingsRobolectricTestRunner; -import com.android.settings.testutils.shadow.ShadowUserManager; -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -50,18 +47,14 @@ import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.android.controller.ActivityController; -import org.robolectric.annotation.Config; @RunWith(SettingsRobolectricTestRunner.class) -@Config(shadows = {ShadowUserManager.class}) public class EditUserInfoControllerTest { @Mock private Fragment mFragment; @Mock private LayoutInflater mInflater; @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private UserInfo mUserInfo; - @Mock(answer = Answers.RETURNS_DEEP_STUBS) private View mDialogContent; @Mock private EditText mUserName; @@ -70,7 +63,6 @@ public class EditUserInfoControllerTest { @Mock private Drawable mCurrentIcon; - private ShadowUserManager mUserManager; private FragmentActivity mActivity; private TestEditUserInfoController mController; @@ -92,8 +84,6 @@ public class EditUserInfoControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); - mUserManager = ShadowUserManager.getShadow(); - mUserManager.setUserInfo(0, mUserInfo); mActivity = spy(ActivityController.of(new FragmentActivity()).get()); when(mFragment.getActivity()).thenReturn(mActivity); when(mActivity.getLayoutInflater()).thenReturn(mInflater); diff --git a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceControllerTest.java index 790739aec8b..6d609b869ea 100644 --- a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceControllerTest.java @@ -28,6 +28,7 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiManager; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; @@ -56,14 +57,14 @@ public class SavedAccessPointsPreferenceControllerTest { private PreferenceCategory mPreferenceCategory; private Context mContext; - private ShadowWifiManager mWifiManager; + private WifiManager mWifiManager; private SavedAccessPointsPreferenceController mController; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; - mWifiManager = ShadowWifiManager.get(); + mWifiManager = mContext.getSystemService(WifiManager.class); mController = spy(new SavedAccessPointsPreferenceController(mContext, "test_key")); when(mPreferenceScreen.findPreference(mController.getPreferenceKey())) From 6da43028649350df9e06739a636ca29b0b16832c Mon Sep 17 00:00:00 2001 From: Pengquan Meng Date: Tue, 20 Nov 2018 13:56:28 -0800 Subject: [PATCH 07/11] Fix CarrierSettings preference This used the CarrierConfigManager to get the CarrierSettings activity component and open that activity when the preference is clicked. Bug: 117651939 Test: make -j40 ROBOTEST_FILTER=telephony RunSettingsRoboTests Change-Id: Ic5267bba18ab32fbcc2e04aa61e7361151130275 --- .../CarrierPreferenceController.java | 27 +++++++- .../CarrierPreferenceControllerTest.java | 62 +++++++++++++++++++ 2 files changed, 88 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/telephony/CarrierPreferenceController.java b/src/com/android/settings/network/telephony/CarrierPreferenceController.java index 8210c4b86c4..3dab15e2a36 100644 --- a/src/com/android/settings/network/telephony/CarrierPreferenceController.java +++ b/src/com/android/settings/network/telephony/CarrierPreferenceController.java @@ -17,6 +17,10 @@ package com.android.settings.network.telephony; import android.content.Context; +import android.content.ComponentName; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; @@ -62,10 +66,31 @@ public class CarrierPreferenceController extends BasePreferenceController { @Override public boolean handlePreferenceTreeClick(Preference preference) { if (getPreferenceKey().equals(preference.getKey())) { - //TODO(b/117651939): start carrier settings activity + final Intent carrierSettingsIntent = getCarrierSettingsActivityIntent(mSubId); + if (carrierSettingsIntent != null) { + mContext.startActivity(carrierSettingsIntent); + } return true; } return false; } + + private Intent getCarrierSettingsActivityIntent(int subId) { + final PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId); + final ComponentName cn = ComponentName.unflattenFromString( + config == null ? "" : config.getString( + CarrierConfigManager.KEY_CARRIER_SETTINGS_ACTIVITY_COMPONENT_NAME_STRING, + "" /* default value */)); + + if (cn == null) return null; + + final Intent intent = new Intent(Intent.ACTION_MAIN); + intent.setComponent(cn); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + + final PackageManager pm = mContext.getPackageManager(); + final ResolveInfo resolveInfo = pm.resolveActivity(intent, 0 /* flags */); + return resolveInfo != null ? intent : null; + } } diff --git a/tests/robotests/src/com/android/settings/network/telephony/CarrierPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/CarrierPreferenceControllerTest.java index 8673de86701..054a6bd45b2 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/CarrierPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/CarrierPreferenceControllerTest.java @@ -21,10 +21,18 @@ import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_U 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.never; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import android.content.Context; +import android.content.ComponentName; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; @@ -38,12 +46,15 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.ArgumentCaptor; import org.robolectric.RuntimeEnvironment; @RunWith(SettingsRobolectricTestRunner.class) public class CarrierPreferenceControllerTest { private static final int SUB_ID = 2; + private static final String CARRIER_SETTINGS_COMPONENT = "packageName/className"; @Mock private TelephonyManager mTelephonyManager; @@ -106,4 +117,55 @@ public class CarrierPreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE); } + + @Test + public void handlePreferenceClick_activityFound_openCarrierSettingActivity() { + final PersistableBundle bundle = new PersistableBundle(); + bundle.putString( + CarrierConfigManager.KEY_CARRIER_SETTINGS_ACTIVITY_COMPONENT_NAME_STRING, + CARRIER_SETTINGS_COMPONENT); + doReturn(bundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); + PackageManager pm = Mockito.mock(PackageManager.class); + doReturn(pm).when(mContext).getPackageManager(); + doReturn(new ResolveInfo()).when(pm).resolveActivity(any(Intent.class), anyInt()); + + mController.handlePreferenceTreeClick(mPreference); + + final ArgumentCaptor captor = ArgumentCaptor.forClass(Intent.class); + verify(mContext).startActivity(captor.capture()); + final Intent intent = captor.getValue(); + assertThat(intent.getComponent()).isEqualTo( + ComponentName.unflattenFromString(CARRIER_SETTINGS_COMPONENT)); + } + + @Test + public void handlePreferenceClick_activityNotFound_DoNothing() { + final PersistableBundle bundle = new PersistableBundle(); + bundle.putString( + CarrierConfigManager.KEY_CARRIER_SETTINGS_ACTIVITY_COMPONENT_NAME_STRING, + CARRIER_SETTINGS_COMPONENT); + doReturn(bundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); + PackageManager pm = Mockito.mock(PackageManager.class); + doReturn(pm).when(mContext).getPackageManager(); + doReturn(null).when(pm).resolveActivity(any(Intent.class), anyInt()); + + mController.handlePreferenceTreeClick(mPreference); + + final ArgumentCaptor captor = ArgumentCaptor.forClass(Intent.class); + verify(mContext, never()).startActivity(captor.capture()); + } + + @Test + public void handlePreferenceClick_activityNotConfigured_DoNothing() { + final PersistableBundle bundle = new PersistableBundle(); + doReturn(bundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); + PackageManager pm = Mockito.mock(PackageManager.class); + doReturn(pm).when(mContext).getPackageManager(); + doReturn(new ResolveInfo()).when(pm).resolveActivity(any(Intent.class), anyInt()); + + mController.handlePreferenceTreeClick(mPreference); + + final ArgumentCaptor captor = ArgumentCaptor.forClass(Intent.class); + verify(mContext, never()).startActivity(captor.capture()); + } } From b0e66c88076c5dc2b6fd9927a588abcff397bbbf Mon Sep 17 00:00:00 2001 From: Johnson Lu Date: Tue, 20 Nov 2018 14:08:08 +0800 Subject: [PATCH 08/11] Refine QrCamera.getBestPreviewSize method Compares aspect ratio of camera preview and preview window to get better preview size. Bug: 118797380 Test: RunSettingsRoboTests Change-Id: I5c58691b02c2b5d9709ff956e86ca301196d5664 --- .../android/settings/wifi/qrcode/QrCamera.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/wifi/qrcode/QrCamera.java b/src/com/android/settings/wifi/qrcode/QrCamera.java index 3230035ea3a..c29236c2da4 100644 --- a/src/com/android/settings/wifi/qrcode/QrCamera.java +++ b/src/com/android/settings/wifi/qrcode/QrCamera.java @@ -298,18 +298,30 @@ public class QrCamera extends Handler { } } + /** Get best preview size from the list of camera supported preview sizes. Compares the + * preview size and aspect ratio to choose the best one. */ private Size getBestPreviewSize(Camera.Parameters parameters) { + final double minRatioDiffPercent = 0.1; final Size windowSize = mScannerCallback.getViewSize(); + final double winRatio = getRatio(windowSize.getWidth(), windowSize.getHeight()); + double bestChoiceRatio = 0; Size bestChoice = new Size(0, 0); for (Camera.Size size : parameters.getSupportedPreviewSizes()) { - if (size.width <= windowSize.getWidth() && size.height <= windowSize.getHeight()) { + double ratio = getRatio(size.width, size.height); + if (size.height * size.width > bestChoice.getWidth() * bestChoice.getHeight() + && (Math.abs(bestChoiceRatio - winRatio) / winRatio > minRatioDiffPercent + || Math.abs(ratio - winRatio) / winRatio <= minRatioDiffPercent)) { bestChoice = new Size(size.width, size.height); - break; + bestChoiceRatio = getRatio(size.width, size.height); } } return bestChoice; } + private double getRatio(double x, double y) { + return (x < y) ? x / y : y / x; + } + @VisibleForTesting protected void decodeImage(BinaryBitmap image) { Result qrCode = null; From b92e9d423974b3654d843df170a91058a3ad347e Mon Sep 17 00:00:00 2001 From: Raff Tsai Date: Tue, 13 Nov 2018 04:02:07 +0800 Subject: [PATCH 09/11] Add BatteryFix Slice Change-Id: I504df1e9caadced71cc37f8be9207ab9fd26f9ab Fixes: 114807643 Test: manual --- color-check-baseline.xml | 94 +++++--- res/values/themes.xml | 5 + .../fuelgauge/BatteryBroadcastReceiver.java | 3 +- .../SettingsContextualCardProvider.java | 8 + .../slices/BatteryFixSlice.java | 224 ++++++++++++++++++ .../settings/slices/CustomSliceManager.java | 10 +- .../accounts/AvatarViewMixinTest.java | 7 +- .../BatteryBroadcastReceiverTest.java | 22 ++ .../slices/BatteryFixSliceTest.java | 130 ++++++++++ 9 files changed, 468 insertions(+), 35 deletions(-) create mode 100644 src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java create mode 100644 tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java diff --git a/color-check-baseline.xml b/color-check-baseline.xml index cbfae2e6ac2..0ae001d4852 100644 --- a/color-check-baseline.xml +++ b/color-check-baseline.xml @@ -1,18 +1,6 @@ - - - - @@ -2569,7 +2557,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~"> @@ -2585,7 +2573,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~"> @@ -2601,7 +2589,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~"> @@ -2617,7 +2605,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~"> @@ -2633,7 +2621,7 @@ errorLine2=" ~~~~~~~~~~~~~~~~~~~"> @@ -2665,7 +2653,7 @@ errorLine2=" ^"> @@ -2681,7 +2669,7 @@ errorLine2=" ^"> @@ -2697,7 +2685,7 @@ errorLine2=" ^"> @@ -2761,7 +2749,7 @@ errorLine2=" ^"> @@ -2777,7 +2765,7 @@ errorLine2=" ^"> @@ -2793,7 +2781,7 @@ errorLine2=" ^"> @@ -2809,7 +2797,7 @@ errorLine2=" ^"> @@ -2825,7 +2813,7 @@ errorLine2=" ^"> @@ -2841,7 +2829,7 @@ errorLine2=" ^"> @@ -2857,7 +2845,7 @@ errorLine2=" ^"> @@ -2873,10 +2861,58 @@ errorLine2=" ^"> + + + + + + + + + + + + @*android:style/ThemeOverlay.DeviceDefault.ActionBar.Accent + + + @color/battery_good_color_light + @color/battery_maybe_color_light + @color/battery_bad_color_light