Merge changes I0b32f2de,I4d58a25a

* changes:
  Call initializeBluetoothAdapter on PHASE_BOOT_COMPLETED
  Use IBinder as key of scanTypeScanListenerRecordMap
diff --git a/nearby/service/java/com/android/server/nearby/NearbyServiceImpl.java b/nearby/service/java/com/android/server/nearby/NearbyServiceImpl.java
index 59ecae1..04e73a5 100644
--- a/nearby/service/java/com/android/server/nearby/NearbyServiceImpl.java
+++ b/nearby/service/java/com/android/server/nearby/NearbyServiceImpl.java
@@ -50,7 +50,7 @@
                     // Have to do this logic in listener. Even during PHASE_BOOT_COMPLETED
                     // phase, BluetoothAdapter is not null, the BleScanner is null.
                     Log.v(TAG, "Initiating BluetoothAdapter when Bluetooth is turned on.");
-                    mSystemInjector.onBluetoothReady();
+                    mSystemInjector.initializeBluetoothAdapter();
                 }
             }
         }
@@ -74,6 +74,7 @@
     }
 
     void onSystemReady() {
+        mSystemInjector.initializeBluetoothAdapter();
         mContext.registerReceiver(mBluetoothReceiver,
                 new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
     }
@@ -93,7 +94,7 @@
             return mBluetoothAdapter;
         }
 
-        synchronized void onBluetoothReady() {
+        synchronized void initializeBluetoothAdapter() {
             if (mBluetoothAdapter != null) {
                 return;
             }
@@ -104,4 +105,5 @@
             mBluetoothAdapter = manager.getAdapter();
         }
     }
+
 }
diff --git a/nearby/service/java/com/android/server/nearby/provider/DiscoveryProviderManager.java b/nearby/service/java/com/android/server/nearby/provider/DiscoveryProviderManager.java
index fb1afb0..72c4b75 100644
--- a/nearby/service/java/com/android/server/nearby/provider/DiscoveryProviderManager.java
+++ b/nearby/service/java/com/android/server/nearby/provider/DiscoveryProviderManager.java
@@ -22,6 +22,7 @@
 import android.nearby.IScanListener;
 import android.nearby.NearbyDeviceParcelable;
 import android.nearby.ScanRequest;
+import android.os.IBinder;
 import android.os.RemoteException;
 import android.util.Log;
 
@@ -43,13 +44,13 @@
     private @ScanRequest.ScanMode int mScanMode;
 
     @GuardedBy("mLock")
-    private Map<IScanListener, ScanListenerRecord> mScanTypeScanListenerRecordMap;
+    private Map<IBinder, ScanListenerRecord> mScanTypeScanListenerRecordMap;
 
     @Override
     public void onNearbyDeviceDiscovered(NearbyDeviceParcelable nearbyDevice) {
         synchronized (mLock) {
-            for (IScanListener listener : mScanTypeScanListenerRecordMap.keySet()) {
-                ScanListenerRecord record = mScanTypeScanListenerRecordMap.get(listener);
+            for (IBinder listenerBinder : mScanTypeScanListenerRecordMap.keySet()) {
+                ScanListenerRecord record = mScanTypeScanListenerRecordMap.get(listenerBinder);
                 if (record == null) {
                     Log.w(TAG, "DiscoveryProviderManager cannot find the scan record.");
                     continue;
@@ -76,9 +77,10 @@
      */
     public void registerScanListener(ScanRequest scanRequest, IScanListener listener) {
         synchronized (mLock) {
-            if (mScanTypeScanListenerRecordMap.containsKey(listener)) {
-                ScanRequest savedScanRequest = mScanTypeScanListenerRecordMap.get(
-                        listener).getScanRequest();
+            IBinder listenerBinder = listener.asBinder();
+            if (mScanTypeScanListenerRecordMap.containsKey(listener.asBinder())) {
+                ScanRequest savedScanRequest = mScanTypeScanListenerRecordMap
+                        .get(listenerBinder).getScanRequest();
                 if (scanRequest.equals(savedScanRequest)) {
                     Log.d(TAG, "Already registered the scanRequest: " + scanRequest);
                     return;
@@ -87,7 +89,7 @@
 
             startProviders(scanRequest);
 
-            mScanTypeScanListenerRecordMap.put(listener,
+            mScanTypeScanListenerRecordMap.put(listenerBinder,
                     new ScanListenerRecord(scanRequest, listener));
             if (mScanMode < scanRequest.getScanMode()) {
                 mScanMode = scanRequest.getScanMode();
@@ -100,15 +102,17 @@
      * Unregisters the listener in the manager and adjusts the scan mode if necessary afterwards.
      */
     public void unregisterScanListener(IScanListener listener) {
+        IBinder listenerBinder = listener.asBinder();
         synchronized (mLock) {
-            if (!mScanTypeScanListenerRecordMap.containsKey(listener)) {
+            if (!mScanTypeScanListenerRecordMap.containsKey(listenerBinder)) {
                 Log.w(TAG,
-                        "Cannot unregister the scanRequest %s because the request is never "
+                        "Cannot unregister the scanRequest because the request is never "
                                 + "registered.");
                 return;
             }
 
-            ScanListenerRecord removedRecord = mScanTypeScanListenerRecordMap.remove(listener);
+            ScanListenerRecord removedRecord = mScanTypeScanListenerRecordMap
+                    .remove(listenerBinder);
             if (mScanTypeScanListenerRecordMap.isEmpty()) {
                 stopProviders();
                 return;