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;