Loading services/java/com/android/server/print/PrintManagerService.java +13 −6 Original line number Diff line number Diff line Loading @@ -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(); } } } Loading @@ -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; } } } } Loading services/java/com/android/server/print/UserState.java +20 −0 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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(); Loading Loading @@ -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( Loading @@ -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) { Loading Loading
services/java/com/android/server/print/PrintManagerService.java +13 −6 Original line number Diff line number Diff line Loading @@ -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(); } } } Loading @@ -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; } } } } Loading
services/java/com/android/server/print/UserState.java +20 −0 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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(); Loading Loading @@ -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( Loading @@ -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) { Loading