Add support for sources in Geofencing APIs.

Support setting the source when adding geofences.
b/14117199

Surface the source when FLP geofence changes state.
b/14119200

Change-Id: I50dc40a9caee400594e1778c98e284e0db0d5e66
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index 3a4e2ee..132aa55 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -482,33 +482,32 @@
         }
 
         // bind to fused hardware provider if supported
+        FlpHardwareProvider flpHardwareProvider = FlpHardwareProvider.getInstance(mContext);
         if (FlpHardwareProvider.isSupported()) {
-          FlpHardwareProvider flpHardwareProvider =
-              FlpHardwareProvider.getInstance(mContext);
-          FusedProxy fusedProxy = FusedProxy.createAndBind(
-                  mContext,
-                  mLocationHandler,
-                  flpHardwareProvider.getLocationHardware(),
-                  com.android.internal.R.bool.config_enableHardwareFlpOverlay,
-                  com.android.internal.R.string.config_hardwareFlpPackageName,
-                  com.android.internal.R.array.config_locationProviderPackageNames);
-          if(fusedProxy == null) {
-              Slog.e(TAG, "Unable to bind FusedProxy.");
-          }
-
-          // bind to geofence provider
-          GeofenceProxy provider = GeofenceProxy.createAndBind(mContext,
-                  com.android.internal.R.bool.config_enableGeofenceOverlay,
-                  com.android.internal.R.string.config_geofenceProviderPackageName,
-                  com.android.internal.R.array.config_locationProviderPackageNames,
-                  mLocationHandler,
-                  gpsProvider.getGpsGeofenceProxy(),
-                  flpHardwareProvider.getGeofenceHardware());
-          if (provider == null) {
-              Slog.e(TAG,  "Unable to bind FLP Geofence proxy.");
-          }
+            FusedProxy fusedProxy = FusedProxy.createAndBind(
+                    mContext,
+                    mLocationHandler,
+                    flpHardwareProvider.getLocationHardware(),
+                    com.android.internal.R.bool.config_enableHardwareFlpOverlay,
+                    com.android.internal.R.string.config_hardwareFlpPackageName,
+                    com.android.internal.R.array.config_locationProviderPackageNames);
+            if (fusedProxy == null) {
+                Slog.e(TAG, "Unable to bind FusedProxy.");
+            }
         } else {
-          Slog.e(TAG, "FLP HAL not supported.");
+            Slog.e(TAG, "FLP HAL not supported");
+        }
+
+        // bind to geofence provider
+        GeofenceProxy provider = GeofenceProxy.createAndBind(
+                mContext,com.android.internal.R.bool.config_enableGeofenceOverlay,
+                com.android.internal.R.string.config_geofenceProviderPackageName,
+                com.android.internal.R.array.config_locationProviderPackageNames,
+                mLocationHandler,
+                gpsProvider.getGpsGeofenceProxy(),
+                flpHardwareProvider.getGeofenceHardware());
+        if (provider == null) {
+            Slog.e(TAG,  "Unable to bind FLP Geofence proxy.");
         }
 
         // bind to the hardware activity recognition if supported