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

Commit 48df8b85 authored by Svetoslav's avatar Svetoslav Committed by Android (Google) Code Review
Browse files

Merge "Removed print services not fully cleaned up."

parents a9099693 dbcc95d4
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -401,13 +401,17 @@ public final class PrintManagerService extends IPrintManager.Stub {
            @Override
            public void onPackageModified(String packageName) {
                synchronized (mLock) {
                    boolean servicesChanged = false;
                    UserState userState = getOrCreateUserStateLocked(getChangingUserId());
                    Iterator<ComponentName> iterator = userState.getEnabledServices().iterator();
                    while (iterator.hasNext()) {
                        ComponentName componentName = iterator.next();
                        if (packageName.equals(componentName.getPackageName())) {
                            userState.updateIfNeededLocked();
                            servicesChanged = true;
                        }
                    }
                    if (servicesChanged) {
                        userState.updateIfNeededLocked();
                    }
                }
            }
@@ -415,18 +419,21 @@ public final class PrintManagerService extends IPrintManager.Stub {
            @Override
            public void onPackageRemoved(String packageName, int uid) {
                synchronized (mLock) {
                    boolean servicesRemoved = false;
                    UserState userState = getOrCreateUserStateLocked(getChangingUserId());
                    Iterator<ComponentName> iterator = userState.getEnabledServices().iterator();
                    while (iterator.hasNext()) {
                        ComponentName componentName = iterator.next();
                        if (packageName.equals(componentName.getPackageName())) {
                            iterator.remove();
                            servicesRemoved = true;
                        }
                    }
                    if (servicesRemoved) {
                        persistComponentNamesToSettingLocked(
                                Settings.Secure.ENABLED_PRINT_SERVICES,
                                userState.getEnabledServices(), getChangingUserId());
                        userState.updateIfNeededLocked();
                            return;
                        }
                    }
                }
            }
+20 −0
Original line number Diff line number Diff line
@@ -71,6 +71,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
@@ -594,6 +595,8 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks {
                    .append(installedService.getSettingsActivityName()).println();
            pw.append(installedServicePrefix).append(tab).append("addPrintersActivity=")
                    .append(installedService.getAddPrintersActivityName()).println();
            pw.append(installedServicePrefix).append(tab).append("avancedOptionsActivity=")
                   .append(installedService.getAdvancedOptionsActivityName()).println();
        }

        pw.append(prefix).append(tab).append("enabled services:").println();
@@ -787,11 +790,16 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks {
    }

    private void onConfigurationChangedLocked() {
        Set<ComponentName> installedComponents = new ArraySet<ComponentName>();

        final int installedCount = mInstalledServices.size();
        for (int i = 0; i < installedCount; i++) {
            ResolveInfo resolveInfo = mInstalledServices.get(i).getResolveInfo();
            ComponentName serviceName = new ComponentName(resolveInfo.serviceInfo.packageName,
                    resolveInfo.serviceInfo.name);

            installedComponents.add(serviceName);

            if (mEnabledServices.contains(serviceName)) {
                if (!mActiveServices.containsKey(serviceName)) {
                    RemotePrintService service = new RemotePrintService(
@@ -805,6 +813,18 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks {
                }
            }
        }

        Iterator<Map.Entry<ComponentName, RemotePrintService>> iterator =
                mActiveServices.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<ComponentName, RemotePrintService> entry = iterator.next();
            ComponentName serviceName = entry.getKey();
            RemotePrintService service = entry.getValue();
            if (!installedComponents.contains(serviceName)) {
                removeServiceLocked(service);
                iterator.remove();
            }
        }
    }

    private void addServiceLocked(RemotePrintService service) {