1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-08-13 17:03:48 -04:00

Use Part from MessageViewContainer for K9WebViewClient

Now K9WebViewClient can find encrypted attachments referenced by Content-ID.
This commit is contained in:
cketti 2015-02-06 20:11:58 +01:00
parent cadac6dd89
commit ee1180e34c
3 changed files with 14 additions and 18 deletions

View File

@ -35,7 +35,6 @@ import com.fsck.k9.R;
import com.fsck.k9.helper.ClipboardManager; import com.fsck.k9.helper.ClipboardManager;
import com.fsck.k9.helper.Contacts; import com.fsck.k9.helper.Contacts;
import com.fsck.k9.mail.Address; import com.fsck.k9.mail.Address;
import com.fsck.k9.mail.Message;
import com.fsck.k9.mail.MessagingException; import com.fsck.k9.mail.MessagingException;
import com.fsck.k9.mailstore.AttachmentViewInfo; import com.fsck.k9.mailstore.AttachmentViewInfo;
import com.fsck.k9.mailstore.MessageViewInfo.MessageViewContainer; 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) public void setMessageViewContainer(MessageViewContainer messageViewContainer) throws MessagingException {
throws MessagingException {
resetView(); resetView();
WebViewClient webViewClient = K9WebViewClient.newInstance(message); WebViewClient webViewClient = K9WebViewClient.newInstance(messageViewContainer.rootPart);
mMessageContentView.setWebViewClient(webViewClient); mMessageContentView.setWebViewClient(webViewClient);
// Save the text so we can reset the WebView when the user clicks the "Show pictures" button // Save the text so we can reset the WebView when the user clicks the "Show pictures" button

View File

@ -65,12 +65,11 @@ public class MessageTopView extends LinearLayout {
throws MessagingException { throws MessagingException {
resetView(); resetView();
Message message = messageViewInfo.message;
for (MessageViewContainer container : messageViewInfo.containers) { for (MessageViewContainer container : messageViewInfo.containers) {
MessageContainerView view = (MessageContainerView) mInflater.inflate(R.layout.message_container, null); MessageContainerView view = (MessageContainerView) mInflater.inflate(R.layout.message_container, null);
view.initialize(fragment, attachmentCallback, openPgpHeaderViewCallback, view.initialize(fragment, attachmentCallback, openPgpHeaderViewCallback,
!Account.NO_OPENPGP_PROVIDER.equals(account.getOpenPgpProvider())); !Account.NO_OPENPGP_PROVIDER.equals(account.getOpenPgpProvider()));
view.setMessageViewContainer(message, container); view.setMessageViewContainer(container);
containerViews.addView(view); containerViews.addView(view);
} }

View File

@ -19,7 +19,6 @@ import android.webkit.WebViewClient;
import com.fsck.k9.K9; import com.fsck.k9.K9;
import com.fsck.k9.mail.Body; import com.fsck.k9.mail.Body;
import com.fsck.k9.mail.Message;
import com.fsck.k9.mail.Multipart; import com.fsck.k9.mail.Multipart;
import com.fsck.k9.mail.Part; import com.fsck.k9.mail.Part;
import com.fsck.k9.mailstore.AttachmentViewInfo; 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_DO_NOT_INTERCEPT = null;
private static final WebResourceResponse RESULT_DUMMY_RESPONSE = new WebResourceResponse(null, null, 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) { 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) { private K9WebViewClient(Part part) {
this.message = message; this.part = part;
} }
protected WebResourceResponse shouldInterceptRequest(WebView webView, Uri uri) { protected WebResourceResponse shouldInterceptRequest(WebView webView, Uri uri) {
@ -80,7 +79,7 @@ public abstract class K9WebViewClient extends WebViewClient {
private Part getPartForContentId(String cid) { private Part getPartForContentId(String cid) {
Stack<Part> partsToCheck = new Stack<Part>(); Stack<Part> partsToCheck = new Stack<Part>();
partsToCheck.push(message); partsToCheck.push(part);
while (!partsToCheck.isEmpty()) { while (!partsToCheck.isEmpty()) {
Part part = partsToCheck.pop(); Part part = partsToCheck.pop();
@ -101,8 +100,8 @@ public abstract class K9WebViewClient extends WebViewClient {
private static class PreLollipopWebViewClient extends K9WebViewClient { private static class PreLollipopWebViewClient extends K9WebViewClient {
protected PreLollipopWebViewClient(Message message) { protected PreLollipopWebViewClient(Part part) {
super(message); super(part);
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@ -114,8 +113,8 @@ public abstract class K9WebViewClient extends WebViewClient {
@TargetApi(VERSION_CODES.LOLLIPOP) @TargetApi(VERSION_CODES.LOLLIPOP)
private static class LollipopWebViewClient extends K9WebViewClient { private static class LollipopWebViewClient extends K9WebViewClient {
protected LollipopWebViewClient(Message message) { protected LollipopWebViewClient(Part part) {
super(message); super(part);
} }
@Override @Override