summaryrefslogtreecommitdiffstats
path: root/framework/domain/mimetreeparser/interface.cpp
diff options
context:
space:
mode:
authorSandro Knauß <sknauss@kde.org>2016-11-15 15:53:26 +0100
committerSandro Knauß <sknauss@kde.org>2016-11-15 17:33:41 +0100
commitdf9e47668b510e9dc92e4c98d17764ae626809dc (patch)
treea76636d5e3b795860a11dc019695baf9fc6e4afb /framework/domain/mimetreeparser/interface.cpp
parentfa653689133887a566a6855ac99abb755c4f41dd (diff)
downloadkube-df9e47668b510e9dc92e4c98d17764ae626809dc.tar.gz
kube-df9e47668b510e9dc92e4c98d17764ae626809dc.zip
Add mimetreeparsertest for different gpgme errors
Diffstat (limited to 'framework/domain/mimetreeparser/interface.cpp')
-rw-r--r--framework/domain/mimetreeparser/interface.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/framework/domain/mimetreeparser/interface.cpp b/framework/domain/mimetreeparser/interface.cpp
index 6184ae82..15e28349 100644
--- a/framework/domain/mimetreeparser/interface.cpp
+++ b/framework/domain/mimetreeparser/interface.cpp
@@ -308,6 +308,7 @@ public:
308 void createMailMime(const MimeTreeParser::TextMessagePart::Ptr &part); 308 void createMailMime(const MimeTreeParser::TextMessagePart::Ptr &part);
309 void createMailMime(const MimeTreeParser::AlternativeMessagePart::Ptr &part); 309 void createMailMime(const MimeTreeParser::AlternativeMessagePart::Ptr &part);
310 void createMailMime(const MimeTreeParser::HtmlMessagePart::Ptr &part); 310 void createMailMime(const MimeTreeParser::HtmlMessagePart::Ptr &part);
311 void createMailMime(const MimeTreeParser::EncryptedMessagePart::Ptr &part);
311 312
312 static Encryption::Ptr createEncryption(const MimeTreeParser::EncryptedMessagePart::Ptr& part); 313 static Encryption::Ptr createEncryption(const MimeTreeParser::EncryptedMessagePart::Ptr& part);
313 void appendEncryption(const MimeTreeParser::EncryptedMessagePart::Ptr &part); 314 void appendEncryption(const MimeTreeParser::EncryptedMessagePart::Ptr &part);
@@ -359,6 +360,12 @@ void PartPrivate::createMailMime(const MimeTreeParser::MimeMessagePart::Ptr& par
359 mMailMime->d->mNode = part->mNode; 360 mMailMime->d->mNode = part->mNode;
360} 361}
361 362
363void PartPrivate::createMailMime(const MimeTreeParser::EncryptedMessagePart::Ptr& part)
364{
365 mMailMime = MailMime::Ptr(new MailMime);
366 mMailMime->d->mNode = part->mNode;
367}
368
362void PartPrivate::appendSubPart(Part::Ptr subpart) 369void PartPrivate::appendSubPart(Part::Ptr subpart)
363{ 370{
364 subpart->d->mParent = q; 371 subpart->d->mParent = q;
@@ -763,6 +770,7 @@ public:
763 void fillFrom(MimeTreeParser::TextMessagePart::Ptr part); 770 void fillFrom(MimeTreeParser::TextMessagePart::Ptr part);
764 void fillFrom(MimeTreeParser::HtmlMessagePart::Ptr part); 771 void fillFrom(MimeTreeParser::HtmlMessagePart::Ptr part);
765 void fillFrom(MimeTreeParser::AttachmentMessagePart::Ptr part); 772 void fillFrom(MimeTreeParser::AttachmentMessagePart::Ptr part);
773 void createEncryptionFailBlock(const MimeTreeParser::EncryptedMessagePart::Ptr &part);
766 SinglePart *q; 774 SinglePart *q;
767 775
768 QVector<Content::Ptr> mContent; 776 QVector<Content::Ptr> mContent;
@@ -781,6 +789,9 @@ void SinglePartPrivate::fillFrom(MimeTreeParser::TextMessagePart::Ptr part)
781 auto sig = mp.dynamicCast<MimeTreeParser::SignedMessagePart>(); 789 auto sig = mp.dynamicCast<MimeTreeParser::SignedMessagePart>();
782 if (enc) { 790 if (enc) {
783 d_ptr->appendEncryption(enc); 791 d_ptr->appendEncryption(enc);
792 if (!enc->isDecryptable()) {
793 d_ptr->mContent = QByteArray();
794 }
784 const auto s = enc->subParts(); 795 const auto s = enc->subParts();
785 if (s.size() == 1) { 796 if (s.size() == 1) {
786 sig = s[0].dynamicCast<MimeTreeParser::SignedMessagePart>(); 797 sig = s[0].dynamicCast<MimeTreeParser::SignedMessagePart>();
@@ -822,6 +833,14 @@ void SinglePartPrivate::fillFrom(MimeTreeParser::AttachmentMessagePart::Ptr part
822 } 833 }
823} 834}
824 835
836void SinglePartPrivate::createEncryptionFailBlock(const MimeTreeParser::EncryptedMessagePart::Ptr &part)
837{
838 mType = "plaintext";
839 mContent.clear();
840 mContent.append(std::make_shared<PlainTextContent>(QByteArray(), q));
841 q->reachParentD()->createMailMime(part);
842}
843
825SinglePart::SinglePart() 844SinglePart::SinglePart()
826 : d(std::unique_ptr<SinglePartPrivate>(new SinglePartPrivate)) 845 : d(std::unique_ptr<SinglePartPrivate>(new SinglePartPrivate))
827{ 846{
@@ -917,6 +936,13 @@ void ParserPrivate::createTree(const MimeTreeParser::MessagePart::Ptr &start, co
917 auto subTree = std::make_shared<Part>(); 936 auto subTree = std::make_shared<Part>();
918 if (enc) { 937 if (enc) {
919 subTree->d->appendEncryption(enc); 938 subTree->d->appendEncryption(enc);
939 if (!enc->isDecryptable()) {
940 auto part = std::make_shared<SinglePart>();
941 part->d->createEncryptionFailBlock(enc);
942 part->reachParentD()->setEncryptions(subTree->d->encryptions());
943 tree->d->appendSubPart(part);
944 return;
945 }
920 } 946 }
921 if (sig) { 947 if (sig) {
922 subTree->d->appendSignature(sig); 948 subTree->d->appendSignature(sig);