From ee1180e34c30fc05f59599cda29dbd1935d1b7f8 Mon Sep 17 00:00:00 2001 From: cketti Date: Fri, 6 Feb 2015 20:11:58 +0100 Subject: [PATCH] Use Part from MessageViewContainer for K9WebViewClient Now K9WebViewClient can find encrypted attachments referenced by Content-ID. --- .../ui/messageview/MessageContainerView.java | 6 ++--- .../k9/ui/messageview/MessageTopView.java | 3 +-- .../com/fsck/k9/view/K9WebViewClient.java | 23 +++++++++---------- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java index d1fe458bc..a038366e1 100644 --- a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java +++ b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java @@ -35,7 +35,6 @@ import com.fsck.k9.R; import com.fsck.k9.helper.ClipboardManager; import com.fsck.k9.helper.Contacts; import com.fsck.k9.mail.Address; -import com.fsck.k9.mail.Message; import com.fsck.k9.mail.MessagingException; import com.fsck.k9.mailstore.AttachmentViewInfo; import com.fsck.k9.mailstore.MessageViewInfo.MessageViewContainer; @@ -424,11 +423,10 @@ public class MessageContainerView extends LinearLayout implements OnClickListene } } - public void setMessageViewContainer(Message message, MessageViewContainer messageViewContainer) - throws MessagingException { + public void setMessageViewContainer(MessageViewContainer messageViewContainer) throws MessagingException { resetView(); - WebViewClient webViewClient = K9WebViewClient.newInstance(message); + WebViewClient webViewClient = K9WebViewClient.newInstance(messageViewContainer.rootPart); mMessageContentView.setWebViewClient(webViewClient); // Save the text so we can reset the WebView when the user clicks the "Show pictures" button diff --git a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.java b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.java index 9a3e49941..838e4bd80 100644 --- a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.java +++ b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageTopView.java @@ -65,12 +65,11 @@ public class MessageTopView extends LinearLayout { throws MessagingException { resetView(); - Message message = messageViewInfo.message; for (MessageViewContainer container : messageViewInfo.containers) { MessageContainerView view = (MessageContainerView) mInflater.inflate(R.layout.message_container, null); view.initialize(fragment, attachmentCallback, openPgpHeaderViewCallback, !Account.NO_OPENPGP_PROVIDER.equals(account.getOpenPgpProvider())); - view.setMessageViewContainer(message, container); + view.setMessageViewContainer(container); containerViews.addView(view); } diff --git a/k9mail/src/main/java/com/fsck/k9/view/K9WebViewClient.java b/k9mail/src/main/java/com/fsck/k9/view/K9WebViewClient.java index 7f5dbc206..a52c64f5d 100644 --- a/k9mail/src/main/java/com/fsck/k9/view/K9WebViewClient.java +++ b/k9mail/src/main/java/com/fsck/k9/view/K9WebViewClient.java @@ -19,7 +19,6 @@ import android.webkit.WebViewClient; import com.fsck.k9.K9; import com.fsck.k9.mail.Body; -import com.fsck.k9.mail.Message; import com.fsck.k9.mail.Multipart; import com.fsck.k9.mail.Part; import com.fsck.k9.mailstore.AttachmentViewInfo; @@ -34,19 +33,19 @@ public abstract class K9WebViewClient extends WebViewClient { private static final WebResourceResponse RESULT_DO_NOT_INTERCEPT = null; private static final WebResourceResponse RESULT_DUMMY_RESPONSE = new WebResourceResponse(null, null, null); - public static WebViewClient newInstance(Message message) { + public static WebViewClient newInstance(Part part) { if (Build.VERSION.SDK_INT < 21) { - return new PreLollipopWebViewClient(message); + return new PreLollipopWebViewClient(part); } - return new LollipopWebViewClient(message); + return new LollipopWebViewClient(part); } - private final Message message; + private final Part part; - private K9WebViewClient(Message message) { - this.message = message; + private K9WebViewClient(Part part) { + this.part = part; } protected WebResourceResponse shouldInterceptRequest(WebView webView, Uri uri) { @@ -80,7 +79,7 @@ public abstract class K9WebViewClient extends WebViewClient { private Part getPartForContentId(String cid) { Stack partsToCheck = new Stack(); - partsToCheck.push(message); + partsToCheck.push(part); while (!partsToCheck.isEmpty()) { Part part = partsToCheck.pop(); @@ -101,8 +100,8 @@ public abstract class K9WebViewClient extends WebViewClient { private static class PreLollipopWebViewClient extends K9WebViewClient { - protected PreLollipopWebViewClient(Message message) { - super(message); + protected PreLollipopWebViewClient(Part part) { + super(part); } @SuppressWarnings("deprecation") @@ -114,8 +113,8 @@ public abstract class K9WebViewClient extends WebViewClient { @TargetApi(VERSION_CODES.LOLLIPOP) private static class LollipopWebViewClient extends K9WebViewClient { - protected LollipopWebViewClient(Message message) { - super(message); + protected LollipopWebViewClient(Part part) { + super(part); } @Override