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