Handle return value when Bluetooth is enabled

If the Bluetooth enable(true) returns false currently we are waiting for
a broadcast (which may not happen if enable returns false). We mark the
toggle to have failed (i.e. it is clickable and in OFF state) and the
switch bar text is appropriately shown.

Bug: b/28318203
Change-Id: I09ba46d2e102e7f2c4ef9a72bf38dedc1346364f
diff --git a/src/com/android/settings/bluetooth/BluetoothEnabler.java b/src/com/android/settings/bluetooth/BluetoothEnabler.java
index e83f483..86cc0f6 100644
--- a/src/com/android/settings/bluetooth/BluetoothEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothEnabler.java
@@ -24,6 +24,7 @@
 import android.os.Handler;
 import android.os.Message;
 import android.provider.Settings;
+import android.util.Log;
 import android.widget.Switch;
 import android.widget.Toast;
 
@@ -188,7 +189,16 @@
         MetricsLogger.action(mContext, MetricsLogger.ACTION_BLUETOOTH_TOGGLE, isChecked);
 
         if (mLocalAdapter != null) {
-            mLocalAdapter.setBluetoothEnabled(isChecked);
+            boolean status = mLocalAdapter.setBluetoothEnabled(isChecked);
+            // If we cannot toggle it ON then reset the UI assets:
+            // a) The switch should be OFF but it should still be togglable (enabled = True)
+            // b) The switch bar should have OFF text.
+            if (isChecked && !status) {
+                switchView.setChecked(false);
+                mSwitch.setEnabled(true);
+                mSwitchBar.setTextViewLabel(false);
+                return;
+            }
         }
         mSwitch.setEnabled(false);
     }