From cf7e52018a95f4a73fdb191147c4d5281edb13af Mon Sep 17 00:00:00 2001 From: Szabolcs David <davidsz@inf.u-szeged.hu> Date: Mon, 23 Sep 2019 18:16:53 +0200 Subject: [PATCH] Support qrc protocol in @match rules of user scripts Pulls in the following Chromium changes: 7ac85fb4cc6 Fix building with pulseaudio 13 7956dfb8d20 Support qrc protocol in UrlPattern 9af3b1bf632 Fix pressure of tablet events Task-number: QTBUG-76173 Change-Id: Iffc21ed6eb0a99e2b96780ce4f11629d38f8b47e Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> --- src/3rdparty | 2 +- .../renderer/user_resource_controller.cpp | 2 +- .../qwebenginescript/tst_qwebenginescript.cpp | 28 +++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/3rdparty b/src/3rdparty index feccbb4ea..7ac85fb4c 160000 --- a/src/3rdparty +++ b/src/3rdparty @@ -1 +1 @@ -Subproject commit feccbb4ea7fa685dcd013f5a3f6c14ea768636c9 +Subproject commit 7ac85fb4cc6f44a21761a591ac497ae3d6bf966d diff --git a/src/core/renderer/user_resource_controller.cpp b/src/core/renderer/user_resource_controller.cpp index be5e6f043..2613d262e 100644 --- a/src/core/renderer/user_resource_controller.cpp +++ b/src/core/renderer/user_resource_controller.cpp @@ -71,7 +71,7 @@ static const int afterLoadTimeout = 500; static int validUserScriptSchemes() { - return URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS | URLPattern::SCHEME_FILE; + return URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS | URLPattern::SCHEME_FILE | URLPattern::SCHEME_QRC; } static bool regexMatchesURL(const std::string &pat, const GURL &url) { diff --git a/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp b/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp index 90361f2c9..2e8687d9b 100644 --- a/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp +++ b/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp @@ -71,6 +71,7 @@ private Q_SLOTS: #endif void noTransportWithoutWebChannel(); void scriptsInNestedIframes(); + void matchQrcUrl(); }; void tst_QWebEngineScript::domEditing() @@ -589,6 +590,33 @@ void tst_QWebEngineScript::webChannelWithBadString() QCOMPARE(host.text(), data); } #endif + +void tst_QWebEngineScript::matchQrcUrl() +{ + QWebEnginePage page; + QWebEngineView view; + view.setPage(&page); + QWebEngineScript s; + s.setInjectionPoint(QWebEngineScript::DocumentReady); + s.setWorldId(QWebEngineScript::MainWorld); + + + s.setSourceCode(QStringLiteral(R"( +// ==UserScript== +// @match qrc:/*main.html +// ==/UserScript== + +document.title = 'New title'; + )")); + + page.scripts().insert(s); + page.load(QUrl("qrc:/resources/test_iframe_main.html")); + view.show(); + QSignalSpy spyFinished(&page, &QWebEnginePage::loadFinished); + QVERIFY(spyFinished.wait()); + QCOMPARE(page.title(), "New title"); +} + QTEST_MAIN(tst_QWebEngineScript) #include "tst_qwebenginescript.moc" -- GitLab