diff options
author | Sandro Knauß <sknauss@kde.org> | 2016-11-15 15:53:26 +0100 |
---|---|---|
committer | Sandro Knauß <sknauss@kde.org> | 2016-11-15 17:33:41 +0100 |
commit | df9e47668b510e9dc92e4c98d17764ae626809dc (patch) | |
tree | a76636d5e3b795860a11dc019695baf9fc6e4afb /framework/domain/mimetreeparser/interface.cpp | |
parent | fa653689133887a566a6855ac99abb755c4f41dd (diff) | |
download | kube-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.cpp | 26 |
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 | ||
363 | void PartPrivate::createMailMime(const MimeTreeParser::EncryptedMessagePart::Ptr& part) | ||
364 | { | ||
365 | mMailMime = MailMime::Ptr(new MailMime); | ||
366 | mMailMime->d->mNode = part->mNode; | ||
367 | } | ||
368 | |||
362 | void PartPrivate::appendSubPart(Part::Ptr subpart) | 369 | void 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 | ||
836 | void 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 | |||
825 | SinglePart::SinglePart() | 844 | SinglePart::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); |