diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java index db2cd91374e5a..c3e163fbeecc4 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java @@ -733,7 +733,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene @VisibleForTesting boolean shouldDisplayBugReport(UserInfo currentUser) { return mGlobalSettings.getInt(Settings.Global.BUGREPORT_IN_POWER_MENU, 0) != 0 - && (currentUser == null || currentUser.isPrimary()); + && (currentUser == null || currentUser.isAdmin()); } @Override @@ -1058,8 +1058,9 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene @Override public boolean showBeforeProvisioning() { - return Build.isDebuggable() && mGlobalSettings.getInt( - Settings.Global.BUGREPORT_IN_POWER_MENU, 0) != 0; + return Build.isDebuggable() && mGlobalSettings.getIntForUser( + Settings.Global.BUGREPORT_IN_POWER_MENU, 0, getCurrentUser().id) != 0 + && getCurrentUser().isAdmin(); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java index d52616bfefcc0..c8a352dd7cd27 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java @@ -16,11 +16,12 @@ package com.android.systemui.globalactions; +import static android.content.pm.UserInfo.FLAG_ADMIN; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; @@ -32,11 +33,13 @@ import android.app.IActivityManager; import android.app.admin.DevicePolicyManager; import android.app.trust.TrustManager; import android.content.pm.PackageManager; +import android.content.pm.UserInfo; import android.content.res.Resources; import android.graphics.Color; import android.media.AudioManager; import android.os.Handler; import android.os.UserManager; +import android.provider.Settings; import android.service.dreams.IDreamManager; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; @@ -552,10 +555,32 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase { @Test public void testBugreportAction_whenDebugMode_shouldOfferBugreportButtonBeforeProvisioning() { - doReturn(1).when(mGlobalSettings).getInt(anyString(), anyInt()); + UserInfo currentUser = mockCurrentUser(FLAG_ADMIN); + + when(mGlobalActionsDialogLite.getCurrentUser()).thenReturn(currentUser); + doReturn(1).when(mGlobalSettings) + .getIntForUser(Settings.Global.BUGREPORT_IN_POWER_MENU, 0, currentUser.id); GlobalActionsDialogLite.BugReportAction bugReportAction = mGlobalActionsDialogLite.makeBugReportActionForTesting(); assertThat(bugReportAction.showBeforeProvisioning()).isTrue(); } + + @Test + public void testBugreportAction_whenUserIsNotAdmin_noBugReportActionBeforeProvisioning() { + UserInfo currentUser = mockCurrentUser(0); + + when(mGlobalActionsDialogLite.getCurrentUser()).thenReturn(currentUser); + doReturn(1).when(mGlobalSettings) + .getIntForUser(Settings.Global.BUGREPORT_IN_POWER_MENU, 0, currentUser.id); + + GlobalActionsDialogLite.BugReportAction bugReportAction = + mGlobalActionsDialogLite.makeBugReportActionForTesting(); + assertThat(bugReportAction.showBeforeProvisioning()).isFalse(); + } + + private UserInfo mockCurrentUser(int flags) { + return new UserInfo(10, "A User", flags); + + } } diff --git a/services/core/java/com/android/server/policy/LegacyGlobalActions.java b/services/core/java/com/android/server/policy/LegacyGlobalActions.java index 54ece7384f7a3..983b7f463a1c2 100644 --- a/services/core/java/com/android/server/policy/LegacyGlobalActions.java +++ b/services/core/java/com/android/server/policy/LegacyGlobalActions.java @@ -283,7 +283,7 @@ class LegacyGlobalActions implements DialogInterface.OnDismissListener, DialogIn mItems.add(mAirplaneModeOn); } else if (GLOBAL_ACTION_KEY_BUGREPORT.equals(actionKey)) { if (Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.BUGREPORT_IN_POWER_MENU, 0) != 0 && isCurrentUserOwner()) { + Settings.Global.BUGREPORT_IN_POWER_MENU, 0) != 0 && isCurrentUserAdmin()) { mItems.add(new BugReportAction()); } } else if (GLOBAL_ACTION_KEY_SILENT.equals(actionKey)) { @@ -535,9 +535,9 @@ class LegacyGlobalActions implements DialogInterface.OnDismissListener, DialogIn } } - private boolean isCurrentUserOwner() { + private boolean isCurrentUserAdmin() { UserInfo currentUser = getCurrentUser(); - return currentUser == null || currentUser.isPrimary(); + return currentUser == null || currentUser.isAdmin(); } private void addUsersToMenu(ArrayList items) {