1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-19 18:26:34 +01:00

AdBlock: Workaround for "Blocked content" page

- QtWebEngine blocks redirection to "data:" urls.
- Includes light / dark style

Signed-off-by: Juraj Oravec <jurajoravec@mailo.com>
This commit is contained in:
Juraj Oravec 2023-03-27 00:50:16 +02:00
parent 5ece02142b
commit aadae5dd9e
Signed by: SGOrava
GPG Key ID: 13660A3F1D9F093B
3 changed files with 33 additions and 15 deletions

View File

@ -6,6 +6,7 @@ Version 23.04.0
* PyFalkon: addBookmark - make C++ own parameters (fixes potential crash) * PyFalkon: addBookmark - make C++ own parameters (fixes potential crash)
* KWallet: Store passwords in a map format * KWallet: Store passwords in a map format
* History: Don't delete all items under dates when filtering * History: Don't delete all items under dates when filtering
* AdBlock: Workaround for "Blocked content" page
Version 22.08.2 Version 22.08.2
* Fix: Typing text in the search bar sends data although suggestions are disabled (by Juraj Oravec) (BUG: 439268) * Fix: Typing text in the search bar sends data although suggestions are disabled (by Juraj Oravec) (BUG: 439268)

View File

@ -37,14 +37,13 @@ void AdBlockUrlInterceptor::interceptRequest(QWebEngineUrlRequestInfo &request)
} }
if (request.resourceType() == QWebEngineUrlRequestInfo::ResourceTypeMainFrame) { if (request.resourceType() == QWebEngineUrlRequestInfo::ResourceTypeMainFrame) {
QString page; QString url = QSL("qrc:adblock/data/adblock.html?direction=%DIRECTION%&title=%1&rule=%3").arg(
page.append(QzTools::readAllFileContents(QSL(":adblock/data/adblock.html"))); tr("Blocked content"),
page.replace(QSL("%FAVICON%"), QSL("qrc:adblock/data/adblock_big.png")); tr("Blocked by <i>%1 (%2)</i>").arg(ruleFilter, ruleSubscription)
page.replace(QSL("%IMAGE%"), QSL("qrc:adblock/data/adblock_big.png")); );
page.replace(QSL("%TITLE%"), tr("Blocked content")); url = QzTools::applyDirectionToPage(url);
page.replace(QSL("%RULE%"), tr("Blocked by <i>%1 (%2)</i>").arg(ruleFilter, ruleSubscription));
page = QzTools::applyDirectionToPage(page); request.redirect(QUrl(url));
request.redirect(QUrl(QString::fromUtf8(QByteArray("data:text/html;base64,") + page.toUtf8().toBase64())));
} else { } else {
request.block(true); request.block(true);
} }

View File

@ -1,18 +1,36 @@
<html><head> <html><head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>%TITLE%</title> <title>Blocked content</title>
<link rel="icon" href="%FAVICON%" type="image/x-icon" /> <link rel="icon" href="adblock_big.png" type="image/x-icon" />
<style> <style>
html {background: #dddddd;} #box {max-width: 300px;height: 80%;overflow:auto;padding: 25px;padding-bottom: 10px;text-align: center;vertical-align: middle;margin: auto;}
body {background: #dddddd;}
#box {background: #ffffff;max-width: 300px;height: 80%;overflow:auto;padding: 25px;padding-bottom: 10px;text-align: center;vertical-align: middle;margin: auto;direction: %DIRECTION%;}
h2 {font-size: 100%;font-weight: bold; border-bottom: 1px solid #f4f4f4; margin-bottom: 0px;} h2 {font-size: 100%;font-weight: bold; border-bottom: 1px solid #f4f4f4; margin-bottom: 0px;}
@media (prefers-color-scheme: light) {
html, body {background: #dddddd;color: #525c66;}
#box {background: #ffffff;}
h2 {border-bottom-color: #aaa;}
.dark {display: none;}
}
@media (prefers-color-scheme: dark) {
html, body {background: #070709;color: #dddddd;}
#box {background: #171717;}
h2 {border-bottom-color: #555;}
.light {display: none;}
}
</style> </style>
</head> </head>
<body> <body>
<div id="box"> <div id="box">
<img src="%IMAGE%" > <img src="adblock_big.png" >
<h2>AdBlock</h2> <h2>AdBlock</h2>
%RULE% <span id="rule"></span>
</div> </div>
<script>
let params = (new URL(document.location)).searchParams;
document.title = params.get("title");
document.getElementById("rule").innerHTML = params.get("rule");
document.getElementById("box").style.direction = params.get("direction");
</script>
</body></html> </body></html>