Merge "Always reload print services" into nyc-mr1-dev

This commit is contained in:
Philip P. Moltmann
2016-06-28 18:15:37 +00:00
committed by Android (Google) Code Review

View File

@@ -764,9 +764,8 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks,
public void updateIfNeededLocked() {
throwIfDestroyedLocked();
if (readConfigurationLocked()) {
onConfigurationChangedLocked();
}
readConfigurationLocked();
onConfigurationChangedLocked();
}
public void destroyLocked() {
@@ -841,14 +840,12 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks,
pw.println();
}
private boolean readConfigurationLocked() {
boolean somethingChanged = false;
somethingChanged |= readInstalledPrintServicesLocked();
somethingChanged |= readDisabledPrintServicesLocked();
return somethingChanged;
private void readConfigurationLocked() {
readInstalledPrintServicesLocked();
readDisabledPrintServicesLocked();
}
private boolean readInstalledPrintServicesLocked() {
private void readInstalledPrintServicesLocked() {
Set<PrintServiceInfo> tempPrintServices = new HashSet<PrintServiceInfo>();
List<ResolveInfo> installedServices = mContext.getPackageManager()
@@ -872,39 +869,8 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks,
tempPrintServices.add(PrintServiceInfo.create(installedService, mContext));
}
boolean someServiceChanged = false;
if (tempPrintServices.size() != mInstalledServices.size()) {
someServiceChanged = true;
} else {
for (PrintServiceInfo newService: tempPrintServices) {
final int oldServiceIndex = mInstalledServices.indexOf(newService);
if (oldServiceIndex < 0) {
someServiceChanged = true;
break;
}
// PrintServiceInfo#equals compares only the id not all members,
// so we are also comparing the members coming from meta-data.
PrintServiceInfo oldService = mInstalledServices.get(oldServiceIndex);
if (!TextUtils.equals(oldService.getAddPrintersActivityName(),
newService.getAddPrintersActivityName())
|| !TextUtils.equals(oldService.getAdvancedOptionsActivityName(),
newService.getAdvancedOptionsActivityName())
|| !TextUtils.equals(oldService.getSettingsActivityName(),
newService.getSettingsActivityName())) {
someServiceChanged = true;
break;
}
}
}
if (someServiceChanged) {
mInstalledServices.clear();
mInstalledServices.addAll(tempPrintServices);
return true;
}
return false;
mInstalledServices.clear();
mInstalledServices.addAll(tempPrintServices);
}
/**
@@ -944,16 +910,14 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks,
*
* @return true if the state changed.
*/
private boolean readDisabledPrintServicesLocked() {
private void readDisabledPrintServicesLocked() {
Set<ComponentName> tempDisabledServiceNameSet = new HashSet<ComponentName>();
readPrintServicesFromSettingLocked(Settings.Secure.DISABLED_PRINT_SERVICES,
tempDisabledServiceNameSet);
if (!tempDisabledServiceNameSet.equals(mDisabledServices)) {
mDisabledServices.clear();
mDisabledServices.addAll(tempDisabledServiceNameSet);
return true;
}
return false;
}
private void readPrintServicesFromSettingLocked(String setting,