From 376e3bd8ecf40881685714f6f19e12d68e92127e Mon Sep 17 00:00:00 2001 From: Alexander Volkov Date: Tue, 25 Sep 2018 18:09:28 +0300 Subject: Introduce QUrlResourceProvider to load resources for HTML QTextDocument and the text editor classes suggest to override their loadResource() methods to provide data associated with a text document. This approach has the following drawbacks: - it requires subclassing - there is no way to set a global resource provider - QLabel is missing virtual loadResource() method and it can't be added without breaking ABI QUrlResourceProvider is designed to solve these issues. One should create a derived class that implements QUrlResourceProvider::resource(). The objects of the derived class then can be set for any text document. The default resource provider can be set with QUrlResourceProvider::setDefaultProvider(). This change also adds QLabel::setResourceProvider(), which doesn't break ABI. [ChangeLog][QtGui][Text] Introduced QUrlResourceProvider that allows to load resources for HTML. It is intended to replace the use of QTextDocument::loadResource(). Change-Id: Iaf19b229f522a73508f20715257450fe58f68daf Reviewed-by: Konstantin Ritt Reviewed-by: Lars Knoll --- .../gui/text/qtextdocument/tst_qtextdocument.cpp | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'tests/auto/gui/text') diff --git a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp index c290305d2f..4e0b7f46df 100644 --- a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp +++ b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include "common.h" // #define DEBUG_WRITE_OUTPUT @@ -192,6 +193,8 @@ private slots: void clearUndoRedoStacks(); void mergeFontFamilies(); + void resourceProvider(); + private: void backgroundImage_checkExpectedHtml(const QTextDocument &doc); void buildRegExpData(); @@ -3593,6 +3596,28 @@ void tst_QTextDocument::clearUndoRedoStacks() QVERIFY(!doc.isUndoAvailable()); } +class UrlResourceProvider : public QUrlResourceProvider +{ +public: + QVariant resource(const QUrl &url) override + { + resourseUrl = url; + return QVariant(); + } + + QUrl resourseUrl; +}; + +void tst_QTextDocument::resourceProvider() +{ + QTextDocument doc; + UrlResourceProvider resourceProvider; + doc.setResourceProvider(&resourceProvider); + QUrl url("test://img"); + doc.setHtml(QStringLiteral("").arg(url.toString())); + doc.resource(QTextDocument::UserResource, url); + QCOMPARE(url, resourceProvider.resourseUrl); +} QTEST_MAIN(tst_QTextDocument) #include "tst_qtextdocument.moc" -- cgit v1.2.3