Merge "Refactor power menu bug reporting flow to work for multiple admins"

This commit is contained in:
Nikhil Kumar
2023-01-18 07:56:03 +00:00
committed by Android (Google) Code Review
3 changed files with 25 additions and 23 deletions

View File

@@ -78,7 +78,7 @@ public class BugReportHandlerUtil {
boolean needToResetOutdatedSettings = false;
if (!isBugreportAllowlistedApp(handlerApp)) {
handlerApp = getDefaultBugReportHandlerApp(context);
handlerUser = UserHandle.USER_SYSTEM;
handlerUser = context.getUserId();
} else if (getBugReportHandlerAppReceivers(context, handlerApp, handlerUser).isEmpty()) {
// It looks like the settings are outdated, need to reset outdated settings.
//
@@ -89,7 +89,7 @@ public class BugReportHandlerUtil {
// The chosen bugreport handler app is outdated because the profile is removed,
// so need to reset outdated settings
handlerApp = getDefaultBugReportHandlerApp(context);
handlerUser = UserHandle.USER_SYSTEM;
handlerUser = context.getUserId();
needToResetOutdatedSettings = true;
}
@@ -99,7 +99,7 @@ public class BugReportHandlerUtil {
// bugreport, so change to let shell to handle a bugreport and need to reset
// settings.
handlerApp = SHELL_APP_PACKAGE;
handlerUser = UserHandle.USER_SYSTEM;
handlerUser = context.getUserId();
needToResetOutdatedSettings = true;
}
@@ -112,13 +112,13 @@ public class BugReportHandlerUtil {
private String getCustomBugReportHandlerApp(Context context) {
// Get the package of custom bugreport handler app
return Settings.Global.getString(context.getContentResolver(),
Settings.Global.CUSTOM_BUGREPORT_HANDLER_APP);
return Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.CUSTOM_BUGREPORT_HANDLER_APP);
}
private int getCustomBugReportHandlerUser(Context context) {
return Settings.Global.getInt(context.getContentResolver(),
Settings.Global.CUSTOM_BUGREPORT_HANDLER_USER, UserHandle.USER_NULL);
return Settings.Secure.getInt(context.getContentResolver(),
Settings.Secure.CUSTOM_BUGREPORT_HANDLER_USER, UserHandle.USER_NULL);
}
private String getDefaultBugReportHandlerApp(Context context) {
@@ -164,22 +164,24 @@ public class BugReportHandlerUtil {
return validBugReportHandlerApplicationInfos;
}
// Add "Shell with system user" as System default preference on top of screen
int currentUser = UserHandle.getCallingUserId();
// Add "Shell" as user's default preference on top of screen
if (bugreportAllowlistedPackages.contains(SHELL_APP_PACKAGE)
&& !getBugReportHandlerAppReceivers(context, SHELL_APP_PACKAGE,
UserHandle.USER_SYSTEM).isEmpty()) {
currentUser).isEmpty()) {
try {
validBugReportHandlerApplicationInfos.add(
Pair.create(
context.getPackageManager().getApplicationInfo(SHELL_APP_PACKAGE,
PackageManager.MATCH_ANY_USER), UserHandle.USER_SYSTEM)
PackageManager.MATCH_ANY_USER), currentUser)
);
} catch (PackageManager.NameNotFoundException e) {
}
}
final UserManager userManager = context.getSystemService(UserManager.class);
final List<UserInfo> profileList = userManager.getProfiles(UserHandle.getCallingUserId());
final List<UserInfo> profileList = userManager.getProfiles(currentUser);
// Only add non-Shell app as normal preference
final List<String> nonShellPackageList = bugreportAllowlistedPackages.stream()
.filter(pkg -> !SHELL_APP_PACKAGE.equals(pkg)).collect(Collectors.toList());
@@ -228,11 +230,11 @@ public class BugReportHandlerUtil {
private void setBugreportHandlerAppAndUser(Context context, String handlerApp,
int handlerUser) {
Settings.Global.putString(context.getContentResolver(),
Settings.Global.CUSTOM_BUGREPORT_HANDLER_APP,
Settings.Secure.putString(context.getContentResolver(),
Settings.Secure.CUSTOM_BUGREPORT_HANDLER_APP,
handlerApp);
Settings.Global.putInt(context.getContentResolver(),
Settings.Global.CUSTOM_BUGREPORT_HANDLER_USER, handlerUser);
Settings.Secure.putInt(context.getContentResolver(),
Settings.Secure.CUSTOM_BUGREPORT_HANDLER_USER, handlerUser);
}
/**

View File

@@ -59,7 +59,7 @@ public class BugReportInPowerPreferenceController extends
public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean isEnabled = (Boolean) newValue;
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Global.BUGREPORT_IN_POWER_MENU,
Settings.Secure.BUGREPORT_IN_POWER_MENU,
isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF);
return true;
}
@@ -67,7 +67,7 @@ public class BugReportInPowerPreferenceController extends
@Override
public void updateState(Preference preference) {
final int mode = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Global.BUGREPORT_IN_POWER_MENU, SETTING_VALUE_OFF);
Settings.Secure.BUGREPORT_IN_POWER_MENU, SETTING_VALUE_OFF);
((SwitchPreference) mPreference).setChecked(mode != SETTING_VALUE_OFF);
}
@@ -75,7 +75,7 @@ public class BugReportInPowerPreferenceController extends
protected void onDeveloperOptionsSwitchDisabled() {
super.onDeveloperOptionsSwitchDisabled();
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Global.BUGREPORT_IN_POWER_MENU, SETTING_VALUE_OFF);
Settings.Secure.BUGREPORT_IN_POWER_MENU, SETTING_VALUE_OFF);
((SwitchPreference) mPreference).setChecked(false);
}
}

View File

@@ -99,7 +99,7 @@ public class BugReportInPowerPreferenceControllerTest {
mController.onPreferenceChange(mPreference, false /* new value */);
int mode = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Global.BUGREPORT_IN_POWER_MENU, -1 /* default */);
Settings.Secure.BUGREPORT_IN_POWER_MENU, -1 /* default */);
assertThat(mode).isEqualTo(SETTING_VALUE_OFF);
}
@@ -111,7 +111,7 @@ public class BugReportInPowerPreferenceControllerTest {
mController.onPreferenceChange(mPreference, true /* new value */);
int mode = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Global.BUGREPORT_IN_POWER_MENU, -1 /* default */);
Settings.Secure.BUGREPORT_IN_POWER_MENU, -1 /* default */);
assertThat(mode).isEqualTo(SETTING_VALUE_ON);
}
@@ -121,7 +121,7 @@ public class BugReportInPowerPreferenceControllerTest {
public void updateState_settingsOn_preferenceShouldBeChecked() {
when(mUserManager.hasUserRestriction(anyString())).thenReturn(false);
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Global.BUGREPORT_IN_POWER_MENU, SETTING_VALUE_ON);
Settings.Secure.BUGREPORT_IN_POWER_MENU, SETTING_VALUE_ON);
mController.displayPreference(mScreen);
mController.updateState(mPreference);
@@ -133,7 +133,7 @@ public class BugReportInPowerPreferenceControllerTest {
public void updateState_settingsOff_preferenceShouldNotBeChecked() {
when(mUserManager.hasUserRestriction(anyString())).thenReturn(false);
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Global.BUGREPORT_IN_POWER_MENU, SETTING_VALUE_OFF);
Settings.Secure.BUGREPORT_IN_POWER_MENU, SETTING_VALUE_OFF);
mController.displayPreference(mScreen);
mController.updateState(mPreference);
@@ -148,7 +148,7 @@ public class BugReportInPowerPreferenceControllerTest {
mController.onDeveloperOptionsSwitchDisabled();
int mode = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Global.BUGREPORT_IN_POWER_MENU, -1 /* default */);
Settings.Secure.BUGREPORT_IN_POWER_MENU, -1 /* default */);
assertThat(mode).isEqualTo(SETTING_VALUE_OFF);
verify(mPreference).setChecked(false);