diff options
| author | 2016-11-18 17:34:34 +0100 | |
|---|---|---|
| committer | 2016-12-15 13:25:09 +0100 | |
| commit | 73aeea2da24bf0d4eae0dc803df18d1266f85136 (patch) | |
| tree | 4673e1cedede11ad261157e4e61e023d96a974d0 | |
| parent | 860239ed4ab2ad613513608ff10c928c60b0562c (diff) | |
Make master clear constants system APIs.
This is needed for unbundling of the OobConfig apk.
Test: gts-tradefed run gts -m GtsGmscoreHostTestCases --test com.google.android.gts.devicepolicy.DeviceOwnerUserRestrictionTest#testFactoryReset_disallowFactoryReset
Bug: 32974361
Change-Id: I71e7270bb4c3234ec0516382b18a2ca35aab4c81
| -rw-r--r-- | api/system-current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/content/Intent.java | 42 | ||||
| -rw-r--r-- | core/res/AndroidManifest.xml | 5 | ||||
| -rw-r--r-- | services/core/java/com/android/server/MasterClearReceiver.java | 11 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 1 |
5 files changed, 56 insertions, 5 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index f8caa5f20a95..1653ab54b3e1 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -9096,6 +9096,7 @@ package android.content { field public static final java.lang.String ACTION_EDIT = "android.intent.action.EDIT"; field public static final java.lang.String ACTION_EXTERNAL_APPLICATIONS_AVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE"; field public static final java.lang.String ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE"; + field public static final java.lang.String ACTION_FACTORY_RESET = "android.intent.action.FACTORY_RESET"; field public static final java.lang.String ACTION_FACTORY_TEST = "android.intent.action.FACTORY_TEST"; field public static final java.lang.String ACTION_GET_CONTENT = "android.intent.action.GET_CONTENT"; field public static final java.lang.String ACTION_GET_RESTRICTION_ENTRIES = "android.intent.action.GET_RESTRICTION_ENTRIES"; @@ -9259,6 +9260,7 @@ package android.content { field public static final java.lang.String EXTRA_DONT_KILL_APP = "android.intent.extra.DONT_KILL_APP"; field public static final java.lang.String EXTRA_EMAIL = "android.intent.extra.EMAIL"; field public static final java.lang.String EXTRA_EXCLUDE_COMPONENTS = "android.intent.extra.EXCLUDE_COMPONENTS"; + field public static final java.lang.String EXTRA_FORCE_FACTORY_RESET = "android.intent.extra.FORCE_FACTORY_RESET"; field public static final java.lang.String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT"; field public static final java.lang.String EXTRA_INDEX = "android.intent.extra.INDEX"; field public static final java.lang.String EXTRA_INITIAL_INTENTS = "android.intent.extra.INITIAL_INTENTS"; diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index cda81760c52b..16af5e1c45a2 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -3226,18 +3226,54 @@ public class Intent implements Parcelable, Cloneable { public static final String ACTION_DYNAMIC_SENSOR_CHANGED = "android.intent.action.DYNAMIC_SENSOR_CHANGED"; - /** {@hide} */ + /** + * Deprecated - use {@link #ACTION_FACTORY_RESET} instead. + * + * {@hide} + */ + @Deprecated public static final String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR"; /** - * Boolean intent extra to be used with {@link ACTION_MASTER_CLEAR} in order to force a factory - * reset even if {@link android.os.UserManager.DISALLOW_FACTORY_RESET} is set. + * Boolean intent extra to be used with {@link #ACTION_MASTER_CLEAR} in order to force a factory + * reset even if {@link android.os.UserManager#DISALLOW_FACTORY_RESET} is set. + * + * <p>Deprecated - use {@link #EXTRA_FORCE_FACTORY_RESET} instead. + * * @hide */ + @Deprecated public static final String EXTRA_FORCE_MASTER_CLEAR = "android.intent.extra.FORCE_MASTER_CLEAR"; /** + * A broadcast action to trigger a factory reset. + * + * <p> The sender must hold the {@link android.Manifest.permission#MASTER_CLEAR} permission. + * + * <p>Not for use by third-party applications. + * + * @see #EXTRA_FORCE_MASTER_CLEAR + * + * {@hide} + */ + @SystemApi + @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) + public static final String ACTION_FACTORY_RESET = "android.intent.action.FACTORY_RESET"; + + /** + * Boolean intent extra to be used with {@link #ACTION_MASTER_CLEAR} in order to force a factory + * reset even if {@link android.os.UserManager#DISALLOW_FACTORY_RESET} is set. + * + * <p>Not for use by third-party applications. + * + * @hide + */ + @SystemApi + public static final String EXTRA_FORCE_FACTORY_RESET = + "android.intent.extra.FORCE_FACTORY_RESET"; + + /** * Broadcast action: report that a settings element is being restored from backup. The intent * contains three extras: EXTRA_SETTING_NAME is a string naming the restored setting, * EXTRA_SETTING_NEW_VALUE is the value being restored, and EXTRA_SETTING_PREVIOUS_VALUE diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 40fd8813d768..bc0406256360 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -3393,7 +3393,10 @@ android:permission="android.permission.MASTER_CLEAR"> <intent-filter android:priority="100" > - <!-- For Checkin, Settings, etc.: action=MASTER_CLEAR --> + <!-- For Checkin, Settings, etc.: action=FACTORY_RESET --> + <action android:name="android.intent.action.FACTORY_RESET" /> + <!-- As above until all the references to the deprecated MASTER_CLEAR get updated to + FACTORY_RESET. --> <action android:name="android.intent.action.MASTER_CLEAR" /> <!-- MCS always uses REMOTE_INTENT: category=MASTER_CLEAR --> diff --git a/services/core/java/com/android/server/MasterClearReceiver.java b/services/core/java/com/android/server/MasterClearReceiver.java index 6f8edecb1777..26e471e4fc95 100644 --- a/services/core/java/com/android/server/MasterClearReceiver.java +++ b/services/core/java/com/android/server/MasterClearReceiver.java @@ -42,12 +42,21 @@ public class MasterClearReceiver extends BroadcastReceiver { return; } } + if (Intent.ACTION_MASTER_CLEAR.equals(intent.getAction())) { + Slog.w(TAG, "The request uses the deprecated Intent#ACTION_MASTER_CLEAR, " + + "Intent#ACTION_FACTORY_RESET should be used instead."); + } + if (intent.hasExtra(Intent.EXTRA_FORCE_MASTER_CLEAR)) { + Slog.w(TAG, "The request uses the deprecated Intent#EXTRA_FORCE_MASTER_CLEAR, " + + "Intent#EXTRA_FORCE_FACTORY_RESET should be used instead."); + } final boolean shutdown = intent.getBooleanExtra("shutdown", false); final String reason = intent.getStringExtra(Intent.EXTRA_REASON); final boolean wipeExternalStorage = intent.getBooleanExtra( Intent.EXTRA_WIPE_EXTERNAL_STORAGE, false); - final boolean forceWipe = intent.getBooleanExtra(Intent.EXTRA_FORCE_MASTER_CLEAR, false); + final boolean forceWipe = intent.getBooleanExtra(Intent.EXTRA_FORCE_MASTER_CLEAR, false) + || intent.getBooleanExtra(Intent.EXTRA_FORCE_FACTORY_RESET, false); Slog.w(TAG, "!!! FACTORY RESET !!!"); // The reboot call is blocking, so we need to do it on another thread. diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 4ea73e7399a3..422ca4885d8c 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -17869,6 +17869,7 @@ public class ActivityManagerService extends IActivityManager.Stub || Intent.ACTION_MEDIA_SCANNER_SCAN_FILE.equals(action) || Intent.ACTION_SHOW_KEYBOARD_SHORTCUTS.equals(action) || Intent.ACTION_MASTER_CLEAR.equals(action) + || Intent.ACTION_FACTORY_RESET.equals(action) || AppWidgetManager.ACTION_APPWIDGET_CONFIGURE.equals(action) || AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action) || LocationManager.HIGH_POWER_REQUEST_CHANGE_ACTION.equals(action) |