diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 5e50147303acb..f96116c002345 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -4172,4 +4172,8 @@
one bar higher than they actually are -->
false
+
+
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index d19cd1104ce79..f11294842128c 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -3813,4 +3813,5 @@
+
diff --git a/services/core/java/com/android/server/MasterClearReceiver.java b/services/core/java/com/android/server/MasterClearReceiver.java
index 06c46b908b7a8..fa1653db35797 100644
--- a/services/core/java/com/android/server/MasterClearReceiver.java
+++ b/services/core/java/com/android/server/MasterClearReceiver.java
@@ -16,16 +16,15 @@
package com.android.server;
-import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.RecoverySystem;
+import android.os.UserHandle;
import android.os.storage.StorageManager;
-import android.provider.Settings;
-import android.telephony.euicc.EuiccManager;
+import android.text.TextUtils;
import android.util.Log;
import android.util.Slog;
import android.view.WindowManager;
@@ -33,8 +32,6 @@ import android.view.WindowManager;
import com.android.internal.R;
import java.io.IOException;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
public class MasterClearReceiver extends BroadcastReceiver {
private static final String TAG = "MasterClear";
@@ -58,6 +55,15 @@ public class MasterClearReceiver extends BroadcastReceiver {
+ "Intent#EXTRA_FORCE_FACTORY_RESET should be used instead.");
}
+ final String factoryResetPackage = context
+ .getString(com.android.internal.R.string.config_factoryResetPackage);
+ if (Intent.ACTION_FACTORY_RESET.equals(intent.getAction())
+ && !TextUtils.isEmpty(factoryResetPackage)) {
+ intent.setPackage(factoryResetPackage).setComponent(null);
+ context.sendBroadcastAsUser(intent, UserHandle.SYSTEM);
+ return;
+ }
+
final boolean shutdown = intent.getBooleanExtra("shutdown", false);
final String reason = intent.getStringExtra(Intent.EXTRA_REASON);
mWipeExternalStorage = intent.getBooleanExtra(Intent.EXTRA_WIPE_EXTERNAL_STORAGE, false);