diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 3e45af7..4045fd2 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -842,8 +842,7 @@
 
         // Enable/disable backup settings depending on whether the user is admin.
         setTileEnabled(new ComponentName(packageName,
-                        BackupSettingsActivity.class.getName()), true,
-                isAdmin || Utils.isCarrierDemoUser(this));
+                        BackupSettingsActivity.class.getName()), true, isAdmin);
 
         setTileEnabled(new ComponentName(packageName,
                         Settings.WifiDisplaySettingsActivity.class.getName()),
diff --git a/src/com/android/settings/system/FactoryResetPreferenceController.java b/src/com/android/settings/system/FactoryResetPreferenceController.java
index 38afd16..a3cf10a 100644
--- a/src/com/android/settings/system/FactoryResetPreferenceController.java
+++ b/src/com/android/settings/system/FactoryResetPreferenceController.java
@@ -24,6 +24,7 @@
 import android.support.v7.preference.Preference;
 
 import com.android.settings.R;
+import com.android.settings.Utils;
 import com.android.settings.core.PreferenceController;
 
 import java.util.List;
@@ -41,10 +42,10 @@
         mAm = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE);
     }
 
-    /** Hide "Factory reset" settings for secondary users. */
+    /** Hide "Factory reset" settings for secondary users, except demo users. */
     @Override
     public boolean isAvailable() {
-        return mUm.isAdminUser();
+        return mUm.isAdminUser() || Utils.isCarrierDemoUser(mContext);
     }
 
     @Override
diff --git a/tests/robotests/src/com/android/settings/system/FactoryResetPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/system/FactoryResetPreferenceControllerTest.java
index 1d15b42..bf0005c 100644
--- a/tests/robotests/src/com/android/settings/system/FactoryResetPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/system/FactoryResetPreferenceControllerTest.java
@@ -22,10 +22,14 @@
 import android.accounts.AccountManager;
 import android.content.Context;
 import android.os.UserManager;
+import android.provider.Settings;
 
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
+import com.android.settings.testutils.shadow.ShadowSecureSettings;
+import com.android.settings.testutils.shadow.ShadowUtils;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -33,7 +37,6 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.annotation.Config;
 
-
 @RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class FactoryResetPreferenceControllerTest {
@@ -57,6 +60,11 @@
         mController = new FactoryResetPreferenceController(mContext);
     }
 
+    @After
+    public void tearDown() {
+        ShadowUtils.reset();
+    }
+
     @Test
     public void isAvailable_systemUser() {
         when(mUserManager.isAdminUser()).thenReturn(true);
@@ -65,13 +73,29 @@
     }
 
     @Test
+    @Config(shadows = { ShadowSecureSettings.class, ShadowUtils.class })
     public void isAvailable_nonSystemUser() {
         when(mUserManager.isAdminUser()).thenReturn(false);
+        ShadowUtils.setIsCarrierDemoUser(false);
 
         assertThat(mController.isAvailable()).isFalse();
     }
 
     @Test
+    @Config(shadows = { ShadowSecureSettings.class, ShadowUtils.class })
+    public void isAvailable_carrierDemoUser() {
+        when(mUserManager.isAdminUser()).thenReturn(false);
+        ShadowUtils.setIsCarrierDemoUser(true);
+
+        final String carrierDemoModeSetting = "carrier_demo_mode";
+        when(mContext.getString(com.android.internal.R.string.config_carrierDemoModeSetting))
+                .thenReturn(carrierDemoModeSetting);
+        Settings.Secure.putInt(null, carrierDemoModeSetting, 1);
+
+        assertThat(mController.isAvailable()).isTrue();
+    }
+
+    @Test
     public void getPreferenceKey() {
         assertThat(mController.getPreferenceKey()).isEqualTo(FACTORY_RESET_KEY);
     }
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 87b9103..208fae3 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java
@@ -28,6 +28,7 @@
 public class ShadowUtils {
 
     private static IFingerprintManager sFingerprintManager = null;
+    private static boolean sIsCarrierDemoUser;
 
     @Implementation
     public static int enforceSameOwner(Context context, int userId) {
@@ -45,10 +46,20 @@
 
     public static void reset() {
         sFingerprintManager = null;
+        sIsCarrierDemoUser = false;
     }
 
     @Implementation
     public static boolean isWifiOnly(Context context) {
         return true;
     }
+
+    public static void setIsCarrierDemoUser(boolean isCarrierDemoUser) {
+        sIsCarrierDemoUser = isCarrierDemoUser;
+    }
+
+    @Implementation
+    public static boolean isCarrierDemoUser(Context context) {
+        return sIsCarrierDemoUser;
+    }
 }
