summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorJakub Pawlowski <jpawlowski@google.com>2017-08-17 07:19:12 -0700
committerJakub Pawlowski <jpawlowski@google.com>2017-08-17 07:36:37 -0700
commitf7bd6b26c73b7ea0bbfd00b75c23895eca281aff (patch)
treed402dabf52b2390edde7e3fc308293dabe0ac53c /core/java
parent42d3eadb37a8788d62bc9dedfa9f4cb37f2a88d7 (diff)
Bluetooth: Fix startAdvertisingSet error handling
Calls to old advertising API (startAdvertising), should never throw exceptions. Instead, it used to post failure callback. This behaviour was accidentally modified when implementing new API. Right now, instead of posting error callback, we throw IllegalArgumentException if we fail to obtain BluetoothGatt object, or the call to startAdvertisingSet fails. This patch brings back the old behaviour to the API. It also makes new API post callback instead of throwing exception in this error case. Bug: 63819108 Test: manual Change-Id: I897b99839f899ca3f3dc609918d665c8c327b777
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/bluetooth/le/BluetoothLeAdvertiser.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
index dfd5996c6a00..5830c278c8d4 100644
--- a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
+++ b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java
@@ -415,7 +415,8 @@ public final class BluetoothLeAdvertiser {
gatt = mBluetoothManager.getBluetoothGatt();
} catch (RemoteException e) {
Log.e(TAG, "Failed to get Bluetooth gatt - ", e);
- throw new IllegalStateException("Failed to get Bluetooth");
+ postStartSetFailure(handler, callback, AdvertiseCallback.ADVERTISE_FAILED_INTERNAL_ERROR);
+ return;
}
IAdvertisingSetCallback wrapped = wrap(callback, handler);
@@ -429,7 +430,8 @@ public final class BluetoothLeAdvertiser {
periodicData, duration, maxExtendedAdvertisingEvents, wrapped);
} catch (RemoteException e) {
Log.e(TAG, "Failed to start advertising set - ", e);
- throw new IllegalStateException("Failed to start advertising set");
+ postStartSetFailure(handler, callback, AdvertiseCallback.ADVERTISE_FAILED_INTERNAL_ERROR);
+ return;
}
}
@@ -648,6 +650,16 @@ public final class BluetoothLeAdvertiser {
};
}
+ private void postStartSetFailure(Handler handler, final AdvertisingSetCallback callback,
+ final int error) {
+ handler.post(new Runnable() {
+ @Override
+ public void run() {
+ callback.onAdvertisingSetStarted(null, 0, error);
+ }
+ });
+ }
+
private void postStartFailure(final AdvertiseCallback callback, final int error) {
mHandler.post(new Runnable() {
@Override