diff --git a/tests/robotests/src/com/android/settings/notification/RedactionInterstitialTest.java b/tests/robotests/src/com/android/settings/notification/RedactionInterstitialTest.java
index 61fe025..a2ca62e 100644
--- a/tests/robotests/src/com/android/settings/notification/RedactionInterstitialTest.java
+++ b/tests/robotests/src/com/android/settings/notification/RedactionInterstitialTest.java
@@ -12,6 +12,7 @@
 import android.content.ContentResolver;
 import android.content.Intent;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.provider.Settings;
 import android.view.View;
 import android.widget.RadioButton;
@@ -20,7 +21,6 @@
 import com.android.settings.RestrictedRadioButton;
 import com.android.settings.notification.RedactionInterstitial.RedactionInterstitialFragment;
 import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
-import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settings.testutils.shadow.ShadowUtils;
 
 import org.junit.After;
@@ -30,12 +30,13 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowUserManager;
 
 @RunWith(RobolectricTestRunner.class)
 @Config(shadows = {
         ShadowUtils.class,
         ShadowRestrictedLockUtilsInternal.class,
-        ShadowUserManager.class,
 })
 public class RedactionInterstitialTest {
     private RedactionInterstitial mActivity;
@@ -103,7 +104,9 @@
     @Test
     public void managedProfileNoRestrictionsTest() {
         setupSettings(1 /* show */, 1 /* showUnredacted */);
-        ShadowUserManager.getShadow().addManagedProfile(UserHandle.myUserId());
+        final ShadowUserManager sum =
+                Shadow.extract(RuntimeEnvironment.application.getSystemService(UserManager.class));
+        sum.setManagedProfile(true);
         setupActivity();
 
         assertHideAllVisible(false);
@@ -114,7 +117,9 @@
     @Test
     public void managedProfileUnredactedRestrictionTest() {
         setupSettings(1 /* show */, 1 /* showUnredacted */);
-        ShadowUserManager.getShadow().addManagedProfile(UserHandle.myUserId());
+        final ShadowUserManager sum =
+                Shadow.extract(RuntimeEnvironment.application.getSystemService(UserManager.class));
+        sum.setManagedProfile(true);
         ShadowRestrictedLockUtilsInternal.setKeyguardDisabledFeatures(
                 KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
         setupActivity();
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
index d8703be..9a18c1f 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
@@ -99,15 +99,6 @@
     }
 
     @Implementation
-    protected boolean isManagedProfile(@UserIdInt int userId) {
-        return mManagedProfiles.contains(userId);
-    }
-
-    public void addManagedProfile(int userId) {
-        mManagedProfiles.add(userId);
-    }
-
-    @Implementation
     protected boolean isQuietModeEnabled(UserHandle userHandle) {
         return mIsQuietModeEnabled;
     }
