| 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 2ccdaae8d7902b71d5ac91620d3d0380b9cc438a..9287f85865b8c6e16c2d07a4959a7a8fa2568cb1 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,34 +96,42 @@ 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 BluetoothLeScannerWrapper getBluetoothLeScanner() {
|
| - return mScanner;
|
| + public boolean disable() {
|
| + return mAdapter.disable();
|
| }
|
|
|
| - public boolean isEnabled() {
|
| - return mAdapter.isEnabled();
|
| + public boolean enable() {
|
| + return mAdapter.enable();
|
| }
|
|
|
| public String getAddress() {
|
| return mAdapter.getAddress();
|
| }
|
|
|
| + public BluetoothLeScannerWrapper getBluetoothLeScanner() {
|
| + BluetoothLeScanner scanner = mAdapter.getBluetoothLeScanner();
|
| + if (scanner == null) {
|
| + return null;
|
| + }
|
| + if (mScannerWrapper == null) {
|
| + mScannerWrapper = new BluetoothLeScannerWrapper(scanner);
|
| + }
|
| + return mScannerWrapper;
|
| + }
|
| +
|
| + public ContextWrapper getContext() {
|
| + return mContext;
|
| + }
|
| +
|
| public String getName() {
|
| return mAdapter.getName();
|
| }
|
| @@ -133,6 +143,10 @@ class Wrappers {
|
| public boolean isDiscovering() {
|
| return mAdapter.isDiscovering();
|
| }
|
| +
|
| + public boolean isEnabled() {
|
| + return mAdapter.isEnabled();
|
| + }
|
| }
|
|
|
| /**
|
| @@ -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) {
|
| @@ -276,6 +290,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();
|
| }
|
|
|
|
|