Update Reset options summary

- Update summary when user does not have permission to reset network or factory reset

Fixes: 126295214
Test: rototest & manual
Change-Id: I710f0abcd3df1560eb3e7bc53a7427d7a6a5aad7
This commit is contained in:
Edgar Wang
2019-12-20 13:35:59 +08:00
parent 778653fe71
commit fee49421c7
3 changed files with 59 additions and 0 deletions

View File

@@ -3621,6 +3621,8 @@
<!-- Summary text for a screen containing all device reset options [CHAR LIMIT=None] --> <!-- Summary text for a screen containing all device reset options [CHAR LIMIT=None] -->
<string name="reset_dashboard_summary">Network, apps, or device can be reset</string> <string name="reset_dashboard_summary">Network, apps, or device can be reset</string>
<!-- Summary text for a screen device reset option for Apps [CHAR LIMIT=NONE] -->
<string name="reset_dashboard_summary_onlyApps">Apps can be reset</string>
<!-- Reset Network --> <!-- Reset Network -->
<!-- Button title to reset Wi-Fi settings, Mobile data setting, bluetooth settings --> <!-- Button title to reset Wi-Fi settings, Mobile data setting, bluetooth settings -->

View File

@@ -16,14 +16,23 @@
package com.android.settings.system; package com.android.settings.system;
import android.content.Context; import android.content.Context;
import android.os.UserManager;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.NetworkResetPreferenceController;
public class ResetPreferenceController extends BasePreferenceController { public class ResetPreferenceController extends BasePreferenceController {
private final UserManager mUm;
private final NetworkResetPreferenceController mNetworkReset;
private final FactoryResetPreferenceController mFactpruReset;
public ResetPreferenceController(Context context, String preferenceKey) { public ResetPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
mUm = (UserManager) context.getSystemService(Context.USER_SERVICE);
mNetworkReset = new NetworkResetPreferenceController(context);
mFactpruReset = new FactoryResetPreferenceController(context);
} }
@Override @Override
@@ -32,4 +41,13 @@ public class ResetPreferenceController extends BasePreferenceController {
? AVAILABLE_UNSEARCHABLE ? AVAILABLE_UNSEARCHABLE
: UNSUPPORTED_ON_DEVICE; : 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);
}
} }

View File

@@ -18,6 +18,12 @@ package com.android.settings.system;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import android.content.Context; 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.Before;
import org.junit.Test; import org.junit.Test;
@@ -31,6 +37,7 @@ import org.robolectric.annotation.Config;
public class ResetPreferenceControllerTest { public class ResetPreferenceControllerTest {
private static final String KEY_RESET_DASHBOARD = "reset_dashboard"; private static final String KEY_RESET_DASHBOARD = "reset_dashboard";
private ShadowUserManager mShadowUserManager;
private Context mContext; private Context mContext;
private ResetPreferenceController mController; private ResetPreferenceController mController;
@@ -40,6 +47,7 @@ public class ResetPreferenceControllerTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mController = new ResetPreferenceController(mContext, KEY_RESET_DASHBOARD); mController = new ResetPreferenceController(mContext, KEY_RESET_DASHBOARD);
mShadowUserManager = ShadowUserManager.getShadow();
} }
@Test @Test
@@ -52,4 +60,35 @@ public class ResetPreferenceControllerTest {
public void isAvailable_ifNotVisible_false() { public void isAvailable_ifNotVisible_false() {
assertThat(mController.isAvailable()).isFalse(); 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));
}
} }