1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-19 10:16: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)
* KWallet: Store passwords in a map format
* History: Don't delete all items under dates when filtering
* AdBlock: Workaround for "Blocked content" page
Version 22.08.2
* 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) {
QString page;
page.append(QzTools::readAllFileContents(QSL(":adblock/data/adblock.html")));
page.replace(QSL("%FAVICON%"), QSL("qrc:adblock/data/adblock_big.png"));
page.replace(QSL("%IMAGE%"), QSL("qrc:adblock/data/adblock_big.png"));
page.replace(QSL("%TITLE%"), tr("Blocked content"));
page.replace(QSL("%RULE%"), tr("Blocked by <i>%1 (%2)</i>").arg(ruleFilter, ruleSubscription));
page = QzTools::applyDirectionToPage(page);
request.redirect(QUrl(QString::fromUtf8(QByteArray("data:text/html;base64,") + page.toUtf8().toBase64())));
QString url = QSL("qrc:adblock/data/adblock.html?direction=%DIRECTION%&title=%1&rule=%3").arg(
tr("Blocked content"),
tr("Blocked by <i>%1 (%2)</i>").arg(ruleFilter, ruleSubscription)
);
url = QzTools::applyDirectionToPage(url);
request.redirect(QUrl(url));
} else {
request.block(true);
}

View File

@ -1,18 +1,36 @@
<html><head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>%TITLE%</title>
<link rel="icon" href="%FAVICON%" type="image/x-icon" />
<title>Blocked content</title>
<link rel="icon" href="adblock_big.png" type="image/x-icon" />
<style>
html {background: #dddddd;}
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%;}
#box {max-width: 300px;height: 80%;overflow:auto;padding: 25px;padding-bottom: 10px;text-align: center;vertical-align: middle;margin: auto;}
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>
</head>
<body>
<div id="box">
<img src="%IMAGE%" >
<img src="adblock_big.png" >
<h2>AdBlock</h2>
%RULE%
<span id="rule"></span>
</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>