Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fd28d8eb authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by Android (Google) Code Review
Browse files

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

parents 754ea612 0de4834d
Loading
Loading
Loading
Loading
+9 −45
Original line number Diff line number Diff line
@@ -764,10 +764,9 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks,

    public void updateIfNeededLocked() {
        throwIfDestroyedLocked();
        if (readConfigurationLocked()) {
        readConfigurationLocked();
        onConfigurationChangedLocked();
    }
    }

    public void destroyLocked() {
        throwIfDestroyedLocked();
@@ -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;
    }

    /**
@@ -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,