Loading k9mail/src/main/java/com/fsck/k9/Globals.java 0 → 100644 +21 −0 Original line number Diff line number Diff line package com.fsck.k9; import android.content.Context; public class Globals { private static Context context; static void setContext(Context context) { Globals.context = context; } public static Context getContext() { if (context == null) { throw new IllegalStateException("No context provided"); } return context; } } k9mail/src/main/java/com/fsck/k9/K9.java +1 −0 Original line number Diff line number Diff line Loading @@ -505,6 +505,7 @@ public class K9 extends Application { super.onCreate(); app = this; Globals.setContext(this); K9MailLib.setDebugStatus(new K9MailLib.DebugStatus() { @Override public boolean enabled() { Loading k9mail/src/main/java/com/fsck/k9/mailstore/AttachmentResolver.java +4 −5 Original line number Diff line number Diff line Loading @@ -6,7 +6,6 @@ import java.util.HashMap; import java.util.Map; import java.util.Stack; import android.content.Context; import android.net.Uri; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; Loading Loading @@ -42,14 +41,14 @@ public class AttachmentResolver { } @WorkerThread public static AttachmentResolver createFromPart(Context context, Part part) { public static AttachmentResolver createFromPart(Part part) { AttachmentInfoExtractor attachmentInfoExtractor = AttachmentInfoExtractor.getInstance(); Map<String, Uri> contentIdToAttachmentUriMap = buildCidToAttachmentUriMap(context, attachmentInfoExtractor, part); Map<String, Uri> contentIdToAttachmentUriMap = buildCidToAttachmentUriMap(attachmentInfoExtractor, part); return new AttachmentResolver(contentIdToAttachmentUriMap); } @VisibleForTesting static Map<String,Uri> buildCidToAttachmentUriMap(Context context, AttachmentInfoExtractor attachmentInfoExtractor, static Map<String,Uri> buildCidToAttachmentUriMap(AttachmentInfoExtractor attachmentInfoExtractor, Part rootPart) { HashMap<String,Uri> result = new HashMap<>(); Loading @@ -69,7 +68,7 @@ public class AttachmentResolver { try { String contentId = part.getContentId(); if (contentId != null) { AttachmentViewInfo attachmentInfo = attachmentInfoExtractor.extractAttachmentInfo(context, part); AttachmentViewInfo attachmentInfo = attachmentInfoExtractor.extractAttachmentInfo(part); result.put(contentId, attachmentInfo.uri); } } catch (MessagingException e) { Loading k9mail/src/main/java/com/fsck/k9/mailstore/MessageViewInfoExtractor.java +2 −2 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public class MessageViewInfoExtractor { extraViewableText = extraViewable.text; } AttachmentResolver attachmentResolver = AttachmentResolver.createFromPart(context, rootPart); AttachmentResolver attachmentResolver = AttachmentResolver.createFromPart(rootPart); return MessageViewInfo.createWithExtractedContent(message, rootPart, viewable.html, attachmentInfos, cryptoResultAnnotation, extraViewableText, extraAttachmentInfos, attachmentResolver); Loading @@ -89,7 +89,7 @@ public class MessageViewInfoExtractor { MessageExtractor.findViewablesAndAttachments(part, viewableParts, attachments); } attachmentInfos.addAll(attachmentInfoExtractor.extractAttachmentInfos(context, attachments)); attachmentInfos.addAll(attachmentInfoExtractor.extractAttachmentInfos(attachments)); return MessageViewInfoExtractor.extractTextFromViewables(context, viewableParts); } Loading k9mail/src/main/java/com/fsck/k9/message/extractors/AttachmentInfoExtractor.java +15 −9 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.util.Log; import com.fsck.k9.Globals; import com.fsck.k9.K9; import com.fsck.k9.mail.Body; import com.fsck.k9.mail.MessagingException; Loading @@ -26,25 +27,30 @@ import com.fsck.k9.provider.DecryptedFileProvider; public class AttachmentInfoExtractor { @VisibleForTesting AttachmentInfoExtractor() { } private final Context context; public static AttachmentInfoExtractor getInstance() { return new AttachmentInfoExtractor(); Context context = Globals.getContext(); return new AttachmentInfoExtractor(context); } @VisibleForTesting AttachmentInfoExtractor(Context context) { this.context = context; } public List<AttachmentViewInfo> extractAttachmentInfos(Context context, List<Part> attachmentParts) throws MessagingException { public List<AttachmentViewInfo> extractAttachmentInfos(List<Part> attachmentParts) throws MessagingException { List<AttachmentViewInfo> attachments = new ArrayList<>(); for (Part part : attachmentParts) { attachments.add(extractAttachmentInfo(context, part)); attachments.add(extractAttachmentInfo(part)); } return attachments; } public AttachmentViewInfo extractAttachmentInfo(Context context, Part part) throws MessagingException { public AttachmentViewInfo extractAttachmentInfo(Part part) throws MessagingException { Uri uri; long size; if (part instanceof LocalPart) { Loading @@ -58,7 +64,7 @@ public class AttachmentInfoExtractor { if (body instanceof DeferredFileBody) { DeferredFileBody decryptedTempFileBody = (DeferredFileBody) body; size = decryptedTempFileBody.getSize(); uri = getDecryptedFileProviderUri(context, decryptedTempFileBody, part.getMimeType()); uri = getDecryptedFileProviderUri(decryptedTempFileBody, part.getMimeType()); return extractAttachmentInfo(part, uri, size); } else { throw new IllegalArgumentException("Unsupported part type provided"); Loading @@ -70,7 +76,7 @@ public class AttachmentInfoExtractor { @Nullable @VisibleForTesting protected Uri getDecryptedFileProviderUri(Context context, DeferredFileBody decryptedTempFileBody, String mimeType) { protected Uri getDecryptedFileProviderUri(DeferredFileBody decryptedTempFileBody, String mimeType) { Uri uri; try { File file = decryptedTempFileBody.getFile(); Loading Loading
k9mail/src/main/java/com/fsck/k9/Globals.java 0 → 100644 +21 −0 Original line number Diff line number Diff line package com.fsck.k9; import android.content.Context; public class Globals { private static Context context; static void setContext(Context context) { Globals.context = context; } public static Context getContext() { if (context == null) { throw new IllegalStateException("No context provided"); } return context; } }
k9mail/src/main/java/com/fsck/k9/K9.java +1 −0 Original line number Diff line number Diff line Loading @@ -505,6 +505,7 @@ public class K9 extends Application { super.onCreate(); app = this; Globals.setContext(this); K9MailLib.setDebugStatus(new K9MailLib.DebugStatus() { @Override public boolean enabled() { Loading
k9mail/src/main/java/com/fsck/k9/mailstore/AttachmentResolver.java +4 −5 Original line number Diff line number Diff line Loading @@ -6,7 +6,6 @@ import java.util.HashMap; import java.util.Map; import java.util.Stack; import android.content.Context; import android.net.Uri; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; Loading Loading @@ -42,14 +41,14 @@ public class AttachmentResolver { } @WorkerThread public static AttachmentResolver createFromPart(Context context, Part part) { public static AttachmentResolver createFromPart(Part part) { AttachmentInfoExtractor attachmentInfoExtractor = AttachmentInfoExtractor.getInstance(); Map<String, Uri> contentIdToAttachmentUriMap = buildCidToAttachmentUriMap(context, attachmentInfoExtractor, part); Map<String, Uri> contentIdToAttachmentUriMap = buildCidToAttachmentUriMap(attachmentInfoExtractor, part); return new AttachmentResolver(contentIdToAttachmentUriMap); } @VisibleForTesting static Map<String,Uri> buildCidToAttachmentUriMap(Context context, AttachmentInfoExtractor attachmentInfoExtractor, static Map<String,Uri> buildCidToAttachmentUriMap(AttachmentInfoExtractor attachmentInfoExtractor, Part rootPart) { HashMap<String,Uri> result = new HashMap<>(); Loading @@ -69,7 +68,7 @@ public class AttachmentResolver { try { String contentId = part.getContentId(); if (contentId != null) { AttachmentViewInfo attachmentInfo = attachmentInfoExtractor.extractAttachmentInfo(context, part); AttachmentViewInfo attachmentInfo = attachmentInfoExtractor.extractAttachmentInfo(part); result.put(contentId, attachmentInfo.uri); } } catch (MessagingException e) { Loading
k9mail/src/main/java/com/fsck/k9/mailstore/MessageViewInfoExtractor.java +2 −2 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public class MessageViewInfoExtractor { extraViewableText = extraViewable.text; } AttachmentResolver attachmentResolver = AttachmentResolver.createFromPart(context, rootPart); AttachmentResolver attachmentResolver = AttachmentResolver.createFromPart(rootPart); return MessageViewInfo.createWithExtractedContent(message, rootPart, viewable.html, attachmentInfos, cryptoResultAnnotation, extraViewableText, extraAttachmentInfos, attachmentResolver); Loading @@ -89,7 +89,7 @@ public class MessageViewInfoExtractor { MessageExtractor.findViewablesAndAttachments(part, viewableParts, attachments); } attachmentInfos.addAll(attachmentInfoExtractor.extractAttachmentInfos(context, attachments)); attachmentInfos.addAll(attachmentInfoExtractor.extractAttachmentInfos(attachments)); return MessageViewInfoExtractor.extractTextFromViewables(context, viewableParts); } Loading
k9mail/src/main/java/com/fsck/k9/message/extractors/AttachmentInfoExtractor.java +15 −9 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.util.Log; import com.fsck.k9.Globals; import com.fsck.k9.K9; import com.fsck.k9.mail.Body; import com.fsck.k9.mail.MessagingException; Loading @@ -26,25 +27,30 @@ import com.fsck.k9.provider.DecryptedFileProvider; public class AttachmentInfoExtractor { @VisibleForTesting AttachmentInfoExtractor() { } private final Context context; public static AttachmentInfoExtractor getInstance() { return new AttachmentInfoExtractor(); Context context = Globals.getContext(); return new AttachmentInfoExtractor(context); } @VisibleForTesting AttachmentInfoExtractor(Context context) { this.context = context; } public List<AttachmentViewInfo> extractAttachmentInfos(Context context, List<Part> attachmentParts) throws MessagingException { public List<AttachmentViewInfo> extractAttachmentInfos(List<Part> attachmentParts) throws MessagingException { List<AttachmentViewInfo> attachments = new ArrayList<>(); for (Part part : attachmentParts) { attachments.add(extractAttachmentInfo(context, part)); attachments.add(extractAttachmentInfo(part)); } return attachments; } public AttachmentViewInfo extractAttachmentInfo(Context context, Part part) throws MessagingException { public AttachmentViewInfo extractAttachmentInfo(Part part) throws MessagingException { Uri uri; long size; if (part instanceof LocalPart) { Loading @@ -58,7 +64,7 @@ public class AttachmentInfoExtractor { if (body instanceof DeferredFileBody) { DeferredFileBody decryptedTempFileBody = (DeferredFileBody) body; size = decryptedTempFileBody.getSize(); uri = getDecryptedFileProviderUri(context, decryptedTempFileBody, part.getMimeType()); uri = getDecryptedFileProviderUri(decryptedTempFileBody, part.getMimeType()); return extractAttachmentInfo(part, uri, size); } else { throw new IllegalArgumentException("Unsupported part type provided"); Loading @@ -70,7 +76,7 @@ public class AttachmentInfoExtractor { @Nullable @VisibleForTesting protected Uri getDecryptedFileProviderUri(Context context, DeferredFileBody decryptedTempFileBody, String mimeType) { protected Uri getDecryptedFileProviderUri(DeferredFileBody decryptedTempFileBody, String mimeType) { Uri uri; try { File file = decryptedTempFileBody.getFile(); Loading