summaryrefslogtreecommitdiffstats
path: root/src/com/android/bluetooth/opp
diff options
context:
space:
mode:
authorMatthew Xie <mattx@google.com>2014-11-17 09:50:54 -0800
committerMatthew Xie <mattx@google.com>2014-11-17 09:50:54 -0800
commite93cc4d347fd5d263d7740ad85f7f99b64651126 (patch)
tree76de9c844f631dcaba507394dfbf7e7b30a0b2f9 /src/com/android/bluetooth/opp
parentcf496e4230a5067a19e067115502b3961c9bf220 (diff)
downloadandroid_packages_apps_Bluetooth-e93cc4d347fd5d263d7740ad85f7f99b64651126.tar.gz
android_packages_apps_Bluetooth-e93cc4d347fd5d263d7740ad85f7f99b64651126.tar.bz2
android_packages_apps_Bluetooth-e93cc4d347fd5d263d7740ad85f7f99b64651126.zip
Check previous user confirmation before auto-confirm put request
Also correct a confirm status change check in updateShare. Bug: 17770561, 18343032 Change-Id: I8e7d10e73604c0bf1c88801a1caef7d579fbd1eb
Diffstat (limited to 'src/com/android/bluetooth/opp')
-rw-r--r--src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java2
-rwxr-xr-xsrc/com/android/bluetooth/opp/BluetoothOppService.java18
-rwxr-xr-xsrc/com/android/bluetooth/opp/BluetoothOppTransfer.java8
3 files changed, 13 insertions, 15 deletions
diff --git a/src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java b/src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java
index 5bd54af36..bf6a6fa02 100644
--- a/src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java
+++ b/src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java
@@ -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;
diff --git a/src/com/android/bluetooth/opp/BluetoothOppService.java b/src/com/android/bluetooth/opp/BluetoothOppService.java
index 9b8a5f4c8..f952beca3 100755
--- a/src/com/android/bluetooth/opp/BluetoothOppService.java
+++ b/src/com/android/bluetooth/opp/BluetoothOppService.java
@@ -704,7 +704,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));
@@ -717,10 +717,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));
@@ -738,14 +736,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
}
}
@@ -872,7 +870,7 @@ public class BluetoothOppService extends Service {
mServerTransfer.start();
if (nextBatch.getPendingShare().mConfirm ==
BluetoothShare.USER_CONFIRMATION_CONFIRMED) {
- mServerTransfer.setConfirmed();
+ mServerTransfer.confirmStatusChanged();
}
return;
}
diff --git a/src/com/android/bluetooth/opp/BluetoothOppTransfer.java b/src/com/android/bluetooth/opp/BluetoothOppTransfer.java
index 2dbed4992..6c883d2ae 100755
--- a/src/com/android/bluetooth/opp/BluetoothOppTransfer.java
+++ b/src/com/android/bluetooth/opp/BluetoothOppTransfer.java
@@ -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();
}
}
}