Integrate call composer into the call flow
* Link uploadCallComposerPicture with the actual http upload code
* Perform download of an incoming picture once call filtering completes
* Store uploaded image into the call log once a call has been made
* Add shell commands for CTS testing of the above
Bug: 177613111
Test: atest CallComposerTest
Merged-In: I403e0b4b004b3a22ec0b1dae40f1cc88fee494fc
Change-Id: If20fd2c535b1fc0c79ded7e91bfa10e262e4630e
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 59aed4b..2c83ff9 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -185,6 +185,9 @@
import com.android.internal.telephony.util.VoicemailNotificationSettingsUtil;
import com.android.internal.util.FunctionalUtils;
import com.android.internal.util.HexDump;
+import com.android.phone.callcomposer.CallComposerPictureManager;
+import com.android.phone.callcomposer.CallComposerPictureTransfer;
+import com.android.phone.callcomposer.ImageData;
import com.android.phone.settings.PickSmsSubscriptionActivity;
import com.android.phone.vvm.PhoneAccountHandleConverter;
import com.android.phone.vvm.RemoteVvmTaskManager;
@@ -209,7 +212,6 @@
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Set;
-import java.util.UUID;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
@@ -7007,13 +7009,28 @@
return;
}
- // TODO: pass along the bytes read to the carrier somehow
+ if (!readUntilEnd) {
+ loge("Did not finish reading entire image; aborting");
+ return;
+ }
- ParcelUuid result = new ParcelUuid(UUID.randomUUID());
- // TODO: cache this uuid that's been associated with the picture
- Bundle outputResult = new Bundle();
- outputResult.putParcelable(TelephonyManager.KEY_CALL_COMPOSER_PICTURE_HANDLE, result);
- callback.send(-1, outputResult);
+ ImageData imageData = new ImageData(output.toByteArray(), contentType, null);
+ CallComposerPictureManager.getInstance(mApp, subscriptionId).handleUploadToServer(
+ new CallComposerPictureTransfer.Factory() {},
+ imageData,
+ (result) -> {
+ if (result.first != null) {
+ ParcelUuid parcelUuid = new ParcelUuid(result.first);
+ Bundle outputResult = new Bundle();
+ outputResult.putParcelable(
+ TelephonyManager.KEY_CALL_COMPOSER_PICTURE_HANDLE, parcelUuid);
+ callback.send(TelephonyManager.CallComposerException.SUCCESS,
+ outputResult);
+ } else {
+ callback.send(result.second, null);
+ }
+ }
+ );
});
}