OSDN Git Service

Deal with UserState#getEnabledPrintServices returning null.
authorPhilip P. Moltmann <moltmann@google.com>
Tue, 12 Jan 2016 16:54:55 +0000 (08:54 -0800)
committerPhilip P. Moltmann <moltmann@google.com>
Tue, 12 Jan 2016 17:13:21 +0000 (09:13 -0800)
Bug: 26492364
Change-Id: I234b1632168c88d32bdd134630442756701118b6

services/print/java/com/android/server/print/PrintManagerService.java
services/print/java/com/android/server/print/UserState.java

index 2e0866c..5abb6e7 100644 (file)
@@ -555,8 +555,14 @@ public final class PrintManagerService extends SystemService {
                         // to handle it as the change may affect ongoing print jobs.
                         UserState userState = getOrCreateUserStateLocked(getChangingUserId());
                         boolean stoppedSomePackages = false;
-                        Iterator<PrintServiceInfo> iterator = userState.getEnabledPrintServices()
-                                .iterator();
+
+                        List<PrintServiceInfo> enabledServices = userState
+                                .getEnabledPrintServices();
+                        if (enabledServices == null) {
+                            return false;
+                        }
+
+                        Iterator<PrintServiceInfo> iterator = enabledServices.iterator();
                         while (iterator.hasNext()) {
                             ComponentName componentName = iterator.next().getComponentName();
                             String componentPackage = componentName.getPackageName();
index 4198217..78edc4d 100644 (file)
@@ -20,6 +20,7 @@ import static android.content.pm.PackageManager.GET_META_DATA;
 import static android.content.pm.PackageManager.GET_SERVICES;
 import static android.content.pm.PackageManager.MATCH_DEBUG_TRIAGED_MISSING;
 
+import android.annotation.Nullable;
 import android.app.PendingIntent;
 import android.content.ComponentName;
 import android.content.Context;
@@ -336,7 +337,7 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks {
         mSpooler.setPrintJobState(printJobId, PrintJobInfo.STATE_QUEUED, null);
     }
 
-    public List<PrintServiceInfo> getEnabledPrintServices() {
+    public @Nullable List<PrintServiceInfo> getEnabledPrintServices() {
         synchronized (mLock) {
             List<PrintServiceInfo> enabledServices = null;
             final int installedServiceCount = mInstalledServices.size();