Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00be0387 authored by Jakub Pawlowski's avatar Jakub Pawlowski Committed by android-build-merger
Browse files

Merge "Fix connecting to profiles when bonding from local device (1/3)" am:...

Merge "Fix connecting to profiles when bonding from local device (1/3)" am: 44c013d7 am: 6fe39007 am: 56757a44
am: 4984d66b

Change-Id: I4b78ff54941ada956d4330a6192d0f1c279d953c
parents 93c41c0d 4984d66b
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -895,6 +895,14 @@ public final class BluetoothDevice implements Parcelable {
        return false;
    }

    /** @hide */
    public boolean isBondingInitiatedLocally() {
        try {
            return sService.isBondingInitiatedLocally(this);
        } catch (RemoteException e) {Log.e(TAG, "", e);}
        return false;
    }

    /**
     * Set the Out Of Band data for a remote device to be used later
     * in the pairing mechanism. Users can obtain this data through other
+1 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ interface IBluetooth
    boolean cancelBondProcess(in BluetoothDevice device);
    boolean removeBond(in BluetoothDevice device);
    int getBondState(in BluetoothDevice device);
    boolean isBondingInitiatedLocally(in BluetoothDevice device);
    int getConnectionState(in BluetoothDevice device);

    String getRemoteName(in BluetoothDevice device);
+2 −8
Original line number Diff line number Diff line
@@ -102,9 +102,6 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
    private static final long MAX_UUID_DELAY_FOR_AUTO_CONNECT = 5000;
    private static final long MAX_HOGP_DELAY_FOR_AUTO_CONNECT = 30000;

    /** Auto-connect after pairing only if locally initiated. */
    private boolean mConnectAfterPairing;

    /**
     * Describes the current device and profile for logging.
     *
@@ -300,7 +297,6 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
            return false;
        }

        mConnectAfterPairing = true;  // auto-connect after pairing
        return true;
    }

@@ -309,7 +305,7 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
     * slightly different for local vs. remote initiated pairing dialogs.
     */
    boolean isUserInitiatedPairing() {
        return mConnectAfterPairing;
        return mDevice.isBondingInitiatedLocally();
    }

    public void unpair() {
@@ -549,7 +545,6 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
    void onBondingStateChanged(int bondState) {
        if (bondState == BluetoothDevice.BOND_NONE) {
            mProfiles.clear();
            mConnectAfterPairing = false;  // cancel auto-connect
            setPhonebookPermissionChoice(ACCESS_UNKNOWN);
            setMessagePermissionChoice(ACCESS_UNKNOWN);
            setSimPermissionChoice(ACCESS_UNKNOWN);
@@ -562,10 +557,9 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
        if (bondState == BluetoothDevice.BOND_BONDED) {
            if (mDevice.isBluetoothDock()) {
                onBondingDockConnect();
            } else if (mConnectAfterPairing) {
            } else if (mDevice.isBondingInitiatedLocally()) {
                connect(false);
            }
            mConnectAfterPairing = false;
        }
    }