Fix state dumping when service stopped

Avoid a NullPointerException.

Bug: 178169250
Test: Command line testing
Change-Id: If01e31fc72c3284dacef8735fd997a7783faf6e0
diff --git a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerService.java b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerService.java
index ca4a640..6719695 100644
--- a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerService.java
+++ b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerService.java
@@ -437,8 +437,11 @@
         }, BLOCKING_OP_WAIT_DURATION_MILLIS);
     }
 
-    /** Returns a snapshot of the current controller state for tests. */
-    @NonNull
+    /**
+     * Returns a snapshot of the current controller state for tests. Returns {@code null} if the
+     * service is stopped.
+     */
+    @Nullable
     LocationTimeZoneManagerServiceState getStateForTests() {
         enforceManageTimeZoneDetectorPermission();
 
diff --git a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java
index bdf4a70..40638080 100644
--- a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java
+++ b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java
@@ -217,6 +217,11 @@
             return 1;
         }
 
+        if (state == null) {
+            // Controller is stopped.
+            return 0;
+        }
+
         DualDumpOutputStream outputStream;
         boolean useProto = Objects.equals(DUMP_STATE_OPTION_PROTO, getNextOption());
         if (useProto) {