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

Commit 6bffe894 authored by Sudhir Sharma's avatar Sudhir Sharma
Browse files

Merge tag 'AU_LINUX_ANDROID_LA.BF64.1.2.1.05.00.02.066.045' into HEAD

AU_LINUX_ANDROID_LA.BF64.1.2.1.05.00.02.066.045 based on quic/aosp/LA.BF64.1.2.1

* tag 'AU_LINUX_ANDROID_LA.BF64.1.2.1.05.00.02.066.045':
  Prevent duplicate OPP permission request dialogs
  Check previous user confirmation before auto-confirm put request
  updateshare confirm logic missed cases like CONFIRMATION_DENIED, TIMEOUT. fix it
  Bluetooth: Stopping all services in case of enable Timeout
  Bluetooth-OPP: Read share count from OPP manager before transfer starts
  Bluetooth: Fix to respond to Browse command when not supported

Conflicts:
	src/com/android/bluetooth/opp/BluetoothOppService.java

Change-Id: Ie183e464a61dd2c3ed39a6f683ec4bf1e98029a1
parents 490414ca a821192a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2966,7 +2966,7 @@ public final class Avrcp {
                while (rccIterator.hasNext()) {
                    final MediaPlayerInfo di = rccIterator.next();
                    if (di.GetPlayerFocus()) {
                        if (!di.IsRemoteAddressable()) {
                        if (!di.IsRemoteAddressable() || mCurrentPath.equals(PATH_INVALID)) {
                            getFolderItemsRspNative((byte)INTERNAL_ERROR, numItems, itemType,
                                uid, type, playable, displayName, numAtt, attValues, attIds);
                            Log.e(TAG, "GetFolderItems fails: addressed player is not browsable");
+1 −0
Original line number Diff line number Diff line
@@ -333,6 +333,7 @@ final class AdapterState extends StateMachine {
                    adapterService.ssrcleanupNative(false);
                    mPendingCommandState.setTurningOn(false);
                    transitionTo(mOffState);
                    adapterService.stopProfileServices();
                    notifyAdapterStateChange(BluetoothAdapter.STATE_OFF);
                    break;
                case STOP_TIMEOUT:
+1 −1
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@ public class BluetoothOppManager {

    public boolean mMultipleFlag;

    private int mfileNumInBatch;
    private int mfileNumInBatch = 1;

    private int mInsertShareThreadNum = 0;

+14 −7
Original line number Diff line number Diff line
@@ -109,10 +109,11 @@ class BluetoothOppNotification {

    private static final int NOTIFICATION_ID_INBOUND = -1000006;

    private boolean mPendingUpdate = true;
    private boolean mOutboundUpdateCompleteNotification = true;
    private boolean mInboundUpdateCompleteNotification = true;

    private int confirmation = 0;
    private int mConfirmation = 0;
    private int mInboundActiveNotificationId = 0;
    private int mOutboundActiveNotificationId = 0;
    private int mRunning = 0;
@@ -158,7 +159,9 @@ class BluetoothOppNotification {
     * Update the notification ui.
     */
    public void updateNotification() {
        if (V) Log.v(TAG, "Updating the notification");
        synchronized (BluetoothOppNotification.this) {
            mPendingUpdate = true;
            if (mUpdateNotificationThread == null) {
                if (V) Log.v(TAG, "new notify thread!!!");
                mUpdateNotificationThread = new NotificationUpdateThread();
@@ -203,6 +206,7 @@ class BluetoothOppNotification {
                        throw new IllegalStateException(
                                "multiple UpdateThreads in BluetoothOppNotification");
                    }
                mPendingUpdate = false;
                }

                updateActiveNotification();
@@ -210,7 +214,7 @@ class BluetoothOppNotification {
                updateIncomingFileConfirmNotification();

                try {
                    if ((confirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED)
                    if ((mConfirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED)
                            || mPowerManager.isScreenOn()) {
                        Thread.sleep(BluetoothShare.UI_UPDATE_INTERVAL);
                    }
@@ -219,9 +223,12 @@ class BluetoothOppNotification {
                    return;
                }

                if (V) Log.v(TAG, "Running = " + mRunning);
            } while ((mRunning > 0) && (mPowerManager.isScreenOn()
                    || (confirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED)));
                if (V) {
                    Log.v(TAG, "Running = " + mRunning + " Pending notification is "
                        + mPendingUpdate);
                }
            } while ((mPendingUpdate || (mRunning > 0)) && (mPowerManager.isScreenOn()
                    || (mConfirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED)));

            synchronized (BluetoothOppNotification.this) {
                mUpdateNotificationThread = null;
@@ -314,7 +321,7 @@ class BluetoothOppNotification {
                int id = cursor.getInt(idIndex);
                long total = cursor.getLong(totalBytesIndex);
                long current = cursor.getLong(currentBytesIndex);
                confirmation = cursor.getInt(confirmIndex);
                mConfirmation = cursor.getInt(confirmIndex);

                String destination = cursor.getString(destinationIndex);
                String fileName = cursor.getString(dataIndex);
@@ -347,7 +354,7 @@ class BluetoothOppNotification {
                    item.totalCurrent = current;
                    item.totalTotal = total;
                    item.handoverInitiated =
                        confirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED;
                        mConfirmation == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED;
                    item.destination = destination;
                    mNotifications.put(batchID, item);

+12 −4
Original line number Diff line number Diff line
@@ -96,6 +96,8 @@ public class BluetoothOppService extends Service {
    /** Class to handle Notification Manager updates */
    private BluetoothOppNotification mNotifier;

    private boolean mPendingUpdate = true;

    private UpdateThread mUpdateThread;

    private ArrayList<BluetoothOppShareInfo> mShares;
@@ -448,7 +450,9 @@ public class BluetoothOppService extends Service {
    };

    private void updateFromProvider() {
        if (V) Log.v(TAG, "Updating the provider");
        synchronized (BluetoothOppService.this) {
            mPendingUpdate = true;
            if ((mUpdateThread == null) && (mAdapter != null)
                && mAdapter.isEnabled()) {
                if (V) Log.v(TAG, "Starting a new thread");
@@ -477,6 +481,7 @@ public class BluetoothOppService extends Service {
                    }
                    if (V) Log.v(TAG, "keepUpdateThread is " + keepService + " sListenStarted is "
                            + mListenStarted);
                    mPendingUpdate = false;
                }
                Cursor cursor;
                try {
@@ -627,15 +632,16 @@ public class BluetoothOppService extends Service {
                }

                try {
                    if (((mServerSession != null) || (mTransfer != null))
                            && mPowerManager.isScreenOn()) {
                    if (mPowerManager.isScreenOn()) {
                        Thread.sleep(BluetoothShare.UI_UPDATE_INTERVAL);
                    }
                } catch (InterruptedException e) {
                    if (V) Log.v(TAG, "OppService Thread sleep is interrupted (1), exiting");
                    return;
                }
            } while (mPowerManager.isScreenOn() && ((mServerSession != null) || (mTransfer != null)));

                if(V) Log.v(TAG, "PendingUpdate is " + mPendingUpdate);
            } while (mPendingUpdate);

            synchronized (BluetoothOppService.this) {
                mUpdateThread = null;
@@ -834,7 +840,9 @@ public class BluetoothOppService extends Service {
        info.mVisibility = newVisibility;

        if (info.mConfirm == BluetoothShare.USER_CONFIRMATION_PENDING
                && newConfirm != BluetoothShare.USER_CONFIRMATION_PENDING) {
            && (newConfirm == BluetoothShare.USER_CONFIRMATION_CONFIRMED ||
                newConfirm == BluetoothShare.USER_CONFIRMATION_AUTO_CONFIRMED ||
                newConfirm == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED)) {
            confirmUpdated = true;
        }
        info.mConfirm = newConfirm;
Loading