summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-04-06 12:27:17 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-05-02 15:49:26 +0200
commit2c0a66dd1c308923639ad964f067c6e49b626e26 (patch)
tree3a55500e975e999c0bed7f91e197d34c8019057e
parentd17818da1244f862959bb0bd6f60be0d866609f3 (diff)
Fix navigation to non-local URLs
They are passed in another part of the DropItem object. Task-number: QTBUG-102192 Change-Id: If52a88ce2688c25ea0edcc0d1e8f962f2cdd29dd Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io> (cherry picked from commit 742e6786aeb500ef9bc850bf84803d5f388e3927)
-rw-r--r--src/core/web_contents_adapter.cpp9
-rw-r--r--tests/auto/widgets/qwebengineview/BLACKLIST2
-rw-r--r--tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp10
3 files changed, 18 insertions, 3 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index d298c0837..41ec997a3 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -1487,8 +1487,10 @@ static QMimeData *mimeDataFromDropData(const content::DropData &dropData)
mimeData->setText(toQt(*dropData.text));
if (dropData.html.has_value())
mimeData->setHtml(toQt(*dropData.html));
- if (dropData.url.is_valid())
+ if (dropData.url.is_valid()) {
mimeData->setUrls(QList<QUrl>() << toQt(dropData.url));
+ mimeData->setText(toQt(dropData.url_title));
+ }
if (!dropData.custom_data.empty()) {
base::Pickle pickle;
ui::WriteCustomDataToPickle(dropData.custom_data, &pickle);
@@ -1612,6 +1614,11 @@ static void fillDropDataFromMimeData(content::DropData *dropData, const QMimeDat
}
if (!dropData->filenames.empty())
return;
+ if (mimeData->hasUrls()) {
+ dropData->url = toGurl(urls.first());
+ if (mimeData->hasText())
+ dropData->url_title = toString16(mimeData->text());
+ }
if (mimeData->hasHtml())
dropData->html = toOptionalString16(mimeData->html());
if (mimeData->hasText())
diff --git a/tests/auto/widgets/qwebengineview/BLACKLIST b/tests/auto/widgets/qwebengineview/BLACKLIST
index 99161a591..4bc678d10 100644
--- a/tests/auto/widgets/qwebengineview/BLACKLIST
+++ b/tests/auto/widgets/qwebengineview/BLACKLIST
@@ -13,5 +13,5 @@ osx
[reusePage]
b2qt arm
-[navigateOnDrop]
+[navigateOnDrop:file]
windows
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
index 36861065f..39e95875f 100644
--- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
+++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
@@ -176,6 +176,7 @@ private Q_SLOTS:
void closeDiscardsPage();
void loadAfterRendererCrashed();
void inspectElement();
+ void navigateOnDrop_data();
void navigateOnDrop();
};
@@ -3516,8 +3517,16 @@ void tst_QWebEngineView::inspectElement()
QTest::qWait(100);
}
+void tst_QWebEngineView::navigateOnDrop_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::newRow("file") << QUrl::fromLocalFile(QDir(QT_TESTCASE_SOURCEDIR).absoluteFilePath("resources/dummy.html"));
+ QTest::newRow("qrc") << QUrl("qrc:///resources/dummy.html");
+}
+
void tst_QWebEngineView::navigateOnDrop()
{
+ QFETCH(QUrl, url);
struct WebEngineView : QWebEngineView {
QWebEngineView* createWindow(QWebEnginePage::WebWindowType /* type */) override { return this; }
} view;
@@ -3526,7 +3535,6 @@ void tst_QWebEngineView::navigateOnDrop()
QVERIFY(QTest::qWaitForWindowExposed(&view));
QSignalSpy loadSpy(&view, &QWebEngineView::loadFinished);
- auto url = QUrl::fromLocalFile(QDir(QT_TESTCASE_SOURCEDIR).absoluteFilePath("resources/dummy.html"));
QMimeData mimeData;
mimeData.setUrls({ url });