From 073d01910374fcad09182ec359178222f82cabcb Mon Sep 17 00:00:00 2001 From: Jake McGinty Date: Thu, 12 Mar 2015 13:39:19 -0700 Subject: [PATCH] Fix SMIL regression Closes #2654 // FREEBIE --- .../securesms/jobs/MmsSendJob.java | 18 +++-- .../securesms/mms/AudioSlide.java | 14 ---- .../securesms/mms/ImageSlide.java | 23 ------ .../securesms/mms/PartParser.java | 29 +++++--- src/org/thoughtcrime/securesms/mms/Slide.java | 7 -- .../thoughtcrime/securesms/mms/SlideDeck.java | 9 --- .../thoughtcrime/securesms/mms/TextSlide.java | 17 ----- .../securesms/mms/VideoSlide.java | 21 ------ .../thoughtcrime/securesms/util/SmilUtil.java | 70 +++++++++++++++++-- 9 files changed, 97 insertions(+), 111 deletions(-) diff --git a/src/org/thoughtcrime/securesms/jobs/MmsSendJob.java b/src/org/thoughtcrime/securesms/jobs/MmsSendJob.java index bd7485b55f..e1c2d1c76f 100644 --- a/src/org/thoughtcrime/securesms/jobs/MmsSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/MmsSendJob.java @@ -22,6 +22,7 @@ import org.thoughtcrime.securesms.transport.UndeliverableMessageException; import org.thoughtcrime.securesms.util.Hex; import org.thoughtcrime.securesms.util.NumberUtil; import org.thoughtcrime.securesms.util.TelephonyUtil; +import org.thoughtcrime.securesms.util.SmilUtil; import org.whispersystems.jobqueue.JobParameters; import org.whispersystems.jobqueue.requirements.NetworkRequirement; @@ -98,6 +99,7 @@ public class MmsSendJob extends SendJob { MmsRadio radio = MmsRadio.getInstance(context); try { + prepareMessageMedia(masterSecret, message, MediaConstraints.MMS_CONSTRAINTS, true); if (isCdmaDevice()) { Log.w(TAG, "Sending MMS directly without radio change..."); try { @@ -129,9 +131,9 @@ public class MmsSendJob extends SendJob { radio.disconnect(); } - } catch (MmsRadioException mre) { - Log.w(TAG, mre); - throw new UndeliverableMessageException(mre); + } catch (MmsRadioException | IOException e) { + Log.w(TAG, e); + throw new UndeliverableMessageException(e); } } @@ -141,8 +143,6 @@ public class MmsSendJob extends SendJob { { String number = TelephonyUtil.getManager(context).getLine1Number(); - prepareMessageMedia(masterSecret, message, MediaConstraints.MMS_CONSTRAINTS, true); - if (MmsDatabase.Types.isSecureType(message.getDatabaseMessageBox())) { throw new UndeliverableMessageException("Attempt to send encrypted MMS?"); } @@ -227,6 +227,12 @@ public class MmsSendJob extends SendJob { } } - + @Override + protected void prepareMessageMedia(MasterSecret masterSecret, SendReq message, + MediaConstraints constraints, boolean toMemory) + throws IOException, UndeliverableMessageException { + super.prepareMessageMedia(masterSecret, message, constraints, toMemory); + message.setBody(SmilUtil.getSmilBody(message.getBody())); + } } diff --git a/src/org/thoughtcrime/securesms/mms/AudioSlide.java b/src/org/thoughtcrime/securesms/mms/AudioSlide.java index 1ee52f8a33..94ae28127b 100644 --- a/src/org/thoughtcrime/securesms/mms/AudioSlide.java +++ b/src/org/thoughtcrime/securesms/mms/AudioSlide.java @@ -22,10 +22,6 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.util.ListenableFutureTask; import org.thoughtcrime.securesms.util.ResUtil; -import org.thoughtcrime.securesms.util.SmilUtil; -import org.w3c.dom.smil.SMILDocument; -import org.w3c.dom.smil.SMILMediaElement; -import org.w3c.dom.smil.SMILRegionElement; import ws.com.google.android.mms.pdu.PduPart; import android.content.Context; @@ -55,16 +51,6 @@ public class AudioSlide extends Slide { return true; } - @Override - public SMILRegionElement getSmilRegion(SMILDocument document) { - return null; - } - - @Override - public SMILMediaElement getMediaElement(SMILDocument document) { - return SmilUtil.createMediaElement("audio", document, new String(getPart().getName())); - } - @Override public ListenableFutureTask> getThumbnail(Context context) { return new ListenableFutureTask<>(new Pair<>(ResUtil.getDrawable(context, R.attr.conversation_icon_attach_audio), true)); diff --git a/src/org/thoughtcrime/securesms/mms/ImageSlide.java b/src/org/thoughtcrime/securesms/mms/ImageSlide.java index 46b9a048d4..f57c5884f5 100644 --- a/src/org/thoughtcrime/securesms/mms/ImageSlide.java +++ b/src/org/thoughtcrime/securesms/mms/ImageSlide.java @@ -21,7 +21,6 @@ import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.os.AsyncTask; import android.util.Log; import android.util.Pair; @@ -31,11 +30,6 @@ import org.thoughtcrime.securesms.util.BitmapDecodingException; import org.thoughtcrime.securesms.util.LRUCache; import org.thoughtcrime.securesms.util.ListenableFutureTask; import org.thoughtcrime.securesms.util.MediaUtil; -import org.thoughtcrime.securesms.util.ResUtil; -import org.thoughtcrime.securesms.util.SmilUtil; -import org.w3c.dom.smil.SMILDocument; -import org.w3c.dom.smil.SMILMediaElement; -import org.w3c.dom.smil.SMILRegionElement; import org.thoughtcrime.securesms.crypto.MasterSecret; import java.io.IOException; @@ -131,23 +125,6 @@ public class ImageSlide extends Slide { return true; } - @Override - public SMILRegionElement getSmilRegion(SMILDocument document) { - SMILRegionElement region = (SMILRegionElement) document.createElement("region"); - region.setId("Image"); - region.setLeft(0); - region.setTop(0); - region.setWidth(SmilUtil.ROOT_WIDTH); - region.setHeight(SmilUtil.ROOT_HEIGHT); - region.setFit("meet"); - return region; - } - - @Override - public SMILMediaElement getMediaElement(SMILDocument document) { - return SmilUtil.createMediaElement("img", document, new String(getPart().getName())); - } - private static PduPart constructPartFromUri(Uri uri) throws IOException, BitmapDecodingException { diff --git a/src/org/thoughtcrime/securesms/mms/PartParser.java b/src/org/thoughtcrime/securesms/mms/PartParser.java index d43c0ed4c7..050b5559f2 100644 --- a/src/org/thoughtcrime/securesms/mms/PartParser.java +++ b/src/org/thoughtcrime/securesms/mms/PartParser.java @@ -9,6 +9,7 @@ import java.io.UnsupportedEncodingException; import ws.com.google.android.mms.ContentType; import ws.com.google.android.mms.pdu.CharacterSets; import ws.com.google.android.mms.pdu.PduBody; +import ws.com.google.android.mms.pdu.PduPart; public class PartParser { public static String getMessageText(PduBody body) { @@ -45,7 +46,7 @@ public class PartParser { PduBody stripped = new PduBody(); for (int i=0;i