diff options
author | Michal Klocek <michal.klocek@qt.io> | 2018-07-02 13:34:17 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2018-08-09 09:39:21 +0000 |
commit | d0f00b47cb91f1f6af920602f8bf8b263a8d7f88 (patch) | |
tree | da12438af1e90c20a9b6c9184f62b01beeec2626 /tests/auto/widgets | |
parent | 9cbe64c54dee8451794e29f4357ccfac6d883e6b (diff) |
Add printToPdfPoppler test
Task-number: QTBUG-69550
Change-Id: I38fb8a32ad1967fc8a8568ad6c02ca3ca3000354
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r-- | tests/auto/widgets/printing/printing.pro | 10 | ||||
-rw-r--r-- | tests/auto/widgets/printing/tst_printing.cpp | 50 |
2 files changed, 54 insertions, 6 deletions
diff --git a/tests/auto/widgets/printing/printing.pro b/tests/auto/widgets/printing/printing.pro index 4926103e7..92f5d611c 100644 --- a/tests/auto/widgets/printing/printing.pro +++ b/tests/auto/widgets/printing/printing.pro @@ -1,2 +1,10 @@ +include($$QTWEBENGINE_OUT_ROOT/src/core/qtwebenginecore-config.pri) # workaround for QTBUG-68093 +QT_FOR_CONFIG += webenginecore-private + include(../tests.pri) -QT *= core-private +QT *= core-private webenginecore-private + +qtConfig(webengine-poppler-cpp) { + CONFIG += link_pkgconfig + PKGCONFIG += poppler-cpp +} diff --git a/tests/auto/widgets/printing/tst_printing.cpp b/tests/auto/widgets/printing/tst_printing.cpp index aa8b70c4c..c29227c0c 100644 --- a/tests/auto/widgets/printing/tst_printing.cpp +++ b/tests/auto/widgets/printing/tst_printing.cpp @@ -26,30 +26,38 @@ ** ****************************************************************************/ +#include <QtWebEngineCore/private/qtwebenginecoreglobal_p.h> #include <QWebEnginePage> #include <QTemporaryDir> #include <QTest> #include <QSignalSpy> #include <util.h> +#if QT_CONFIG(webengine_poppler_cpp) +#include <poppler-document.h> +#include <poppler-page.h> +#endif + class tst_Printing : public QObject { Q_OBJECT private slots: - void printToPdf(); + void printToPdfBasic(); +#if QT_CONFIG(webengine_poppler_cpp) + void printToPdfPoppler(); +#endif }; - -void tst_Printing::printToPdf() +void tst_Printing::printToPdfBasic() { QTemporaryDir tempDir(QDir::tempPath() + "/tst_qwebengineview-XXXXXX"); QVERIFY(tempDir.isValid()); QWebEnginePage page; - QSignalSpy spy(&page, SIGNAL(loadFinished(bool))); + QSignalSpy spy(&page, &QWebEnginePage::loadFinished); page.load(QUrl("qrc:///resources/basic_printing_page.html")); QTRY_VERIFY(spy.count() == 1); - QSignalSpy savePdfSpy(&page, SIGNAL(pdfPrintingFinished(const QString&, bool))); + QSignalSpy savePdfSpy(&page, &QWebEnginePage::pdfPrintingFinished); QPageLayout layout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF(0.0, 0.0, 0.0, 0.0)); QString path = tempDir.path() + "/print_1_success.pdf"; page.printToPdf(path, layout); @@ -80,5 +88,37 @@ void tst_Printing::printToPdf() QCOMPARE(failedInvalidLayoutSpy.waitForResult().length(), 0); } +#if QT_CONFIG(webengine_poppler_cpp) +void tst_Printing::printToPdfPoppler() +{ + // check if generated pdf is correct by searching for a know string on the page + using namespace poppler; + QWebEnginePage webPage; + QPageLayout layout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF(0.0, 0.0, 0.0, 0.0)); + + QSignalSpy spy(&webPage, &QWebEnginePage::loadFinished); + QSignalSpy savePdfSpy(&webPage, &QWebEnginePage::pdfPrintingFinished); + CallbackSpy<QByteArray> resultSpy; + + webPage.load(QUrl("qrc:///resources/basic_printing_page.html")); + QTRY_VERIFY(spy.count() == 1); + webPage.printToPdf(resultSpy.ref(), layout); + const QByteArray data = resultSpy.waitForResult(); + QVERIFY(data.length() > 0); + + QScopedPointer<document> pdf(document::load_from_raw_data(data.constData(), data.length())); + QVERIFY(pdf); + + const int pages = pdf->pages(); + QVERIFY(pages == 1); + + QScopedPointer<page> pdfPage(pdf->create_page(0)); + rectf rect; + QVERIFY2(pdfPage->search(ustring::from_latin1("Hello Paper World"), rect, page::search_from_top, + case_sensitive ), "Could not find text"); +} +#endif + + QTEST_MAIN(tst_Printing) #include "tst_printing.moc" |