summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Lenka Trochtova <ltrochtova@google.com> 2016-11-18 17:34:34 +0100
committer Lenka Trochtova <ltrochtova@google.com> 2016-12-15 13:25:09 +0100
commit73aeea2da24bf0d4eae0dc803df18d1266f85136 (patch)
tree4673e1cedede11ad261157e4e61e023d96a974d0
parent860239ed4ab2ad613513608ff10c928c60b0562c (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.txt2
-rw-r--r--core/java/android/content/Intent.java42
-rw-r--r--core/res/AndroidManifest.xml5
-rw-r--r--services/core/java/com/android/server/MasterClearReceiver.java11
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java1
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)