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

Commit 44c013d7 authored by Jakub Pawlowski's avatar Jakub Pawlowski Committed by Gerrit Code Review
Browse files

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

parents 05d950ee 0278ab95
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -892,6 +892,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;
        }
    }