| Index: chrome/android/java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java
|
| index 9bee553b1e10ce710b8af1fe7d70d2301f97be1a..cbbcd4b35319ae9aa253ec097daa451bcd8bbcbb 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java
|
| @@ -6,6 +6,7 @@ package org.chromium.chrome.browser;
|
|
|
| import android.Manifest;
|
| import android.app.Activity;
|
| +import android.bluetooth.BluetoothAdapter;
|
| import android.content.BroadcastReceiver;
|
| import android.content.Context;
|
| import android.content.Intent;
|
| @@ -15,6 +16,7 @@ import android.text.SpannableString;
|
| import android.text.TextUtils;
|
| import android.view.View;
|
|
|
| +import org.chromium.base.Log;
|
| import org.chromium.base.VisibleForTesting;
|
| import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.chrome.R;
|
| @@ -35,6 +37,8 @@ import org.chromium.ui.text.SpanApplier.SpanInfo;
|
| */
|
| public class BluetoothChooserDialog
|
| implements ItemChooserDialog.ItemSelectedCallback, WindowAndroid.PermissionCallback {
|
| + private static final String TAG = "Bluetooth";
|
| +
|
| // These constants match BluetoothChooserAndroid::ShowDiscoveryState, and are used in
|
| // notifyDiscoveryState().
|
| static final int DISCOVERY_FAILED_TO_START = 0;
|
| @@ -69,6 +73,12 @@ public class BluetoothChooserDialog
|
| // Used to keep track of when the Mode Changed Receiver is registered.
|
| boolean mIsLocationModeChangedReceiverRegistered;
|
|
|
| + // The local device Bluetooth adapter.
|
| + private final BluetoothAdapter mAdapter;
|
| +
|
| + // The status message to show when the bluetooth adapter is turned off.
|
| + private final SpannableString mAdapterOffStatus;
|
| +
|
| @VisibleForTesting
|
| final BroadcastReceiver mLocationModeBroadcastReceiver = new BroadcastReceiver() {
|
| @Override
|
| @@ -106,6 +116,14 @@ public class BluetoothChooserDialog
|
| mOrigin = origin;
|
| mSecurityLevel = securityLevel;
|
| mNativeBluetoothChooserDialogPtr = nativeBluetoothChooserDialogPtr;
|
| + mAdapter = BluetoothAdapter.getDefaultAdapter();
|
| + if (mAdapter == null) {
|
| + Log.i(TAG, "BluetoothChooserDialog: Default Bluetooth adapter not found.");
|
| + }
|
| + mAdapterOffStatus =
|
| + SpanApplier.applySpans(mActivity.getString(R.string.bluetooth_adapter_off_help),
|
| + new SpanInfo("<link>", "</link>",
|
| + new BluetoothClickableSpan(LinkType.ADAPTER_OFF_HELP, mActivity)));
|
| }
|
|
|
| /**
|
| @@ -275,9 +293,13 @@ public class BluetoothChooserDialog
|
| break;
|
| }
|
| case ADAPTER_OFF: {
|
| - Intent intent = new Intent();
|
| - intent.setAction(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS);
|
| - mContext.startActivity(intent);
|
| + if (mAdapter != null && mAdapter.enable()) {
|
| + mItemChooserDialog.signalInitializingAdapter();
|
| + } else {
|
| + String unableToTurnOnAdapter =
|
| + mActivity.getString(R.string.bluetooth_unable_to_turn_on_adapter);
|
| + mItemChooserDialog.setErrorState(unableToTurnOnAdapter, mAdapterOffStatus);
|
| + }
|
| break;
|
| }
|
| case ADAPTER_OFF_HELP: {
|
| @@ -357,12 +379,8 @@ public class BluetoothChooserDialog
|
| mActivity.getString(R.string.bluetooth_adapter_off),
|
| new SpanInfo("<link>", "</link>",
|
| new BluetoothClickableSpan(LinkType.ADAPTER_OFF, mActivity)));
|
| - SpannableString adapterOffStatus = SpanApplier.applySpans(
|
| - mActivity.getString(R.string.bluetooth_adapter_off_help),
|
| - new SpanInfo("<link>", "</link>",
|
| - new BluetoothClickableSpan(LinkType.ADAPTER_OFF_HELP, mActivity)));
|
|
|
| - mItemChooserDialog.setErrorState(adapterOffMessage, adapterOffStatus);
|
| + mItemChooserDialog.setErrorState(adapterOffMessage, mAdapterOffStatus);
|
| }
|
|
|
| @CalledByNative
|
|
|