diff --git a/res/values/bools.xml b/res/values/bools.xml index e4a57ab1730..ab8a6fd1475 100644 --- a/res/values/bools.xml +++ b/res/values/bools.xml @@ -155,4 +155,7 @@ true + + + true diff --git a/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java b/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java index a061f82e6e0..28062756104 100644 --- a/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java +++ b/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java @@ -47,7 +47,8 @@ public class SystemUpdatePreferenceController extends BasePreferenceController { @Override public int getAvailabilityStatus() { - return mUm.isAdminUser() + return mContext.getResources().getBoolean(R.bool.config_show_system_update_settings) + && mUm.isAdminUser() ? AVAILABLE : DISABLED_UNSUPPORTED; } diff --git a/tests/robotests/res/values-mcc999/config.xml b/tests/robotests/res/values-mcc999/config.xml index f160c8b6498..e755f27472e 100644 --- a/tests/robotests/res/values-mcc999/config.xml +++ b/tests/robotests/res/values-mcc999/config.xml @@ -55,5 +55,6 @@ false false false + false false diff --git a/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java index 81d07719a3e..b5b84da78a3 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java @@ -16,7 +16,9 @@ package com.android.settings.deviceinfo; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Answers.RETURNS_DEEP_STUBS; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; @@ -28,6 +30,7 @@ import android.support.v7.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; +import com.android.settings.testutils.shadow.ShadowUserManager; import org.junit.Before; import org.junit.Test; @@ -36,29 +39,32 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowApplication; import java.util.ArrayList; import java.util.List; @RunWith(SettingsRobolectricTestRunner.class) -@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +@Config( + manifest = TestConfig.MANIFEST_PATH, + sdk = TestConfig.SDK_VERSION, + shadows = { + ShadowUserManager.class + }) public class SystemUpdatePreferenceControllerTest { - @Mock(answer = RETURNS_DEEP_STUBS) - private Context mContext; - @Mock - private UserManager mUserManager; @Mock private PreferenceScreen mScreen; + private Context mContext; private SystemUpdatePreferenceController mController; private Preference mPreference; @Before public void setUp() { MockitoAnnotations.initMocks(this); + mContext = RuntimeEnvironment.application; - when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); mController = new SystemUpdatePreferenceController(mContext); mPreference = new Preference(RuntimeEnvironment.application); mPreference.setKey(mController.getPreferenceKey()); @@ -68,7 +74,7 @@ public class SystemUpdatePreferenceControllerTest { @Test public void updateNonIndexable_ifAvailable_shouldNotUpdate() { final List keys = new ArrayList<>(); - when(mUserManager.isAdminUser()).thenReturn(true); + ShadowUserManager.getShadow().setIsAdminUser(true); mController.updateNonIndexableKeys(keys); @@ -77,7 +83,7 @@ public class SystemUpdatePreferenceControllerTest { @Test public void updateNonIndexable_ifNotAvailable_shouldUpdate() { - // mUserManager.isAdminUser() returns false here + ShadowUserManager.getShadow().setIsAdminUser(false); final List keys = new ArrayList<>(); mController.updateNonIndexableKeys(keys); @@ -86,8 +92,17 @@ public class SystemUpdatePreferenceControllerTest { } @Test - public void displayPrefs_ifNotAvailable_shouldNotDisplay() { - // mUserManager.isAdminUser() returns false here + public void displayPrefs_ifVisible_butNotAdminUser_shouldNotDisplay() { + ShadowUserManager.getShadow().setIsAdminUser(false); + mController.displayPreference(mScreen); + + assertThat(mPreference.isVisible()).isFalse(); + } + + @Test + @Config(qualifiers = "mcc999") + public void displayPrefs_ifAdminUser_butNotVisible_shouldNotDisplay() { + ShadowUserManager.getShadow().setIsAdminUser(true); mController.displayPreference(mScreen); assertThat(mPreference.isVisible()).isFalse(); @@ -95,7 +110,7 @@ public class SystemUpdatePreferenceControllerTest { @Test public void displayPrefs_ifAvailable_shouldDisplay() { - when(mUserManager.isAdminUser()).thenReturn(true); + ShadowUserManager.getShadow().setIsAdminUser(true); mController.displayPreference(mScreen); @@ -104,12 +119,10 @@ public class SystemUpdatePreferenceControllerTest { @Test public void updateState_shouldSetToAndroidVersion() { - mController = new SystemUpdatePreferenceController(RuntimeEnvironment.application); - mController.updateState(mPreference); assertThat(mPreference.getSummary()) .isEqualTo(RuntimeEnvironment.application.getString(R.string.about_summary, Build.VERSION.RELEASE)); } -} +} \ No newline at end of file