diff options
Diffstat (limited to 'java/com/android/voicemail/impl/mail')
4 files changed, 30 insertions, 1 deletions
diff --git a/java/com/android/voicemail/impl/mail/Message.java b/java/com/android/voicemail/impl/mail/Message.java index aea5d3ead..ca65d3d73 100644 --- a/java/com/android/voicemail/impl/mail/Message.java +++ b/java/com/android/voicemail/impl/mail/Message.java @@ -15,6 +15,7 @@ */ package com.android.voicemail.impl.mail; +import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import java.util.Date; import java.util.HashSet; @@ -64,6 +65,9 @@ public abstract class Message implements Part, Body { public abstract void setSentDate(Date sentDate) throws MessagingException; + @Nullable + public abstract Long getDuration() throws MessagingException; + public abstract Address[] getRecipients(String type) throws MessagingException; public abstract void setRecipients(String type, Address[] addresses) throws MessagingException; diff --git a/java/com/android/voicemail/impl/mail/internet/MimeHeader.java b/java/com/android/voicemail/impl/mail/internet/MimeHeader.java index d41cdb3e4..8f0817650 100644 --- a/java/com/android/voicemail/impl/mail/internet/MimeHeader.java +++ b/java/com/android/voicemail/impl/mail/internet/MimeHeader.java @@ -36,6 +36,7 @@ public class MimeHeader { public static final String HEADER_CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding"; public static final String HEADER_CONTENT_DISPOSITION = "Content-Disposition"; public static final String HEADER_CONTENT_ID = "Content-ID"; + public static final String HEADER_CONTENT_DURATION = "Content-Duration"; /** Fields that should be omitted when writing the header using writeTo() */ private static final String[] WRITE_OMIT_FIELDS = { diff --git a/java/com/android/voicemail/impl/mail/internet/MimeMessage.java b/java/com/android/voicemail/impl/mail/internet/MimeMessage.java index 589720660..39378a092 100644 --- a/java/com/android/voicemail/impl/mail/internet/MimeMessage.java +++ b/java/com/android/voicemail/impl/mail/internet/MimeMessage.java @@ -15,7 +15,9 @@ */ package com.android.voicemail.impl.mail.internet; +import android.support.annotation.Nullable; import android.text.TextUtils; +import com.android.voicemail.impl.VvmLog; import com.android.voicemail.impl.mail.Address; import com.android.voicemail.impl.mail.Body; import com.android.voicemail.impl.mail.BodyPart; @@ -197,6 +199,28 @@ public class MimeMessage extends Message { } @Override + @Nullable + public Long getDuration() { + String durationHeader = null; + try { + durationHeader = getFirstHeader(MimeHeader.HEADER_CONTENT_DURATION); + } catch (MessagingException e) { + VvmLog.e("MimeMessage.getDuration", "cannot retrieve header: ", e); + return null; + } + if (durationHeader == null) { + VvmLog.w("MimeMessage.getDuration", "message missing Content-Duration header"); + return null; + } + try { + return Long.valueOf(durationHeader); + } catch (NumberFormatException e) { + VvmLog.w("MimeMessage.getDuration", "cannot parse duration " + durationHeader); + return null; + } + } + + @Override public String getContentType() throws MessagingException { final String contentType = getFirstHeader(MimeHeader.HEADER_CONTENT_TYPE); if (contentType == null) { diff --git a/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java b/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java index 88ec0ed90..fd56952d7 100644 --- a/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java +++ b/java/com/android/voicemail/impl/mail/store/imap/ImapConstants.java @@ -27,7 +27,7 @@ public final class ImapConstants { public static final String FETCH_FIELD_BODY_PEEK_SANE = String.format(Locale.US, "BODY.PEEK[]<0.%d>", ImapStore.FETCH_BODY_SANE_SUGGESTED_SIZE); public static final String FETCH_FIELD_HEADERS = - "BODY.PEEK[HEADER.FIELDS (date subject from content-type to cc message-id)]"; + "BODY.PEEK[HEADER.FIELDS (date subject from content-type to cc message-id content-duration)]"; public static final String ALERT = "ALERT"; public static final String APPEND = "APPEND"; |