diff --git a/res/values/strings.xml b/res/values/strings.xml index 7fe1ff7e3b6..cd473a296ba 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3621,6 +3621,8 @@ Network, apps, or device can be reset + + Apps can be reset diff --git a/src/com/android/settings/system/ResetPreferenceController.java b/src/com/android/settings/system/ResetPreferenceController.java index 050efc4cd1c..bbb5323ae62 100644 --- a/src/com/android/settings/system/ResetPreferenceController.java +++ b/src/com/android/settings/system/ResetPreferenceController.java @@ -16,14 +16,23 @@ package com.android.settings.system; import android.content.Context; +import android.os.UserManager; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.network.NetworkResetPreferenceController; public class ResetPreferenceController extends BasePreferenceController { + private final UserManager mUm; + private final NetworkResetPreferenceController mNetworkReset; + private final FactoryResetPreferenceController mFactpruReset; + public ResetPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); + mUm = (UserManager) context.getSystemService(Context.USER_SERVICE); + mNetworkReset = new NetworkResetPreferenceController(context); + mFactpruReset = new FactoryResetPreferenceController(context); } @Override @@ -32,4 +41,13 @@ public class ResetPreferenceController extends BasePreferenceController { ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE; } + + @Override + public CharSequence getSummary() { + if (!mNetworkReset.isAvailable() && !mFactpruReset.isAvailable()) { + return mContext.getText(R.string.reset_dashboard_summary_onlyApps); + } + + return mContext.getText(R.string.reset_dashboard_summary); + } } diff --git a/tests/robotests/src/com/android/settings/system/ResetPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/system/ResetPreferenceControllerTest.java index 1aca4db9e62..35c0c7d3715 100644 --- a/tests/robotests/src/com/android/settings/system/ResetPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/system/ResetPreferenceControllerTest.java @@ -18,6 +18,12 @@ package com.android.settings.system; import static com.google.common.truth.Truth.assertThat; import android.content.Context; +import android.content.pm.UserInfo; +import android.os.UserHandle; +import android.provider.Settings; + +import com.android.settings.R; +import com.android.settings.testutils.shadow.ShadowUserManager; import org.junit.Before; import org.junit.Test; @@ -31,6 +37,7 @@ import org.robolectric.annotation.Config; public class ResetPreferenceControllerTest { private static final String KEY_RESET_DASHBOARD = "reset_dashboard"; + private ShadowUserManager mShadowUserManager; private Context mContext; private ResetPreferenceController mController; @@ -40,6 +47,7 @@ public class ResetPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mController = new ResetPreferenceController(mContext, KEY_RESET_DASHBOARD); + mShadowUserManager = ShadowUserManager.getShadow(); } @Test @@ -52,4 +60,35 @@ public class ResetPreferenceControllerTest { public void isAvailable_ifNotVisible_false() { assertThat(mController.isAvailable()).isFalse(); } + + @Test + public void getSummary_systemUser_shouldReturnFullSummary() { + mShadowUserManager.setIsAdminUser(true); + + assertThat(mController.getSummary()).isEqualTo( + mContext.getString(R.string.reset_dashboard_summary)); + } + + @Test + public void getSummary_nonSystemUser_shouldReturnAppsSummary() { + mShadowUserManager.setIsAdminUser(false); + mShadowUserManager.setIsDemoUser(false); + + assertThat(mController.getSummary()).isEqualTo( + mContext.getString(R.string.reset_dashboard_summary_onlyApps)); + } + + @Test + public void getSummary_demoUser_shouldReturnFullSummary() { + mShadowUserManager.setIsAdminUser(false); + + // Place the device in demo mode. + Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_DEMO_MODE, 1); + + // Indicate the user is a demo user. + mShadowUserManager.addUser(UserHandle.myUserId(), "test", UserInfo.FLAG_DEMO); + + assertThat(mController.getSummary()).isEqualTo( + mContext.getString(R.string.reset_dashboard_summary)); + } } \ No newline at end of file