diff --git a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java
index 685da03..40138b4 100644
--- a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java
+++ b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java
@@ -141,17 +141,14 @@
     }
 
     private boolean isNotCurrentUserOrProfile(ComponentName admin, int userId) {
-        return !isFinancedDevice()
-                && (!RestrictedLockUtilsInternal.isAdminInCurrentUserOrProfile(mActivity, admin)
-                        || !RestrictedLockUtils.isCurrentUserOrProfile(mActivity, userId));
+        return !RestrictedLockUtilsInternal.isAdminInCurrentUserOrProfile(mActivity, admin)
+                || !RestrictedLockUtils.isCurrentUserOrProfile(mActivity, userId);
     }
 
     @VisibleForTesting
     void setAdminSupportIcon(View root, ComponentName admin, int userId) {
         ImageView supportIconView = root.requireViewById(R.id.admin_support_icon);
-        if (isFinancedDevice()) {
-            supportIconView.setVisibility(View.GONE);
-        } else if (isNotCurrentUserOrProfile(admin, userId)) {
+        if (isNotCurrentUserOrProfile(admin, userId)) {
             supportIconView.setImageDrawable(
                     mActivity.getDrawable(com.android.internal.R.drawable.ic_info));
 
diff --git a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java
index 1ff1d79..3929e84 100644
--- a/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelperTest.java
@@ -36,10 +36,8 @@
 import android.os.Process;
 import android.os.UserHandle;
 import android.os.UserManager;
-import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
-import android.widget.ImageView;
 import android.widget.TextView;
 
 import androidx.appcompat.app.AlertDialog;
@@ -109,20 +107,6 @@
     }
 
     @Test
-    public void testSetAdminSupportIconForFinancedDevice_adminSupportIconIsGone() {
-        final ShadowDevicePolicyManager dpmShadow = ShadowDevicePolicyManager.getShadow();
-        final ViewGroup view = new FrameLayout(mActivity);
-        final ImageView supportIconImageView = createAdminSupportIconImageView(view, mActivity);
-        final ComponentName component = new ComponentName("some.package.name",
-                "some.package.name.SomeClass");
-        setupFinancedDevice(dpmShadow);
-
-        mHelper.setAdminSupportIcon(view, component, 123);
-
-        assertEquals(View.GONE, supportIconImageView.getVisibility());
-    }
-
-    @Test
     public void testSetAdminSupportTitle() {
         final ViewGroup view = new FrameLayout(mActivity);
         final TextView textView = createAdminSupportDialogTitleTextView(view, mActivity);
@@ -260,14 +244,6 @@
         verify(builder, never()).setNeutralButton(anyInt(), any());
     }
 
-    private static ImageView createAdminSupportIconImageView(final ViewGroup view,
-            final Activity activity) {
-        final ImageView supportIconView = new ImageView(activity);
-        supportIconView.setId(R.id.admin_support_icon);
-        view.addView(supportIconView);
-        return supportIconView;
-    }
-
     private static TextView createAdminSupportDialogTitleTextView(final ViewGroup view,
             final Activity activity) {
         final TextView textView = new TextView(activity);
