OSDN Git Service

Check previous user confirmation before auto-confirm put request
authorMatthew Xie <mattx@google.com>
Mon, 17 Nov 2014 17:50:54 +0000 (09:50 -0800)
committerMatthew Xie <mattx@google.com>
Mon, 24 Nov 2014 20:57:00 +0000 (20:57 +0000)
Also correct a confirm status change check in updateShare.
Bug: 1777056118343032

Change-Id: I8e7d10e73604c0bf1c88801a1caef7d579fbd1eb
(cherry picked from commit e93cc4d347fd5d263d7740ad85f7f99b64651126)

src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java
src/com/android/bluetooth/opp/BluetoothOppService.java
src/com/android/bluetooth/opp/BluetoothOppTransfer.java

index 5bd54af..bf6a6fa 100644 (file)
@@ -276,7 +276,7 @@ public class BluetoothOppObexServerSession extends ServerRequestHandler implemen
 
         boolean needConfirm = true;
         /** It's not first put if !serverBlocking, so we auto accept it */
-        if (!mServerBlocking) {
+        if (!mServerBlocking && mAccepted == BluetoothShare.USER_CONFIRMATION_CONFIRMED) {
             values.put(BluetoothShare.USER_CONFIRMATION,
                     BluetoothShare.USER_CONFIRMATION_AUTO_CONFIRMED);
             needConfirm = false;
index 93f1004..9e7c0de 100755 (executable)
@@ -689,7 +689,7 @@ public class BluetoothOppService extends Service {
         info.mDestination = stringFromCursor(info.mDestination, cursor, BluetoothShare.DESTINATION);
         int newVisibility = cursor.getInt(cursor.getColumnIndexOrThrow(BluetoothShare.VISIBILITY));
 
-        boolean confirmed = false;
+        boolean confirmUpdated = false;
         int newConfirm = cursor.getInt(cursor
                 .getColumnIndexOrThrow(BluetoothShare.USER_CONFIRMATION));
 
@@ -702,10 +702,8 @@ public class BluetoothOppService extends Service {
         info.mVisibility = newVisibility;
 
         if (info.mConfirm == BluetoothShare.USER_CONFIRMATION_PENDING
-            && (newConfirm == BluetoothShare.USER_CONFIRMATION_CONFIRMED ||
-                newConfirm == BluetoothShare.USER_CONFIRMATION_AUTO_CONFIRMED ||
-                newConfirm == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED)) {
-            confirmed = true;
+                && newConfirm != BluetoothShare.USER_CONFIRMATION_PENDING) {
+            confirmUpdated = true;
         }
         info.mConfirm = cursor.getInt(cursor
                 .getColumnIndexOrThrow(BluetoothShare.USER_CONFIRMATION));
@@ -723,14 +721,14 @@ public class BluetoothOppService extends Service {
         info.mTimestamp = cursor.getInt(cursor.getColumnIndexOrThrow(BluetoothShare.TIMESTAMP));
         info.mMediaScanned = (cursor.getInt(cursor.getColumnIndexOrThrow(Constants.MEDIA_SCANNED)) != Constants.MEDIA_SCANNED_NOT_SCANNED);
 
-        if (confirmed) {
-            if (V) Log.v(TAG, "Service handle info " + info.mId + " confirmed");
-            /* Inbounds transfer get user confirmation, so we start it */
+        if (confirmUpdated) {
+            if (V) Log.v(TAG, "Service handle info " + info.mId + " confirmation updated");
+            /* Inbounds transfer user confirmation status changed, update the session server */
             int i = findBatchWithTimeStamp(info.mTimestamp);
             if (i != -1) {
                 BluetoothOppBatch batch = mBatchs.get(i);
                 if (mServerTransfer != null && batch.mId == mServerTransfer.getBatchId()) {
-                    mServerTransfer.setConfirmed();
+                    mServerTransfer.confirmStatusChanged();
                 } //TODO need to think about else
             }
         }
@@ -857,7 +855,7 @@ public class BluetoothOppService extends Service {
                         mServerTransfer.start();
                         if (nextBatch.getPendingShare().mConfirm ==
                                 BluetoothShare.USER_CONFIRMATION_CONFIRMED) {
-                            mServerTransfer.setConfirmed();
+                            mServerTransfer.confirmStatusChanged();
                         }
                         return;
                     }
index 2dbed49..6c883d2 100755 (executable)
@@ -462,7 +462,7 @@ public class BluetoothOppTransfer implements BluetoothOppBatch.BluetoothOppBatch
         if (V) Log.v(TAG, "processCurrentShare" + mCurrentShare.mId);
         mSession.addShare(mCurrentShare);
         if (mCurrentShare.mConfirm == BluetoothShare.USER_CONFIRMATION_HANDOVER_CONFIRMED) {
-            setConfirmed();
+            confirmStatusChanged();
         }
     }
 
@@ -470,7 +470,7 @@ public class BluetoothOppTransfer implements BluetoothOppBatch.BluetoothOppBatch
      * Set transfer confirmed status. It should only be called for inbound
      * transfer
      */
-    public void setConfirmed() {
+    public void confirmStatusChanged() {
         /* unblock server session */
         final Thread notifyThread = new Thread("Server Unblock thread") {
             public void run() {
@@ -480,7 +480,7 @@ public class BluetoothOppTransfer implements BluetoothOppBatch.BluetoothOppBatch
                 }
             }
         };
-        if (V) Log.v(TAG, "setConfirmed to unblock mSession" + mSession.toString());
+        if (V) Log.v(TAG, "confirmStatusChanged to unblock mSession" + mSession.toString());
         notifyThread.start();
     }
 
@@ -711,7 +711,7 @@ public class BluetoothOppTransfer implements BluetoothOppBatch.BluetoothOppBatch
                 if (V) Log.v(TAG, "Transfer continue session for info " + mCurrentShare.mId +
                         " from batch " + mBatch.mId);
                 processCurrentShare();
-                setConfirmed();
+                confirmStatusChanged();
             }
         }
     }