Hello community, here is the log from the commit of package messagelib for openSUSE:Factory checked in at 2016-10-18 10:14:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/messagelib (Old) and /work/SRC/openSUSE:Factory/.messagelib.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "messagelib" Changes: -------- --- /work/SRC/openSUSE:Factory/messagelib/messagelib.changes 2016-09-14 23:05:20.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.messagelib.new/messagelib.changes 2016-10-18 10:14:22.000000000 +0200 @@ -1,0 +2,6 @@ +Tue Oct 11 20:49:01 UTC 2016 - [email protected] + +- KDE Applications 16.08.2 +https://www.kde.org/announcements/announce-applications-16.08.2.php + +------------------------------------------------------------------- Old: ---- messagelib-16.08.1.tar.xz New: ---- messagelib-16.08.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ messagelib.spec ++++++ --- /var/tmp/diff_new_pack.H3Vume/_old 2016-10-18 10:14:24.000000000 +0200 +++ /var/tmp/diff_new_pack.H3Vume/_new 2016-10-18 10:14:24.000000000 +0200 @@ -17,7 +17,7 @@ Name: messagelib -Version: 16.08.1 +Version: 16.08.2 Release: 0 Summary: Base package of kdepim License: GPL-2.0 and GPL-3.0 and LGPL-2.1+ ++++++ messagelib-16.08.1.tar.xz -> messagelib-16.08.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/CMakeLists.txt new/messagelib-16.08.2/CMakeLists.txt --- old/messagelib-16.08.1/CMakeLists.txt 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/CMakeLists.txt 2016-10-06 09:00:37.000000000 +0200 @@ -18,28 +18,28 @@ include(ECMQtDeclareLoggingCategory) include(ECMAddTests) -set(PIM_VERSION "5.3.1") +set(PIM_VERSION "5.3.2") set(MESSAGELIB_LIB_VERSION ${PIM_VERSION}) -set(AKONADIMIME_LIB_VERSION "5.3.1") +set(AKONADIMIME_LIB_VERSION "5.3.2") set(QT_REQUIRED_VERSION "5.6.0") -set(AKONADI_VERSION "5.3.1") -set(AKONADINOTES_LIB_VERSION "5.3.1") -set(GRANTLEETHEME_LIB_VERSION "5.3.1") -set(GRAVATAR_LIB_VERSION "5.3.1") -set(IDENTITYMANAGEMENT_LIB_VERSION "5.3.1") -set(KCONTACTS_LIB_VERSION "5.3.1") -set(KDEPIM_APPS_LIB_VERSION "5.3.1") -set(KLDAP_LIB_VERSION "5.3.1") -set(KMAILTRANSPORT_LIB_VERSION "5.3.1") -set(KMBOX_LIB_VERSION "5.3.1") -set(KMIME_LIB_VERSION "5.3.1") -set(KPIMTEXTEDIT_LIB_VERSION "5.3.1") -set(LIBKDEPIM_LIB_VERSION "5.3.1") -set(LIBKLEO_LIB_VERSION "5.3.1") -set(PIMCOMMON_LIB_VERSION "5.3.1") +set(AKONADI_VERSION "5.3.2") +set(AKONADINOTES_LIB_VERSION "5.3.2") +set(GRANTLEETHEME_LIB_VERSION "5.3.2") +set(GRAVATAR_LIB_VERSION "5.3.2") +set(IDENTITYMANAGEMENT_LIB_VERSION "5.3.2") +set(KCONTACTS_LIB_VERSION "5.3.2") +set(KDEPIM_APPS_LIB_VERSION "5.3.2") +set(KLDAP_LIB_VERSION "5.3.2") +set(KMAILTRANSPORT_LIB_VERSION "5.3.2") +set(KMBOX_LIB_VERSION "5.3.2") +set(KMIME_LIB_VERSION "5.3.2") +set(KPIMTEXTEDIT_LIB_VERSION "5.3.2") +set(LIBKDEPIM_LIB_VERSION "5.3.2") +set(LIBKLEO_LIB_VERSION "5.3.2") +set(PIMCOMMON_LIB_VERSION "5.3.2") find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED Widgets Test Network PrintSupport WebEngine WebEngineWidgets WebKitWidgets) @@ -82,7 +82,7 @@ find_package(KF5PimTextEdit ${KPIMTEXTEDIT_LIB_VERSION} CONFIG REQUIRED) find_package(KF5SendLater ${KDEPIM_APPS_LIB_VERSION} CONFIG REQUIRED) -find_package(KF5AkonadiSearch "5.3.1" CONFIG REQUIRED) +find_package(KF5AkonadiSearch "5.3.2" CONFIG REQUIRED) set_package_properties(KF5AkonadiSearch PROPERTIES DESCRIPTION "The Akonadi Search libraries" URL "http://www.kde.org" TYPE REQUIRED PURPOSE "Provides search capabilities in KMail and Akonadi") option(KDEPIM_ENTERPRISE_BUILD "Enable features specific to the enterprise branch, which are normally disabled. Also, it disables many components not needed for Kontact such as the Kolab client." FALSE) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messagecomposer/src/recipient/recipientseditor.cpp new/messagelib-16.08.2/messagecomposer/src/recipient/recipientseditor.cpp --- old/messagelib-16.08.1/messagecomposer/src/recipient/recipientseditor.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messagecomposer/src/recipient/recipientseditor.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -241,7 +241,7 @@ if (count > 0) { if (count == 1) { - RecipientLineNG *last_rec = qobject_cast< RecipientLineNG * >(lines().last()); + RecipientLineNG *last_rec = qobject_cast< RecipientLineNG * >(lines().first()); if (last_rec && last_rec->recipientType() == Recipient::Bcc) { rec->setRecipientType(Recipient::To); } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messagelist/src/core/model.cpp new/messagelib-16.08.2/messagelist/src/core/model.cpp --- old/messagelib-16.08.1/messagelist/src/core/model.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messagelist/src/core/model.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -2636,7 +2636,7 @@ } else { if (parentId > 0) { // In second pass we have all available Items in mThreadingCache already. If - // mThreadingCache.parentForItem() returns null, but sets knownParent to true then + // mThreadingCache.parentForItem() returns null, but returns valid parentId then // the Item was removed from Akonadi and our threading cache is out-of-date. mThreadingCache.expireParent(mi); mparent = findMessageParent(mi); @@ -3043,6 +3043,10 @@ } } + // Remove the message from threading cache before we start moving up the + // children, so that they don't get mislead by the cache + mThreadingCache.expireParent(dyingMessage); + if (dyingMessage->parent()) { // Handle saving the current selection: if this item was the current before the step // then zero it out. We have killed it and it's OK for the current item to change. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messagelist/src/core/threadingcache.h new/messagelib-16.08.2/messagelist/src/core/threadingcache.h --- old/messagelib-16.08.1/messagelist/src/core/threadingcache.h 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messagelist/src/core/threadingcache.h 2016-10-06 09:00:37.000000000 +0200 @@ -76,6 +76,7 @@ { if (mEnabled) { mParentCache.remove(item->itemId()); + mItemCache.remove(item->itemId()); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/header/grantleeheaderformatter.cpp new/messagelib-16.08.2/messageviewer/src/header/grantleeheaderformatter.cpp --- old/messagelib-16.08.1/messageviewer/src/header/grantleeheaderformatter.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/header/grantleeheaderformatter.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -112,7 +112,12 @@ headerObject.insert(QStringLiteral("subjectDir"), d->headerStyleUtil.subjectDirectionString(message)); headerObject.insert(QStringLiteral("subjecti18n"), i18n("Subject:")); - headerObject.insert(QStringLiteral("subject"), d->headerStyleUtil.subjectString(message)); + KTextToHTML::Options flags = KTextToHTML::PreserveSpaces; + if (MessageViewer::MessageViewerSettings::self()->showEmoticons()) { + flags |= KTextToHTML::ReplaceSmileys; + } + + headerObject.insert(QStringLiteral("subject"), d->headerStyleUtil.subjectString(message, flags)); if (message->to(false)) { headerObject.insert(QStringLiteral("toi18n"), i18n("To:")); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/header/plainheaderstyle.cpp new/messagelib-16.08.2/messageviewer/src/header/plainheaderstyle.cpp --- old/messagelib-16.08.1/messageviewer/src/header/plainheaderstyle.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/header/plainheaderstyle.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -18,7 +18,7 @@ */ #include "plainheaderstyle.h" - +#include "messageviewer/messageviewersettings.h" #include "header/headerstyle_util.h" #include "header/headerstrategy.h" @@ -108,9 +108,16 @@ headerStr = QStringLiteral("<div class=\"header\" dir=\"%1\">").arg(dir); //case HdrLong: - if (strategy->showHeader(QStringLiteral("subject"))) + if (strategy->showHeader(QStringLiteral("subject"))) { + KTextToHTML::Options flags = KTextToHTML::PreserveSpaces; + if (MessageViewer::MessageViewerSettings::self()->showEmoticons()) { + flags |= KTextToHTML::ReplaceSmileys; + } + + headerStr += QStringLiteral("<div dir=\"%1\"><b style=\"font-size:130%\">").arg(subjectDir) + - d->mHeaderStyleUtil.subjectString(message) + QLatin1String("</b></div>\n"); + d->mHeaderStyleUtil.subjectString(message, flags) + QLatin1String("</b></div>\n"); + } if (strategy->showHeader(QStringLiteral("date"))) { headerStr.append(i18n("Date: ") + d->mHeaderStyleUtil.strToHtml(d->mHeaderStyleUtil.dateString(message, isPrinting(), /* short = */ MessageViewer::HeaderStyleUtil::CustomDate)) + QLatin1String("<br/>\n")); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/htmlwriter/autotests/CMakeLists.txt new/messagelib-16.08.2/messageviewer/src/htmlwriter/autotests/CMakeLists.txt --- old/messagelib-16.08.1/messageviewer/src/htmlwriter/autotests/CMakeLists.txt 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/htmlwriter/autotests/CMakeLists.txt 2016-10-06 09:00:37.000000000 +0200 @@ -3,3 +3,13 @@ NAME_PREFIX "messageviewer-webengine-" LINK_LIBRARIES Qt5::Test Qt5::Core ) + +set(webengineparthtmlwritertestdebug_SRCS) +ecm_qt_declare_logging_category(webengineparthtmlwritertestdebug_SRCS HEADER messageviewer_debug.h IDENTIFIER MESSAGEVIEWER_LOG CATEGORY_NAME org.kde.pim.messageviewer) + + +ecm_add_test(webengineparthtmlwritertest.cpp ../webengineembedpart.cpp ../webengineparthtmlwriter.cpp ${webengineparthtmlwritertestdebug_SRCS} + TEST_NAME webengineparthtmlwritertest + NAME_PREFIX "messageviewer-webengine-" + LINK_LIBRARIES Qt5::Test Qt5::Core KF5::MimeTreeParser KF5::MessageViewer Qt5::WebKitWidgets KF5::WebEngineViewer + ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.cpp new/messagelib-16.08.2/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.cpp --- old/messagelib-16.08.1/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/messagelib-16.08.2/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -0,0 +1,74 @@ +/* + Copyright (c) 2016 Montel Laurent <[email protected]> + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "webengineparthtmlwritertest.h" +#include "../webengineparthtmlwriter.h" + +#include <QTest> + +WebEnginePartHtmlWriterTest::WebEnginePartHtmlWriterTest(QObject *parent) + : QObject(parent) +{ + +} + +WebEnginePartHtmlWriterTest::~WebEnginePartHtmlWriterTest() +{ + +} + +void WebEnginePartHtmlWriterTest::removeScriptInHtml_data() +{ + QTest::addColumn<QString>("input"); + QTest::addColumn<QString>("output"); + QTest::newRow("noscript") << QStringLiteral("<a>boo</a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("onescript") << QStringLiteral("<a>boo<script>alert(1)</script></a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("onescriptwithattribute") << QStringLiteral("<a>boo<script type=\"foo\">alert(1)</script></a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("severalscriptwithattribute") << QStringLiteral("<p>foo</p><script>a</script><a>boo<script type=\"foo\">alert(1)</script></a>") << QStringLiteral("<p>foo</p><a>boo</a>"); + QTest::newRow("scriptwithspace") << QStringLiteral("<a>boo<script type=\"foo\" >alert(1)</script ></a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("scriptwithremoveaccess") << QStringLiteral("<a>boo<script src=\"http://foo\"/></a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("empty") << QString() << QString(); + + //MultiLine + QTest::newRow("multiline") << QStringLiteral("<a>boo<script>\nalert(1)</script></a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("multiline-scriptwithspace") << QStringLiteral("<a>boo<script type=\"foo\" >\nalert(1)\n</script ></a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("multiline-severalscriptwithattribute") << QStringLiteral("<p>foo</p><script>\na\n</script><a>boo<script type=\"foo\">\nalert(1)</script></a>") << QStringLiteral("<p>foo</p><a>boo</a>"); + QTest::newRow("multiline-scriptwithspace") << QStringLiteral("<a>boo<script type=\"foo\" >\nalert(1)\nbla\nsl</script ></a>") << QStringLiteral("<a>boo</a>"); + + //Insensitive case + QTest::newRow("onescript-insensitive") << QStringLiteral("<a>boo<SCRIPT>alert(1)</script></a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("onescriptwithattribute-insensitive") << QStringLiteral("<a>boo<SCRIPt type=\"foo\">alert(1)</SCRIPT></a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("severalscriptwithattribute-insensitive") << QStringLiteral("<p>foo</p><script>a</SCRIPT><a>boo<SCRIPT type=\"foo\">alert(1)</script></a>") << QStringLiteral("<p>foo</p><a>boo</a>"); + QTest::newRow("scriptwithspace-insensitive") << QStringLiteral("<a>boo<SCRIPT type=\"foo\" >alert(1)</SCRIPT ></a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("scriptwithremoveaccess-insensitive") << QStringLiteral("<a>boo<SCRIPT src=\"http://foo\"/></a>") << QStringLiteral("<a>boo</a>"); + + + //MultiLine insensitive + QTest::newRow("multiline-insensitive") << QStringLiteral("<a>boo<sCript>\nalert(1)</Script></a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("multiline-scriptwithspace-insensitive") << QStringLiteral("<a>boo<SCRipT type=\"foo\" >\nalert(1)\n</script ></a>") << QStringLiteral("<a>boo</a>"); + QTest::newRow("multiline-severalscriptwithattribute-insensitive") << QStringLiteral("<p>foo</p><SCRIPT>\na\n</script><a>boo<script type=\"foo\">\nalert(1)</script></a>") << QStringLiteral("<p>foo</p><a>boo</a>"); + QTest::newRow("multiline-scriptwithspace-insensitive") << QStringLiteral("<a>boo<SCRIPT type=\"foo\" >\nalert(1)\nbla\nsl</script ></a>") << QStringLiteral("<a>boo</a>"); +} + +void WebEnginePartHtmlWriterTest::removeScriptInHtml() +{ + QFETCH (QString, input); + QFETCH (QString, output); + QCOMPARE(MessageViewer::WebEnginePartHtmlWriter::removeJscripts(input), output); +} + +QTEST_MAIN(WebEnginePartHtmlWriterTest) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.h new/messagelib-16.08.2/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.h --- old/messagelib-16.08.1/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.h 1970-01-01 01:00:00.000000000 +0100 +++ new/messagelib-16.08.2/messageviewer/src/htmlwriter/autotests/webengineparthtmlwritertest.h 2016-10-06 09:00:37.000000000 +0200 @@ -0,0 +1,34 @@ +/* + Copyright (c) 2016 Montel Laurent <[email protected]> + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef WEBENGINEPARTHTMLWRITERTEST_H +#define WEBENGINEPARTHTMLWRITERTEST_H + +#include <QObject> + +class WebEnginePartHtmlWriterTest : public QObject +{ + Q_OBJECT +public: + explicit WebEnginePartHtmlWriterTest(QObject *parent = Q_NULLPTR); + ~WebEnginePartHtmlWriterTest(); +private Q_SLOTS: + void removeScriptInHtml_data(); + void removeScriptInHtml(); +}; + +#endif // WEBENGINEPARTHTMLWRITERTEST_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/htmlwriter/webengineparthtmlwriter.cpp new/messagelib-16.08.2/messageviewer/src/htmlwriter/webengineparthtmlwriter.cpp --- old/messagelib-16.08.1/messageviewer/src/htmlwriter/webengineparthtmlwriter.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/htmlwriter/webengineparthtmlwriter.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -24,6 +24,7 @@ #include <cassert> #include <QByteArray> +#include <QRegularExpression> using namespace MessageViewer; @@ -60,6 +61,9 @@ insertExtraHead(); mExtraHead.clear(); } +#if QT_VERSION < QT_VERSION_CHECK(5, 7, 0) + mHtml = removeJscripts(mHtml); +#endif mHtmlView->setHtml(mHtml, QUrl(QStringLiteral("file:///"))); mHtmlView->show(); mHtml.clear(); @@ -70,6 +74,35 @@ Q_EMIT finished(); } +QString WebEnginePartHtmlWriter::removeJscripts(QString str) +{ + //Remove regular <script>...</script> + const QRegularExpression regScript(QStringLiteral("<script[^>]*>.*?</script\\s*>"), QRegularExpression::CaseInsensitiveOption); + str.remove(regScript); + //Remove string as <script src=http://.../> + const QRegularExpression regScript2(QStringLiteral("<script[^>]*/>"), QRegularExpression::CaseInsensitiveOption); + str.remove(regScript2); + //Multiline script + const QRegularExpression regScriptStart(QStringLiteral("<script[^>]*>"), QRegularExpression::CaseInsensitiveOption); + const QRegularExpression regScriptEnd(QStringLiteral("</script\\s*>"), QRegularExpression::CaseInsensitiveOption); + int indexStartScriptFound = -1; + int indexEndScriptFound = -1; + int scriptIndexPos = 0; + QRegularExpressionMatch matchScriptStart; + QRegularExpressionMatch matchScriptEnd; + while ((indexStartScriptFound = str.indexOf(regScriptStart, scriptIndexPos, &matchScriptStart)) != -1) { + indexEndScriptFound = str.indexOf(regScriptEnd, indexStartScriptFound + matchScriptStart.capturedLength(), &matchScriptEnd); + if (indexEndScriptFound != -1) { + str.remove(indexStartScriptFound, (indexEndScriptFound + matchScriptEnd.capturedLength() - indexStartScriptFound)); + } else { + qCWarning(MESSAGEVIEWER_LOG) << "no end script tag"; + break; + } + scriptIndexPos = indexStartScriptFound; + } + return str; +} + void WebEnginePartHtmlWriter::reset() { if (mState != Ended) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/htmlwriter/webengineparthtmlwriter.h new/messagelib-16.08.2/messageviewer/src/htmlwriter/webengineparthtmlwriter.h --- old/messagelib-16.08.1/messageviewer/src/htmlwriter/webengineparthtmlwriter.h 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/htmlwriter/webengineparthtmlwriter.h 2016-10-06 09:00:37.000000000 +0200 @@ -47,6 +47,9 @@ void flush() Q_DECL_OVERRIDE; void embedPart(const QByteArray &contentId, const QString &url) Q_DECL_OVERRIDE; void extraHead(const QString &str) Q_DECL_OVERRIDE; + + static QString removeJscripts(QString str); + Q_SIGNALS: void finished(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp new/messagelib-16.08.2/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp --- old/messagelib-16.08.1/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/messagepartthemes/default/defaultrenderer.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -665,12 +665,12 @@ return htmlWriter->html; } - QString quotedHTML(const QString &s, bool decorate) + QString quotedHTML(const QString &s) { assert(cssHelper()); KTextToHTML::Options convertFlags = KTextToHTML::PreserveSpaces | KTextToHTML::HighlightText; - if (decorate && source()->showEmoticons()) { + if (source()->showEmoticons()) { convertFlags |= KTextToHTML::ReplaceSmileys; } QString htmlStr; @@ -797,6 +797,11 @@ htmlStr += deepQuoteFontTag[actQuoteLevel % 3]; } } + // Add blockquote + if (previousQuoteDepth < actQuoteLevel) { + htmlStr += cssHelper()->addStartBlockQuote(actQuoteLevel - previousQuoteDepth); + } + } else { // Add blockquote if (previousQuoteDepth < actQuoteLevel) { @@ -867,7 +872,7 @@ aBlock = HTMLBlock::Ptr(new AttachmentMarkBlock(htmlWriter.data(), mp->attachmentNode())); } - htmlWriter->queue(quotedHTML(mp->text(), false)); + htmlWriter->queue(quotedHTML(mp->text())); } return htmlWriter->html; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/messageviewerheaderplugins/standardsheaderstyleplugin/messageviewer_standardsheaderstyleplugin.json new/messagelib-16.08.2/messageviewer/src/messageviewerheaderplugins/standardsheaderstyleplugin/messageviewer_standardsheaderstyleplugin.json --- old/messagelib-16.08.1/messageviewer/src/messageviewerheaderplugins/standardsheaderstyleplugin/messageviewer_standardsheaderstyleplugin.json 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/messageviewerheaderplugins/standardsheaderstyleplugin/messageviewer_standardsheaderstyleplugin.json 2016-10-06 09:00:37.000000000 +0200 @@ -3,14 +3,17 @@ "Name": "Standards Header Style", "Name[ca@valencia]": "Estil de capçalera estàndard", "Name[ca]": "Estil de capçalera estàndard", + "Name[cs]": "Standardní styl hlavičky", + "Name[da]": "Standard header-stil", "Name[de]": "Vorspann-Design „Standard“", "Name[es]": "Estilo de encabezado estándar", + "Name[et]": "Standardne päisestiil", "Name[fi]": "Vakio-otsaketyyli", "Name[gl]": "Estilo de cabeceira estándar", "Name[it]": "Stile con intestazioni standard", - "Name[nl]": "Stijl met standaard headers", + "Name[nl]": "Standaarden van header-stijl", "Name[pl]": "Standardowe nagłówki", - "Name[pt]": "Estilo de Cabeçalho-Padrão", + "Name[pt]": "Estilo de Cabeçalhos Padrão", "Name[pt_BR]": "Estilo de cabeçalho Padrão", "Name[ru]": "Стандартный стиль заголовков", "Name[sk]": "Štandardný štýl hlavičiek", @@ -19,10 +22,9 @@ "Name[sr@ijekavianlatin]": "standardni stil zaglavlja", "Name[sr@latin]": "standardni stil zaglavlja", "Name[sr]": "стандардни стил заглавља", - "Name[sv]": "Vanlig rubrikstil", + "Name[sv]": "Normal huvudstil", "Name[uk]": "Стандартний стиль заголовків", "Name[x-test]": "xxStandards Header Stylexx", - "Name[zh_CN]": "标准信头风格", "ServiceTypes": [ "MessageViewerHeaderStyle/Plugin" ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/scamdetection/scamdetectionwebengine.cpp new/messagelib-16.08.2/messageviewer/src/scamdetection/scamdetectionwebengine.cpp --- old/messagelib-16.08.1/messageviewer/src/scamdetection/scamdetectionwebengine.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/scamdetection/scamdetectionwebengine.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -23,6 +23,7 @@ #include "settings/messageviewersettings.h" #include "MessageViewer/ScamCheckShortUrl" #include "webengineviewer/webenginescript.h" +#include <WebEngineViewer/WebEngineManageScript> #include <KLocalizedString> @@ -84,7 +85,13 @@ void ScamDetectionWebEngine::scanPage(QWebEnginePage *page) { if (MessageViewer::MessageViewerSettings::self()->scamDetectionEnabled()) { +#if QT_VERSION >= 0x050700 + page->runJavaScript(WebEngineViewer::WebEngineScript::findAllAnchorsAndForms(), + WebEngineViewer::WebEngineManageScript::scriptWordId(), + invoke(this, &ScamDetectionWebEngine::handleScanPage)); +#else page->runJavaScript(WebEngineViewer::WebEngineScript::findAllAnchorsAndForms(), invoke(this, &ScamDetectionWebEngine::handleScanPage)); +#endif } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/viewer.cpp new/messagelib-16.08.2/messageviewer/src/viewer/viewer.cpp --- old/messagelib-16.08.1/messageviewer/src/viewer/viewer.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/viewer/viewer.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -31,6 +31,7 @@ #include "settings/messageviewersettings.h" #include "viewer/webengine/mailwebengineview.h" #include <WebEngineViewer/WebHitTestResult> +#include <WebEngineViewer/WebEngineManageScript> #include "viewer/mimeparttree/mimetreemodel.h" #include "viewer/mimeparttree/mimeparttreeview.h" #include "widgets/zoomactionmenu.h" @@ -82,6 +83,7 @@ connect(d_ptr, &ViewerPrivate::changeDisplayMail, this, &Viewer::slotChangeDisplayMail); connect(d_ptr, &ViewerPrivate::moveMessageToTrash, this, &Viewer::moveMessageToTrash); connect(d_ptr, &ViewerPrivate::executeMailAction, this, &Viewer::executeMailAction); + connect(d_ptr, &ViewerPrivate::pageIsScrolledToBottom, this, &Viewer::pageIsScrolledToBottom); setMessage(KMime::Message::Ptr(), MimeTreeParser::Delayed); } @@ -216,10 +218,10 @@ d->mViewer->scrollDown(10); } -bool Viewer::atBottom() const +void Viewer::atBottom() { Q_D(const Viewer); - return d->mViewer->isScrolledToBottom(); + d->mViewer->isScrolledToBottom(); } void Viewer::slotJumpDown() @@ -636,8 +638,12 @@ void Viewer::runJavaScript(const QString &code) { Q_D(Viewer); - d->mViewer->page()->runJavaScript(code); +#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) + d->mViewer->page()->runJavaScript(code, WebEngineViewer::WebEngineManageScript::scriptWordId()); +#else + d->mViewer->page()->runJavaScript(code); +#endif } - + } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/viewer.h new/messagelib-16.08.2/messageviewer/src/viewer/viewer.h --- old/messagelib-16.08.1/messageviewer/src/viewer/viewer.h 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/viewer/viewer.h 2016-10-06 09:00:37.000000000 +0200 @@ -235,7 +235,7 @@ void enableMessageDisplay(); /** Returns true if the message view is scrolled to the bottom. */ - bool atBottom() const; + void atBottom(); bool isFixedFont() const; void setUseFixedFont(bool useFixedFont); @@ -325,6 +325,7 @@ void runJavaScript(const QString &code); Q_SIGNALS: void moveMessageToTrash(); + void pageIsScrolledToBottom(bool); void executeMailAction(MessageViewer::Viewer::MailAction type); /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/viewer_p.cpp new/messagelib-16.08.2/messageviewer/src/viewer/viewer_p.cpp --- old/messagelib-16.08.1/messageviewer/src/viewer/viewer_p.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/viewer/viewer_p.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -796,6 +796,9 @@ void ViewerPrivate::enableMessageDisplay() { + if (mMsgDisplay) { + return; + } mMsgDisplay = true; adjustLayout(); } @@ -1056,6 +1059,7 @@ connect(mScamDetectionWarning, &ScamDetectionWarningWidget::moveMessageToTrash, this, &ViewerPrivate::moveMessageToTrash); connect(mScamDetectionWarning, &ScamDetectionWarningWidget::messageIsNotAScam, this, &ViewerPrivate::slotMessageIsNotAScam); connect(mScamDetectionWarning, &ScamDetectionWarningWidget::addToWhiteList, this, &ViewerPrivate::slotAddToWhiteList); + connect(mViewer, &MailWebEngineView::pageIsScrolledToBottom, this, &ViewerPrivate::pageIsScrolledToBottom); } bool ViewerPrivate::eventFilter(QObject *, QEvent *e) @@ -1255,6 +1259,7 @@ mMimePartTree->clearModel(); #endif mViewer->clearRelativePosition(); + mViewer->hideAccessKeys(); setShowSignatureDetails(false); mFindBar->closeBar(); mViewerPluginToolManager->closeAllTools(); @@ -2143,8 +2148,6 @@ htmlWriter()->end(); } - mViewer->scrollToRelativePosition(mViewer->relativePosition()); - mViewer->clearRelativePosition(); mRecursionCountForDisplayMessage--; } @@ -2358,6 +2361,8 @@ mViewer->injectAttachments(bind(&ViewerPrivate::attachmentInjectionHtml, this)); toggleFullAddressList(); mViewer->executeCustomRenderingScripts(); + mViewer->scrollToRelativePosition(mViewer->relativePosition()); + mViewer->clearRelativePosition(); } void ViewerPrivate::slotSettingsChanged() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/viewer_p.h new/messagelib-16.08.2/messageviewer/src/viewer/viewer_p.h --- old/messagelib-16.08.1/messageviewer/src/viewer/viewer_p.h 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/viewer/viewer_p.h 2016-10-06 09:00:37.000000000 +0200 @@ -572,6 +572,7 @@ void changeDisplayMail(Viewer::DisplayFormatMessage, bool); void moveMessageToTrash(); void executeMailAction(MessageViewer::Viewer::MailAction type); + void pageIsScrolledToBottom(bool); private: QString attachmentInjectionHtml(); QString recipientsQuickListLinkHtml(const QString &); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/webengine/mailwebenginepage.cpp new/messagelib-16.08.2/messageviewer/src/viewer/webengine/mailwebenginepage.cpp --- old/messagelib-16.08.1/messageviewer/src/viewer/webengine/mailwebenginepage.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/viewer/webengine/mailwebenginepage.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -43,9 +43,21 @@ void MailWebEnginePage::initialize() { profile()->setHttpCacheType(QWebEngineProfile::MemoryHttpCache); +#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) + settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, false); +#else settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, true); +#endif settings()->setAttribute(QWebEngineSettings::PluginsEnabled, false); + settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, false); + settings()->setAttribute(QWebEngineSettings::JavascriptCanAccessClipboard, false); + settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, false); + settings()->setAttribute(QWebEngineSettings::XSSAuditingEnabled, false); + settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false); + settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, false); + settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, false); #if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) + settings()->setAttribute(QWebEngineSettings::WebGLEnabled, false); settings()->setAttribute(QWebEngineSettings::AutoLoadIconsForPage, false); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/webengine/mailwebengineview.cpp new/messagelib-16.08.2/messageviewer/src/viewer/webengine/mailwebengineview.cpp --- old/messagelib-16.08.1/messageviewer/src/viewer/webengine/mailwebengineview.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/viewer/webengine/mailwebengineview.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -25,6 +25,7 @@ #include "loadexternalreferencesurlinterceptor/loadexternalreferencesurlinterceptor.h" #include "cidreferencesurlinterceptor/cidreferencesurlinterceptor.h" #include <WebEngineViewer/NetworkAccessManagerWebEngine> +#include <WebEngineViewer/WebEngineManageScript> #include "scamdetection/scamdetectionwebengine.h" #include "scamdetection/scamcheckshorturl.h" @@ -108,6 +109,15 @@ } +void MailWebEngineView::runJavaScriptInWordId(const QString &script) +{ +#if QT_VERSION >= 0x050700 + page()->runJavaScript(script, WebEngineViewer::WebEngineManageScript::scriptWordId()); +#else + page()->runJavaScript(script); +#endif +} + void MailWebEngineView::initializeScripts() { initializeJQueryScript(); @@ -130,12 +140,12 @@ void MailWebEngineView::scrollUp(int pixels) { - page()->runJavaScript(WebEngineViewer::WebEngineScript::scrollUp(pixels)); + runJavaScriptInWordId(WebEngineViewer::WebEngineScript::scrollUp(pixels)); } void MailWebEngineView::scrollDown(int pixels) { - page()->runJavaScript(WebEngineViewer::WebEngineScript::scrollDown(pixels)); + runJavaScriptInWordId(WebEngineViewer::WebEngineScript::scrollDown(pixels)); } void MailWebEngineView::selectAll() @@ -233,33 +243,56 @@ d->mWebViewAccessKey->showAccessKeys(); } -bool MailWebEngineView::isScrolledToBottom() const +void MailWebEngineView::hideAccessKeys() { - qDebug() << "bool MailWebEngineView::isScrolledToBottom() const not implemented"; - //Convert as async - //TODO '(window.innerHeight + window.scrollY) >= document.body.offsetHeight)' - return false; + d->mWebViewAccessKey->hideAccessKeys(); +} + +void MailWebEngineView::isScrolledToBottom() +{ +#if QT_VERSION >= 0x050700 + page()->runJavaScript(WebEngineViewer::WebEngineScript::isScrolledToBottom(), + WebEngineViewer::WebEngineManageScript::scriptWordId(), + invoke(this, &MailWebEngineView::handleIsScrolledToBottom)); +#else + page()->runJavaScript(WebEngineViewer::WebEngineScript::isScrolledToBottom(), invoke(this, &MailWebEngineView::handleIsScrolledToBottom)); +#endif } void MailWebEngineView::setElementByIdVisible(const QString &id, bool visible) { - page()->runJavaScript(WebEngineViewer::WebEngineScript::setElementByIdVisible(id, visible)); + runJavaScriptInWordId(WebEngineViewer::WebEngineScript::setElementByIdVisible(id, visible)); } void MailWebEngineView::removeAttachmentMarking(const QString &id) { - page()->runJavaScript(WebEngineViewer::WebEngineScript::removeStyleToElement(QLatin1String("*#") + id)); + runJavaScriptInWordId(WebEngineViewer::WebEngineScript::removeStyleToElement(QLatin1String("*#") + id)); } void MailWebEngineView::markAttachment(const QString &id, const QString &style) { //TODO verify "*#" + id - page()->runJavaScript(WebEngineViewer::WebEngineScript::setStyleToElement(QLatin1String("*#") + id, style)); + runJavaScriptInWordId(WebEngineViewer::WebEngineScript::setStyleToElement(QLatin1String("*#") + id, style)); } void MailWebEngineView::scrollToAnchor(const QString &anchor) { +#if QT_VERSION >= 0x050700 + page()->runJavaScript(WebEngineViewer::WebEngineScript::searchElementPosition(anchor), + WebEngineViewer::WebEngineManageScript::scriptWordId(), + invoke(this, &MailWebEngineView::handleScrollToAnchor)); +#else page()->runJavaScript(WebEngineViewer::WebEngineScript::searchElementPosition(anchor), invoke(this, &MailWebEngineView::handleScrollToAnchor)); +#endif +} + +void MailWebEngineView::handleIsScrolledToBottom(const QVariant &result) +{ + bool scrolledToBottomResult = false; + if (result.isValid()) { + scrolledToBottomResult = result.toBool(); + } + Q_EMIT pageIsScrolledToBottom(scrolledToBottomResult); } void MailWebEngineView::handleScrollToAnchor(const QVariant &result) @@ -268,14 +301,14 @@ const QList<QVariant> lst = result.toList(); if (lst.count() == 2) { const QPoint pos(lst.at(0).toInt(), lst.at(1).toInt()); - page()->runJavaScript(WebEngineViewer::WebEngineScript::scrollToPosition(pos)); + runJavaScriptInWordId(WebEngineViewer::WebEngineScript::scrollToPosition(pos)); } } } void MailWebEngineView::scrollPageDown(int percent) { - page()->runJavaScript(WebEngineViewer::WebEngineScript::scrollPercentage(percent)); + runJavaScriptInWordId(WebEngineViewer::WebEngineScript::scrollPercentage(percent)); } void MailWebEngineView::scrollPageUp(int percent) @@ -288,7 +321,7 @@ const QString scripts = MessageViewer::MailWebEngineScript::manageShowHideAttachments() + MessageViewer::MailWebEngineScript::manageExpandAddresses(QStringLiteral("To")) + MessageViewer::MailWebEngineScript::manageExpandAddresses(QStringLiteral("Cc")); - page()->runJavaScript(scripts); + runJavaScriptInWordId(scripts); } void MailWebEngineView::injectAttachments(const boost::function<QString()> &delayedHtml) @@ -297,7 +330,7 @@ if (html.isEmpty()) { return; } - page()->runJavaScript(MessageViewer::MailWebEngineScript::injectAttachments(html, QStringLiteral("attachmentInjectionPoint"))); + runJavaScriptInWordId(MessageViewer::MailWebEngineScript::injectAttachments(html, QStringLiteral("attachmentInjectionPoint"))); } void MailWebEngineView::toggleFullAddressList(const QString &field, const boost::function<QString()> &delayedHtml) @@ -308,7 +341,7 @@ } //qDebug() << "void MailWebEngineView::toggleFullAddressList(const QString &field, const boost::function<QString()> &delayedHtml, bool doShow)" << html << " fields " << field; - page()->runJavaScript(MessageViewer::MailWebEngineScript::replaceInnerHtml(field, html)); + runJavaScriptInWordId(MessageViewer::MailWebEngineScript::replaceInnerHtml(field, html)); } bool MailWebEngineView::hasVerticalScrollBar() const @@ -328,7 +361,7 @@ void MailWebEngineView::scrollToRelativePosition(qreal pos) { - page()->runJavaScript(WebEngineViewer::WebEngineScript::scrollToRelativePosition(pos)); + runJavaScriptInWordId(WebEngineViewer::WebEngineScript::scrollToRelativePosition(pos)); } QUrl MailWebEngineView::linkOrImageUrlAt(const QPoint &global) const @@ -374,3 +407,4 @@ Q_UNUSED(e); qDebug() << " MailWebEngineView::dropEvent"; } + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/webengine/mailwebengineview.h new/messagelib-16.08.2/messageviewer/src/viewer/webengine/mailwebengineview.h --- old/messagelib-16.08.1/messageviewer/src/viewer/webengine/mailwebengineview.h 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/viewer/webengine/mailwebengineview.h 2016-10-06 09:00:37.000000000 +0200 @@ -45,7 +45,8 @@ void saveMainFrameScreenshotInFile(const QString &filename); void showAccessKeys(); - bool isScrolledToBottom() const; + void hideAccessKeys(); + void isScrolledToBottom(); void setElementByIdVisible(const QString &id, bool visible); void removeAttachmentMarking(const QString &id); @@ -92,14 +93,17 @@ /// @param url if an URL was under the cursor, this parameter contains it. Otherwise empty /// @param point position where the click happened, in local coordinates void popupMenu(const WebEngineViewer::WebHitTestResult &result); + void pageIsScrolledToBottom(bool); private Q_SLOTS: void handleScrollToAnchor(const QVariant &result); + void handleIsScrolledToBottom(const QVariant &result); void slotWebHitFinished(const WebEngineViewer::WebHitTestResult &result); void slotLoadFinished(); private: void initializeScripts(); + void runJavaScriptInWordId(const QString &script); MailWebEngineViewPrivate *const d; }; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/webengine/tests/CMakeLists.txt new/messagelib-16.08.2/messageviewer/src/viewer/webengine/tests/CMakeLists.txt --- old/messagelib-16.08.1/messageviewer/src/viewer/webengine/tests/CMakeLists.txt 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/viewer/webengine/tests/CMakeLists.txt 2016-10-06 09:00:37.000000000 +0200 @@ -63,5 +63,14 @@ Qt5::Widgets KF5::WebEngineViewer Qt5::WebEngine Qt5::WebEngineWidgets KF5::XmlGui KF5::IconThemes KF5::MessageViewer ) +##### +set(testmailmboxwebengine_test_SRCS + testmailmboxwebengine.cpp + ) +add_executable(testmailmboxwebengine ${testmailmboxwebengine_test_SRCS}) + +target_link_libraries(testmailmboxwebengine + Qt5::Widgets KF5::WebEngineViewer Qt5::WebEngine Qt5::WebEngineWidgets KF5::XmlGui KF5::IconThemes KF5::MessageViewer + ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/webengine/tests/data/html.mbox new/messagelib-16.08.2/messageviewer/src/viewer/webengine/tests/data/html.mbox --- old/messagelib-16.08.1/messageviewer/src/viewer/webengine/tests/data/html.mbox 1970-01-01 01:00:00.000000000 +0100 +++ new/messagelib-16.08.2/messageviewer/src/viewer/webengine/tests/data/html.mbox 2016-10-06 09:00:37.000000000 +0200 @@ -0,0 +1,29 @@ +From [email protected] Thu, 26 May 2011 01:16:54 +0100 +From: Thomas McGuire <[email protected]> +Subject: HTML test +Date: Thu, 26 May 2011 01:16:54 +0100 +Message-ID: <[email protected]> +X-KMail-Transport: GMX +X-KMail-Fcc: 28 +X-KMail-Drafts: 7 +X-KMail-Templates: 9 +User-Agent: KMail/4.6 beta5 (Linux/2.6.34.7-0.7-desktop; KDE/4.6.41; x86_64; git-0269848; 2011-04-19) +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="nextPart8606278.tpV19BTJKu" +Content-Transfer-Encoding: 7Bit + + +--nextPart8606278.tpV19BTJKu +Content-Transfer-Encoding: 7Bit +Content-Type: text/plain; charset="windows-1252" + +Some HTML text +--nextPart8606278.tpV19BTJKu +Content-Transfer-Encoding: 7Bit +Content-Type: text/html; charset="windows-1252" + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head> +<p>Some <span style=" font-weight:600;">HTML</span> text</p><a href=https://"><script>alert(1)</script><\"></body></html> +--nextPart8606278.tpV19BTJKu-- + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.cpp new/messagelib-16.08.2/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.cpp --- old/messagelib-16.08.1/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/messagelib-16.08.2/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -0,0 +1,70 @@ +/* + Copyright (C) 2016 Laurent Montel <[email protected]> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "testmailmboxwebengine.h" + +#include <KMime/Content> +#include <KActionCollection> +#include <QApplication> +#include <QFile> +#include <QVBoxLayout> +#include <QDebug> + +#include <MessageViewer/MailWebEngineView> +#include <MessageViewer/Viewer> + +TestMailMBoxWebEngine::TestMailMBoxWebEngine(QWidget *parent) + : QWidget(parent) +{ + QVBoxLayout *vbox = new QVBoxLayout; + setLayout(vbox); + MessageViewer::Viewer *viewer = new MessageViewer::Viewer(0, 0 , new KActionCollection(this)); + vbox->addWidget(viewer); + viewer->setMessage(readAndParseMail(QStringLiteral("html.mbox"))); + viewer->setPluginName(QStringLiteral("longheaderstyleplugin")); +} + +TestMailMBoxWebEngine::~TestMailMBoxWebEngine() +{ + +} + +KMime::Message::Ptr TestMailMBoxWebEngine::readAndParseMail(const QString &mailFile) +{ + QFile file(QLatin1String(MAIL_DATA_DIR) + QLatin1Char('/') + mailFile); + file.open(QIODevice::ReadOnly); + QByteArray ba = file.readAll(); + qDebug() << ba; + const QByteArray data = ba; + Q_ASSERT(!data.isEmpty()); + KMime::Message::Ptr msg(new KMime::Message); + msg->setContent(data); + msg->parse(); + return msg; +} + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + app.setAttribute(Qt::AA_UseHighDpiPixmaps, true); + TestMailMBoxWebEngine *testWebEngine = new TestMailMBoxWebEngine; + testWebEngine->show(); + const int ret = app.exec(); + return ret; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.h new/messagelib-16.08.2/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.h --- old/messagelib-16.08.1/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.h 1970-01-01 01:00:00.000000000 +0100 +++ new/messagelib-16.08.2/messageviewer/src/viewer/webengine/tests/testmailmboxwebengine.h 2016-10-06 09:00:37.000000000 +0200 @@ -0,0 +1,36 @@ +/* + Copyright (C) 2016 Laurent Montel <[email protected]> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef TESTMAILMBOXWEBENGINE_H +#define TESTMAILMBOXWEBENGINE_H + +#include <QWidget> +#include <KMime/Message> + +class TestMailMBoxWebEngine : public QWidget +{ + Q_OBJECT +public: + explicit TestMailMBoxWebEngine(QWidget *parent = Q_NULLPTR); + ~TestMailMBoxWebEngine(); +private: + KMime::Message::Ptr readAndParseMail(const QString &mailFile); +}; + +#endif // TESTMAILMBOXWEBENGINE_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/messageviewer/src/viewer/webengine/tests/testmailwebengine.cpp new/messagelib-16.08.2/messageviewer/src/viewer/webengine/tests/testmailwebengine.cpp --- old/messagelib-16.08.1/messageviewer/src/viewer/webengine/tests/testmailwebengine.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/messageviewer/src/viewer/webengine/tests/testmailwebengine.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -27,6 +27,7 @@ #include <QWebEngineSettings> #include <MessageViewer/MailWebEngineView> +#include <WebEngineViewer/WebEngineManageScript> TestMailWebEngine::TestMailWebEngine(QWidget *parent) : QWidget(parent) @@ -75,12 +76,20 @@ void TestMailWebEngine::slotScrollDown() { +#if QT_VERSION >= 0x050700 + mTestWebEngine->page()->runJavaScript(WebEngineViewer::WebEngineScript::scrollDown(10), WebEngineViewer::WebEngineManageScript::scriptWordId()); +#else mTestWebEngine->page()->runJavaScript(WebEngineViewer::WebEngineScript::scrollDown(10)); +#endif } void TestMailWebEngine::slotScrollUp() { +#if QT_VERSION >= 0x050700 + mTestWebEngine->page()->runJavaScript(WebEngineViewer::WebEngineScript::scrollUp(10), WebEngineViewer::WebEngineManageScript::scriptWordId()); +#else mTestWebEngine->page()->runJavaScript(WebEngineViewer::WebEngineScript::scrollUp(10)); +#endif } void TestMailWebEngine::slotZoomDown() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/mimetreeparser/src/bodyformatter/utils.cpp new/messagelib-16.08.2/mimetreeparser/src/bodyformatter/utils.cpp --- old/messagelib-16.08.1/mimetreeparser/src/bodyformatter/utils.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/mimetreeparser/src/bodyformatter/utils.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -60,7 +60,7 @@ return text; } else if (alternative) { return alternative; - } else { + } else if (m) { auto ret = toplevelTextNode(m); if (ret) { return ret; @@ -68,4 +68,4 @@ } } return MessagePart::Ptr(); -} \ No newline at end of file +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/templateparser/src/customtemplates.cpp new/messagelib-16.08.2/templateparser/src/customtemplates.cpp --- old/messagelib-16.08.1/templateparser/src/customtemplates.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/templateparser/src/customtemplates.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -125,7 +125,7 @@ void CustomTemplates::slotNameChanged(const QString &text) { - mUi->mAdd->setEnabled(!text.isEmpty()); + mUi->mAdd->setEnabled(!text.trimmed().isEmpty()); } QString CustomTemplates::indexToType(int index) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/templateparser/src/templateparser.cpp new/messagelib-16.08.2/templateparser/src/templateparser.cpp --- old/messagelib-16.08.1/templateparser/src/templateparser.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/templateparser/src/templateparser.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -129,6 +129,7 @@ TemplateParser::~TemplateParser() { delete mEmptySource; + delete mOtp; } int TemplateParser::parseQuotes(const QString &prefix, const QString &str, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/CMakeLists.txt new/messagelib-16.08.2/webengineviewer/src/CMakeLists.txt --- old/messagelib-16.08.1/webengineviewer/src/CMakeLists.txt 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/CMakeLists.txt 2016-10-06 09:00:37.000000000 +0200 @@ -179,6 +179,7 @@ WebEngineView WebHitTest WebEngineScript + WebEngineManageScript WebEnginePrintMessageBox WebEngineExportHtmlPageJob REQUIRED_HEADERS WebEngineViewer_webengine_misc_HEADERS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/networkmanager/networkaccessmanagerwebengine.cpp new/messagelib-16.08.2/webengineviewer/src/networkmanager/networkaccessmanagerwebengine.cpp --- old/messagelib-16.08.1/webengineviewer/src/networkmanager/networkaccessmanagerwebengine.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/networkmanager/networkaccessmanagerwebengine.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -39,7 +39,7 @@ }; NetworkAccessManagerWebEngine::NetworkAccessManagerWebEngine(QWebEngineView *webEngine, KActionCollection *ac, QObject *parent) - : QNetworkAccessManager(parent), + : QObject(parent), d(new NetworkAccessManagerWebEnginePrivate) { d->mManager = new WebEngineViewer::NetworkUrlInterceptorManager(webEngine, ac, this); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/networkmanager/networkaccessmanagerwebengine.h new/messagelib-16.08.2/webengineviewer/src/networkmanager/networkaccessmanagerwebengine.h --- old/messagelib-16.08.1/webengineviewer/src/networkmanager/networkaccessmanagerwebengine.h 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/networkmanager/networkaccessmanagerwebengine.h 2016-10-06 09:00:37.000000000 +0200 @@ -32,7 +32,7 @@ class NetworkPluginUrlInterceptorInterface; class NetworkAccessManagerWebEnginePrivate; class NetworkPluginUrlInterceptorConfigureWidget; -class WEBENGINEVIEWER_EXPORT NetworkAccessManagerWebEngine : public QNetworkAccessManager +class WEBENGINEVIEWER_EXPORT NetworkAccessManagerWebEngine : public QObject { Q_OBJECT public: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/tests/testjquerysupportwebengine.cpp new/messagelib-16.08.2/webengineviewer/src/tests/testjquerysupportwebengine.cpp --- old/messagelib-16.08.1/webengineviewer/src/tests/testjquerysupportwebengine.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/tests/testjquerysupportwebengine.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -27,6 +27,7 @@ #include <QPushButton> #include <QMessageBox> #include <QTextEdit> +#include <WebEngineViewer/WebEngineManageScript> TestJQuerySupportWebEngine::TestJQuerySupportWebEngine(QWidget *parent) : QWidget(parent) @@ -57,7 +58,11 @@ { const QString code = mEditor->toPlainText(); if (!code.isEmpty()) { +#if QT_VERSION >= 0x050700 + pageView->page()->runJavaScript(code, WebEngineViewer::WebEngineManageScript::scriptWordId()); +#else pageView->page()->runJavaScript(code); +#endif } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/webengineaccesskey/autotests/webengineaccesskeyanchorfromhtmltest.cpp new/messagelib-16.08.2/webengineviewer/src/webengineaccesskey/autotests/webengineaccesskeyanchorfromhtmltest.cpp --- old/messagelib-16.08.1/webengineviewer/src/webengineaccesskey/autotests/webengineaccesskeyanchorfromhtmltest.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/webengineaccesskey/autotests/webengineaccesskeyanchorfromhtmltest.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -18,6 +18,7 @@ */ #include "webengineaccesskeyanchorfromhtmltest.h" #include "../webengineaccesskeyutils.h" +#include <WebEngineViewer/WebEngineManageScript> #include <QTest> #include <QHBoxLayout> #include <QWebEngineView> @@ -74,7 +75,13 @@ void TestWebEngineAccessKey::loadFinished(bool b) { Q_UNUSED(b); +#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) + mEngineView->page()->runJavaScript(WebEngineViewer::WebEngineAccessKeyUtils::script(), + WebEngineViewer::WebEngineManageScript::scriptWordId(), + invoke(this, &TestWebEngineAccessKey::handleSearchAccessKey)); +#else mEngineView->page()->runJavaScript(WebEngineViewer::WebEngineAccessKeyUtils::script(), invoke(this, &TestWebEngineAccessKey::handleSearchAccessKey)); +#endif } Q_DECLARE_METATYPE(QVector<WebEngineViewer::WebEngineAccessKeyAnchor>) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/webengineaccesskey/webengineaccesskey.cpp new/messagelib-16.08.2/webengineviewer/src/webengineaccesskey/webengineaccesskey.cpp --- old/messagelib-16.08.1/webengineviewer/src/webengineaccesskey/webengineaccesskey.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/webengineaccesskey/webengineaccesskey.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -20,6 +20,7 @@ #include "webengineaccesskey.h" #include "webengineaccesskeyanchor.h" #include "webengineaccesskeyutils.h" +#include "webenginemanagescript.h" #include <KActionCollection> #include <QKeyEvent> @@ -385,6 +386,12 @@ void WebEngineAccessKey::showAccessKeys() { d->mAccessKeyActivated = WebEngineAccessKeyPrivate::Activated; +#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) + d->mWebEngine->page()->runJavaScript(WebEngineViewer::WebEngineAccessKeyUtils::script(), + WebEngineManageScript::scriptWordId(), + invoke(this, &WebEngineAccessKey::handleSearchAccessKey)); +#else d->mWebEngine->page()->runJavaScript(WebEngineViewer::WebEngineAccessKeyUtils::script(), invoke(this, &WebEngineAccessKey::handleSearchAccessKey)); +#endif } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/webenginemanagescript.cpp new/messagelib-16.08.2/webengineviewer/src/webenginemanagescript.cpp --- old/messagelib-16.08.1/webengineviewer/src/webenginemanagescript.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/webenginemanagescript.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -54,7 +54,7 @@ script.setName(scriptName); script.setInjectionPoint(injectionPoint); script.setRunsOnSubFrames(true); - script.setWorldId(QWebEngineScript::MainWorld); + script.setWorldId(scriptWordId()); } script.setSourceCode(source); profile->scripts()->insert(script); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/webenginemanagescript.h new/messagelib-16.08.2/webengineviewer/src/webenginemanagescript.h --- old/messagelib-16.08.1/webengineviewer/src/webenginemanagescript.h 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/webenginemanagescript.h 2016-10-06 09:00:37.000000000 +0200 @@ -22,17 +22,20 @@ #include <QObject> #include <QWebEngineScript> +#include "webengineviewer_export.h" class QWebEngineProfile; namespace WebEngineViewer { -class WebEngineManageScript : public QObject +class WEBENGINEVIEWER_EXPORT WebEngineManageScript : public QObject { Q_OBJECT public: explicit WebEngineManageScript(QObject *parent = Q_NULLPTR); ~WebEngineManageScript(); void addScript(QWebEngineProfile *profile, const QString &source, const QString &scriptName, QWebEngineScript::InjectionPoint injectionPoint); + + static qint32 scriptWordId() { return (QWebEngineScript::UserWorld + 1); } }; } #endif // WEBENGINEMANAGESCRIPT_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/webenginescript.cpp new/messagelib-16.08.2/webengineviewer/src/webenginescript.cpp --- old/messagelib-16.08.1/webengineviewer/src/webenginescript.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/webenginescript.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -181,3 +181,18 @@ const QString source = QString::fromLatin1("window.scrollTo(window.scrollX, %1); [window.scrollX, window.scrollY];").arg(pos); return source; } + +QString WebEngineScript::isScrolledToBottom() +{ + return QString::fromLatin1("(function() { " + "var isAtBottom = 0;" + "if (qt.jQuery(window).scrollTop() + qt.jQuery(window).height() == qt.jQuery(document).height())" + "{ " + " isAtBottom = 1;" + "} else {" + " isAtBottom = 0;" + "}" + "return Boolean(isAtBottom); " + "}());"); +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/webenginescript.h new/messagelib-16.08.2/webengineviewer/src/webenginescript.h --- old/messagelib-16.08.1/webengineviewer/src/webenginescript.h 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/webenginescript.h 2016-10-06 09:00:37.000000000 +0200 @@ -40,6 +40,7 @@ WEBENGINEVIEWER_EXPORT QString scrollPercentage(int percent); WEBENGINEVIEWER_EXPORT QString scrollToRelativePosition(qreal pos); WEBENGINEVIEWER_EXPORT QString removeStyleToElement(const QString &element); +WEBENGINEVIEWER_EXPORT QString isScrolledToBottom(); } } #endif // WEBENGINESCRIPT_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/webengineview.cpp new/messagelib-16.08.2/webengineviewer/src/webengineview.cpp --- old/messagelib-16.08.1/webengineviewer/src/webengineview.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/webengineview.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -59,6 +59,11 @@ delete d; } +WebEngineManageScript *WebEngineView::webEngineManagerScript() const +{ + return d->mManagerScript; +} + void WebEngineView::initializeJQueryScript() { QFile file; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/webengineview.h new/messagelib-16.08.2/webengineviewer/src/webengineview.h --- old/messagelib-16.08.1/webengineviewer/src/webengineview.h 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/webengineview.h 2016-10-06 09:00:37.000000000 +0200 @@ -26,6 +26,7 @@ namespace WebEngineViewer { class WebEngineViewPrivate; +class WebEngineManageScript; class WEBENGINEVIEWER_EXPORT WebEngineView : public QWebEngineView { Q_OBJECT @@ -41,6 +42,9 @@ void addScript(const QString &source, const QString &scriptName, QWebEngineScript::InjectionPoint injectionPoint); void initializeJQueryScript(); + + WebEngineManageScript *webEngineManagerScript() const; + protected: bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE; QWebEngineView *createWindow(QWebEnginePage::WebWindowType type) Q_DECL_OVERRIDE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/messagelib-16.08.1/webengineviewer/src/webhittest.cpp new/messagelib-16.08.2/webengineviewer/src/webhittest.cpp --- old/messagelib-16.08.1/webengineviewer/src/webhittest.cpp 2016-09-03 13:28:12.000000000 +0200 +++ new/messagelib-16.08.2/webengineviewer/src/webhittest.cpp 2016-10-06 09:00:37.000000000 +0200 @@ -20,6 +20,7 @@ #include "webhittest.h" #include "webhittestresult.h" #include <QWebEnginePage> +#include "webenginemanagescript.h" using namespace WebEngineViewer; template<typename Arg, typename R, typename C> @@ -113,7 +114,13 @@ const QString &js = source.arg(pos.x()).arg(pos.y()); d->m_pageUrl = page->url(); +#if QT_VERSION >= 0x050700 + page->runJavaScript(js, + WebEngineViewer::WebEngineManageScript::scriptWordId(), + invoke(this, &WebHitTest::handleHitTest)); +#else page->runJavaScript(js, invoke(this, &WebHitTest::handleHitTest)); +#endif } WebHitTest::~WebHitTest()
