diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java index 96ce17e3ffa..2c9701832ee 100644 --- a/src/com/android/settings/MasterClear.java +++ b/src/com/android/settings/MasterClear.java @@ -144,10 +144,10 @@ public class MasterClear extends OptionsMenuFragment { public void onClick(View view) { final Context context = view.getContext(); if (Utils.isDemoUser(context)) { - final String packageName = Utils.getDemoModePackageName(context); - if (!TextUtils.isEmpty(packageName)) { + final ComponentName componentName = Utils.getDeviceOwnerComponent(context); + if (componentName != null) { final Intent requestFactoryReset = new Intent() - .setPackage(packageName) + .setPackage(componentName.getPackageName()) .setAction(Intent.ACTION_FACTORY_RESET); context.startActivity(requestFactoryReset); } diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index eecc8c24b0e..5371ca414fd 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -1280,8 +1280,10 @@ public final class Utils extends com.android.settingslib.Utils { return UserManager.isDeviceInDemoMode(context) && getUserManager(context).isDemoUser(); } - public static String getDemoModePackageName(Context context) { - return context.getString(com.android.internal.R.string.config_demoModePackage); + public static ComponentName getDeviceOwnerComponent(Context context) { + final DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService( + Context.DEVICE_POLICY_SERVICE); + return dpm.getDeviceOwnerComponentOnAnyUser(); } /** diff --git a/tests/robotests/src/com/android/settings/MasterClearTest.java b/tests/robotests/src/com/android/settings/MasterClearTest.java index b50165467bd..21b8e475dea 100644 --- a/tests/robotests/src/com/android/settings/MasterClearTest.java +++ b/tests/robotests/src/com/android/settings/MasterClearTest.java @@ -26,6 +26,7 @@ import static org.robolectric.Shadows.shadowOf; import android.app.Activity; import android.app.Fragment; +import android.content.ComponentName; import android.content.ContentResolver; import android.content.Intent; import android.os.Bundle; @@ -37,7 +38,6 @@ import android.widget.LinearLayout; import android.widget.ScrollView; import com.android.settings.testutils.SettingsRobolectricTestRunner; -import com.android.settings.testutils.shadow.SettingsShadowResources; import com.android.settings.testutils.shadow.ShadowUtils; import org.junit.Before; @@ -144,19 +144,19 @@ public class MasterClearTest { } @Test - @Config(shadows = { ShadowUtils.class, SettingsShadowResources.class }) + @Config(shadows = { ShadowUtils.class }) public void testInitiateMasterClear_inDemoMode_sendsIntent() { - SettingsShadowResources.overrideResource( - com.android.internal.R.string.config_demoModePackage, "package"); - ShadowUtils.setIsDemoUser(true); + final ComponentName componentName = ComponentName.unflattenFromString( + "com.android.retaildemo/.DeviceAdminReceiver"); + ShadowUtils.setDeviceOwnerComponent(componentName); + mMasterClear.mInitiateListener.onClick( mContentView.findViewById(R.id.initiate_master_clear)); final Intent intent = mShadowActivity.getNextStartedActivity(); assertThat(Intent.ACTION_FACTORY_RESET).isEqualTo(intent.getAction()); - final String packageName = Utils.getDemoModePackageName(RuntimeEnvironment.application); - assertThat(packageName).isEqualTo(intent.getPackage()); + assertThat(componentName.getPackageName()).isEqualTo(intent.getPackage()); } private void initScrollView(int height, int scrollY, int childBottom) { diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java index 9b1e26eb86b..8d0df1772b7 100644 --- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java @@ -30,6 +30,7 @@ public class ShadowUtils { private static IFingerprintManager sFingerprintManager = null; private static boolean sIsDemoUser; + private static ComponentName sDeviceOwnerComponentName; @Implementation public static int enforceSameOwner(Context context, int userId) { @@ -63,4 +64,13 @@ public class ShadowUtils { public static boolean isDemoUser(Context context) { return sIsDemoUser; } + + public static void setDeviceOwnerComponent(ComponentName componentName) { + sDeviceOwnerComponentName = componentName; + } + + @Implementation + public static ComponentName getDeviceOwnerComponent(Context context) { + return sDeviceOwnerComponentName; + } }