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.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

View File

@ -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);
}

View File

@ -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<Part> partsToCheck = new Stack<Part>();
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