Skip to content

Commit

Permalink
Add a URL that preserves the URL path when trying to resolve favicons. (
Browse files Browse the repository at this point in the history
  • Loading branch information
libklein authored and droidmonkey committed Oct 20, 2022
1 parent a6db8ba commit 047251a
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
7 changes: 7 additions & 0 deletions src/gui/IconDownloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,13 @@ void IconDownloader::setUrl(const QString& entryUrl)
}
}

// Add a pull that preserves the query if there is one.
if (!url.path().isEmpty()) {
// Appends /favicon.ico to the last segment of the path.
// stem/something/ will become stem/something/favicon.ico, and stem/something will become stem/favicon.ico
m_urlsToTry.append(url.resolved(QUrl("./favicon.ico")));
}

// Add a direct pull of the website's own favicon.ico file
QUrl favicon_url = url;
favicon_url.setPath("/favicon.ico");
Expand Down
18 changes: 13 additions & 5 deletions tests/TestIconDownloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,11 @@ void TestIconDownloader::testIconDownloader_data()
QTest::newRow("Unsupported schema") << "ftp://google.com" << QStringList{};
QTest::newRow("Missing schema") << "keepassxc.org" << QStringList{"https://keepassxc.org/favicon.ico"};
QTest::newRow("Missing host") << "https:///register" << QStringList{};
QTest::newRow("URL with path") << "https://keepassxc.org/register/here" << QStringList{keepassxc_favicon};
QTest::newRow("URL with path") << "https://keepassxc.org/register/here/"
<< QStringList{"https://keepassxc.org/register/here/favicon.ico", keepassxc_favicon};
QTest::newRow("URL with path and query")
<< "https://keepassxc.org/register/here?login=me" << QStringList{keepassxc_favicon};
<< "https://keepassxc.org/register/here?login=me"
<< QStringList{"https://keepassxc.org/register/favicon.ico", keepassxc_favicon};
QTest::newRow("URL with port") << "https://keepassxc.org:8080"
<< QStringList{"https://keepassxc.org:8080/favicon.ico"};
QTest::newRow("2nd level domain") << "https://login.keepassxc.org"
Expand All @@ -54,11 +56,14 @@ void TestIconDownloader::testIconDownloader_data()
<< QStringList{"https://134.130.155.184/favicon.ico"};
QTest::newRow("Raw IP") << "134.130.155.184" << QStringList{"https://134.130.155.184/favicon.ico"};
QTest::newRow("Raw IP with schema and path")
<< "https://134.130.155.184/with/path" << QStringList{"https://134.130.155.184/favicon.ico"};
<< "https://134.130.155.184/with/path/"
<< QStringList{"https://134.130.155.184/with/path/favicon.ico", "https://134.130.155.184/favicon.ico"};
QTest::newRow("Raw IP with schema (https), path, and port")
<< "https://134.130.155.184:8080/test" << QStringList{"https://134.130.155.184:8080/favicon.ico"};
<< "https://134.130.155.184:8080/test/"
<< QStringList{"https://134.130.155.184:8080/test/favicon.ico", "https://134.130.155.184:8080/favicon.ico"};
QTest::newRow("Raw IP with schema (http), path, and port")
<< "134.130.155.184:8080/test" << QStringList{"https://134.130.155.184:8080/favicon.ico"};
<< "134.130.155.184:8080/test/"
<< QStringList{"https://134.130.155.184:8080/test/favicon.ico", "https://134.130.155.184:8080/favicon.ico"};
QTest::newRow("URL with username and password")
<< "https://user:[email protected]" << QStringList{"https://user:[email protected]/favicon.ico"};
QTest::newRow("URL with username and password, several subdomains")
Expand All @@ -68,4 +73,7 @@ void TestIconDownloader::testIconDownloader_data()
"https://keepassxc.org/favicon.ico"};
QTest::newRow("Raw IP with username and password")
<< "https://user:[email protected]" << QStringList{"https://user:[email protected]/favicon.ico"};
QTest::newRow("Relative path should be preserved")
<< "https://test.com/rel-path/"
<< QStringList{"https://test.com/rel-path/favicon.ico", "https://test.com/favicon.ico"};
}

0 comments on commit 047251a

Please sign in to comment.