summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/text
diff options
context:
space:
mode:
authorAlexander Volkov <avolkov@astralinux.ru>2018-09-25 18:09:28 +0300
committerAlexander Volkov <avolkov@astralinux.ru>2021-01-12 15:33:10 +0300
commit376e3bd8ecf40881685714f6f19e12d68e92127e (patch)
tree8a137b8cea51115b405202ef6c0cffdf6fe78192 /tests/auto/gui/text
parent9e09677c1dd4da92735736a0fbcb703416bf4d6d (diff)
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 <ritt.ks@gmail.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'tests/auto/gui/text')
-rw-r--r--tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp25
1 files changed, 25 insertions, 0 deletions
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 <qimage.h>
#include <qtextlayout.h>
#include <QDomDocument>
+#include <qurlresourceprovider.h>
#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("<img src='%1'/>").arg(url.toString()));
+ doc.resource(QTextDocument::UserResource, url);
+ QCOMPARE(url, resourceProvider.resourseUrl);
+}
QTEST_MAIN(tst_QTextDocument)
#include "tst_qtextdocument.moc"