Change "appendQuotedText" to "useSmartReply" in Rfc822Output

Slight API change to make it more clear what the method parameter is for.
Also add some additonal test conditions to the Rfc822Output tests.

Change-Id: I8888d6201e79136fa3420aa9d5f921772f374e56
This commit is contained in:
Todd Kennedy 2011-03-01 13:30:21 -08:00
parent 23d6be4d21
commit 0d49ef78eb
4 changed files with 59 additions and 54 deletions

View File

@ -217,7 +217,9 @@ public class SmtpSender extends Sender {
executeSimpleCommand("DATA");
// TODO byte stuffing
Rfc822Output.writeTo(mContext, messageId,
new EOLConvertingOutputStream(mTransport.getOutputStream()), true, false);
new EOLConvertingOutputStream(mTransport.getOutputStream()),
false /* do not use smart reply */,
false /* do not send BCC */);
executeSimpleCommand("\r\n.");
} catch (IOException ioe) {
throw new MessagingException("Unable to send message", ioe);

View File

@ -62,7 +62,7 @@ public class Rfc822Output {
Attachment.FLAG_SMART_FORWARD + ")=0";
/*package*/ static String buildBodyText(Context context, Message message,
boolean appendQuotedText) {
boolean useSmartReply) {
Body body = Body.restoreBodyWithMessageId(context, message.mId);
if (body == null) {
return null;
@ -77,8 +77,8 @@ public class Rfc822Output {
String intro = body.mIntroText == null ? "" : body.mIntroText;
text += intro;
}
if (!appendQuotedText) {
// appendQuotedText is set to false for use by SmartReply/SmartForward in EAS.
if (useSmartReply) {
// useSmartReply is set to true for use by SmartReply/SmartForward in EAS.
// SmartForward doesn't put a break between the original and new text, so we add an LF
if (isForward) {
text += "\n";
@ -112,12 +112,12 @@ public class Rfc822Output {
* @param context system context for accessing the provider
* @param messageId the message to write out
* @param out the output stream to write the message to
* @param appendQuotedText whether or not to append quoted text if this is a reply/forward
* @param useSmartReply whether or not quoted text is appended to a reply/forward
*
* TODO alternative parts (e.g. text+html) are not supported here.
*/
public static void writeTo(Context context, long messageId, OutputStream out,
boolean appendQuotedText, boolean sendBcc) throws IOException, MessagingException {
boolean useSmartReply, boolean sendBcc) throws IOException, MessagingException {
Message message = Message.restoreMessageWithId(context, messageId);
if (message == null) {
// throw something?
@ -149,7 +149,7 @@ public class Rfc822Output {
writeHeader(writer, "MIME-Version", "1.0");
// Analyze message and determine if we have multiparts
String text = buildBodyText(context, message, appendQuotedText);
String text = buildBodyText(context, message, useSmartReply);
Uri uri = ContentUris.withAppendedId(Attachment.MESSAGE_ID_URI, messageId);
Cursor attachmentsCursor = context.getContentResolver().query(uri,

View File

@ -444,7 +444,7 @@ public class ProviderTestUtils extends Assert {
File outputFile = File.createTempFile("message", "tmp", directory);
assertNotNull(outputFile);
FileOutputStream outputStream = new FileOutputStream(outputFile);
Rfc822Output.writeTo(context, msg.mId, outputStream, false, false);
Rfc822Output.writeTo(context, msg.mId, outputStream, true, false);
outputStream.close();
return Uri.fromFile(outputFile);

View File

@ -48,10 +48,8 @@ import java.util.List;
*/
public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
private static final String SENDER = "sender@android.com";
private static final String REPLYTO = "replyto@android.com";
private static final String RECIPIENT_TO = "recipient-to@android.com";
private static final String RECIPIENT_CC = "recipient-cc@android.com";
private static final String RECIPIENT_BCC = "recipient-bcc@android.com";
private static final String SUBJECT = "This is the subject";
private static final String BODY = "This is the body. This is also the body.";
private static final String TEXT = "Here is some new text.";
@ -59,7 +57,6 @@ public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
private Context mMockContext;
private String mForwardIntro;
private String mReplyIntro;
private String mReplyBody;
public Rfc822OutputTests () {
super(EmailProvider.class, EmailContent.AUTHORITY);
@ -72,7 +69,6 @@ public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
mForwardIntro = mMockContext.getString(R.string.message_compose_fwd_header_fmt, SUBJECT,
SENDER, RECIPIENT_TO, RECIPIENT_CC);
mReplyIntro = mMockContext.getString(R.string.message_compose_reply_header_fmt, SENDER);
mReplyBody = mReplyIntro + ">" + BODY;
}
// TODO Create more tests here. Specifically, we should test to make sure that forward works
@ -86,51 +82,58 @@ public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
* Compare with expected values.
* Also test the situation where the message has no body.
*/
public void testBuildBodyTextWithReply() {
// Create the least necessary; sender, flags, and the body of the reply
Message msg = new Message();
msg.mText = "";
msg.mFrom = SENDER;
msg.mFlags = Message.FLAG_TYPE_REPLY;
msg.mTextReply = BODY;
msg.mIntroText = mReplyIntro;
msg.save(mMockContext);
public void testBuildBodyText() {
// Test sending a message *without* using smart reply
Message message1 = new Message();
message1.mText = "";
message1.mFrom = SENDER;
message1.mFlags = Message.FLAG_TYPE_REPLY;
message1.mTextReply = BODY;
message1.mIntroText = mReplyIntro;
message1.save(mMockContext);
String body = Rfc822Output.buildBodyText(mMockContext, msg, true);
assertEquals(mReplyBody, body);
String body1 = Rfc822Output.buildBodyText(mMockContext, message1, false);
assertEquals(mReplyIntro + ">" + BODY, body1);
message1.mId = -1;
message1.mText = TEXT;
message1.save(mMockContext);
body1 = Rfc822Output.buildBodyText(mMockContext, message1, false);
assertEquals(TEXT + mReplyIntro + ">" + BODY, body1);
// Save a different message with no reply body (so we reset the id)
msg.mId = -1;
msg.mTextReply = null;
msg.save(mMockContext);
body = Rfc822Output.buildBodyText(mMockContext, msg, true);
assertEquals(mReplyIntro, body);
}
message1.mId = -1;
message1.mTextReply = null;
message1.save(mMockContext);
body1 = Rfc822Output.buildBodyText(mMockContext, message1, false);
assertEquals(TEXT + mReplyIntro, body1);
/**
* Test for buildBodyText().
* Compare with expected values.
* Also test the situation where the message has no body.
*/
public void testBuildBodyTextWithoutReply() {
// Create the least necessary; sender, flags, and the body of the reply
Message msg = new Message();
msg.mText = TEXT;
msg.mFrom = SENDER;
msg.mFlags = Message.FLAG_TYPE_REPLY;
msg.mTextReply = BODY;
msg.mIntroText = mReplyIntro;
msg.save(mMockContext);
// Test sending a message *with* using smart reply
Message message2 = new Message();
message2.mText = "";
message2.mFrom = SENDER;
message2.mFlags = Message.FLAG_TYPE_REPLY;
message2.mTextReply = BODY;
message2.mIntroText = mReplyIntro;
message2.save(mMockContext);
String body = Rfc822Output.buildBodyText(mMockContext, msg, false);
assertEquals(TEXT + mReplyIntro, body);
String body2 = Rfc822Output.buildBodyText(mMockContext, message2, true);
assertEquals(mReplyIntro, body2);
message2.mId = -1;
message2.mText = TEXT;
message2.save(mMockContext);
body2 = Rfc822Output.buildBodyText(mMockContext, message2, true);
assertEquals(TEXT + mReplyIntro, body2);
// Save a different message with no reply body (so we reset the id)
msg.mId = -1;
msg.mTextReply = null;
msg.save(mMockContext);
body = Rfc822Output.buildBodyText(mMockContext, msg, false);
assertEquals(TEXT + mReplyIntro, body);
message2.mId = -1;
message2.mTextReply = null;
message2.save(mMockContext);
body2 = Rfc822Output.buildBodyText(mMockContext, message2, true);
assertEquals(TEXT + mReplyIntro, body2);
}
/**
@ -148,7 +151,7 @@ public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
msg.mTextReply = BODY;
msg.mIntroText = mForwardIntro;
msg.save(mMockContext);
String body = Rfc822Output.buildBodyText(mMockContext, msg, true);
String body = Rfc822Output.buildBodyText(mMockContext, msg, false);
assertEquals(TEXT + mForwardIntro + BODY, body);
}
@ -162,7 +165,7 @@ public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
// Write out an Rfc822 message
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
Rfc822Output.writeTo(mMockContext, msg.mId, byteStream, false, false);
Rfc822Output.writeTo(mMockContext, msg.mId, byteStream, true, false);
// Get the message and create a mime4j message from it
// We'll take advantage of its parsing capabilities
@ -196,7 +199,7 @@ public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
// Write out an Rfc822 message
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
Rfc822Output.writeTo(mMockContext, msg.mId, byteStream, false, false);
Rfc822Output.writeTo(mMockContext, msg.mId, byteStream, true, false);
// Get the message and create a mime4j message from it
// We'll take advantage of its parsing capabilities
@ -240,7 +243,7 @@ public class Rfc822OutputTests extends ProviderTestCase2<EmailProvider> {
// Write out an Rfc822 message
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
Rfc822Output.writeTo(mMockContext, msg.mId, byteStream, false, false);
Rfc822Output.writeTo(mMockContext, msg.mId, byteStream, true, false);
// Get the message and create a mime4j message from it
// We'll take advantage of its parsing capabilities