location: dump LocationProvider internal state

For each location provider, call getInternalState() to see if it has any
state information to include in a bugreport. If the returned string is not
null, then print a header with the provided name followed by the returned
string.

Change-Id: I0a388d7fba14ac8cadcb80eda0a0ceb95032410b
Signed-off-by: Fred Fettinger <fred.fettinger@motorola.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java
index 8d00deb..7aa092a 100644
--- a/services/java/com/android/server/LocationManagerService.java
+++ b/services/java/com/android/server/LocationManagerService.java
@@ -765,7 +765,9 @@
             pw.println(prefix + "mMinTime=" + mMinTime + " mMinDistance=" + mMinDistance);
             pw.println(prefix + "mUid=" + mUid);
             pw.println(prefix + "mLastFixBroadcast:");
-            mLastFixBroadcast.dump(new PrintWriterPrinter(pw), prefix + "  ");
+            if (mLastFixBroadcast != null) {
+                mLastFixBroadcast.dump(new PrintWriterPrinter(pw), prefix + "  ");
+            }
             pw.println(prefix + "mLastStatusBroadcast=" + mLastStatusBroadcast);
         }
     }
@@ -1954,6 +1956,13 @@
                     i.getValue().dump(pw, "      ");
                 }
             }
+            for (LocationProviderInterface provider: mProviders) {
+                String state = provider.getInternalState();
+                if (state != null) {
+                    pw.println(provider.getName() + " Internal State:");
+                    pw.write(state);
+                }
+            }
         }
     }
 }