Chromium Code Reviews| Index: device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java |
| diff --git a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java |
| index 8f14d298e1065d973325c7870de22253f3660b20..242f5efda02f6e13ec1ed86f82052ae8ecb4cdef 100644 |
| --- a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java |
| +++ b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java |
| @@ -46,13 +46,15 @@ import java.util.UUID; |
| class Wrappers { |
| private static final String TAG = "Bluetooth"; |
| + public static final int DEVICE_CLASS_UNSPECIFIED = 0x1F00; |
| + |
| /** |
| * Wraps android.bluetooth.BluetoothAdapter. |
| */ |
| static class BluetoothAdapterWrapper { |
| private final BluetoothAdapter mAdapter; |
| protected final ContextWrapper mContext; |
| - protected final BluetoothLeScannerWrapper mScanner; |
| + protected BluetoothLeScannerWrapper mScannerWrapper; |
| /** |
| * Creates a BluetoothAdapterWrapper using the default |
| @@ -94,32 +96,32 @@ class Wrappers { |
| Log.i(TAG, "BluetoothAdapterWrapper.create failed: Default adapter not found."); |
| return null; |
| } else { |
| - return new BluetoothAdapterWrapper(adapter, new ContextWrapper(context), |
| - new BluetoothLeScannerWrapper(adapter.getBluetoothLeScanner())); |
| + return new BluetoothAdapterWrapper(adapter, new ContextWrapper(context)); |
| } |
| } |
| - public BluetoothAdapterWrapper(BluetoothAdapter adapter, ContextWrapper context, |
| - BluetoothLeScannerWrapper scanner) { |
| + public BluetoothAdapterWrapper(BluetoothAdapter adapter, ContextWrapper context) { |
| mAdapter = adapter; |
| mContext = context; |
| - mScanner = scanner; |
| } |
| - public ContextWrapper getContext() { |
| - return mContext; |
| + public String getAddress() { |
| + return mAdapter.getAddress(); |
| } |
| public BluetoothLeScannerWrapper getBluetoothLeScanner() { |
| - return mScanner; |
| - } |
| - |
| - public boolean isEnabled() { |
| - return mAdapter.isEnabled(); |
| + BluetoothLeScanner scanner = mAdapter.getBluetoothLeScanner(); |
| + if (scanner == null) { |
| + return null; |
| + } |
| + if (mScannerWrapper == null) { |
| + mScannerWrapper = new BluetoothLeScannerWrapper(scanner); |
| + } |
| + return mScannerWrapper; |
| } |
| - public String getAddress() { |
| - return mAdapter.getAddress(); |
| + public ContextWrapper getContext() { |
| + return mContext; |
| } |
| public String getName() { |
| @@ -133,6 +135,18 @@ class Wrappers { |
| public boolean isDiscovering() { |
| return mAdapter.isDiscovering(); |
| } |
| + |
| + public boolean isEnabled() { |
| + return mAdapter.isEnabled(); |
| + } |
| + |
| + public boolean setPowered(boolean powered) { |
|
scheib
2016/02/05 18:06:19
The wrapper should mimic the Android API as closel
perja
2016/02/08 14:48:31
Done.
|
| + if (powered) { |
| + return mAdapter.enable(); |
| + } else { |
| + return mAdapter.disable(); |
| + } |
| + } |
| } |
| /** |
| @@ -155,7 +169,7 @@ class Wrappers { |
| * Wraps android.bluetooth.BluetoothLeScanner. |
| */ |
| static class BluetoothLeScannerWrapper { |
| - private final BluetoothLeScanner mScanner; |
| + protected final BluetoothLeScanner mScanner; |
| private final HashMap<ScanCallbackWrapper, ForwardScanCallbackToWrapper> mCallbacks; |
| public BluetoothLeScannerWrapper(BluetoothLeScanner scanner) { |
| @@ -171,7 +185,6 @@ class Wrappers { |
| ForwardScanCallbackToWrapper callbackForwarder = |
| new ForwardScanCallbackToWrapper(callback); |
| mCallbacks.put(callback, callbackForwarder); |
| - |
| mScanner.startScan(filters, settings, callbackForwarder); |
|
scheib
2016/02/05 18:06:19
Leave the blank line.
perja
2016/02/08 14:48:31
Done.
|
| } |
| @@ -276,6 +289,11 @@ class Wrappers { |
| } |
| public int getBluetoothClass_getDeviceClass() { |
| + if (mDevice == null || mDevice.getBluetoothClass() == null) { |
| + // BluetoothDevice.getBluetoothClass() returns null if adapter has been powered off. |
| + // Return DEVICE_CLASS_UNSPECIFIED in these cases. |
| + return DEVICE_CLASS_UNSPECIFIED; |
| + } |
| return mDevice.getBluetoothClass().getDeviceClass(); |
| } |