mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
LibWeb: Show correct favicon when default favicon is loaded
Block the replacement of the favicon by the default favicon loader when a favicon that is loaded through a link tag is already active. This way, the favicon in the link tags will be prioritized against the default favicons from `/favicon.ico` or the seranity default icon.
This commit is contained in:
parent
06d9853a8b
commit
69ca27d3d7
Notes:
sideshowbarker
2024-07-17 14:11:49 +09:00
Author: https://github.com/avdg Commit: https://github.com/SerenityOS/serenity/commit/69ca27d3d7 Pull-request: https://github.com/SerenityOS/serenity/pull/13462 Reviewed-by: https://github.com/TobyAsE Reviewed-by: https://github.com/davidot ✅
2 changed files with 14 additions and 0 deletions
|
@ -339,6 +339,7 @@ public:
|
|||
|
||||
bool in_removed_last_ref() const { return m_in_removed_last_ref; }
|
||||
|
||||
bool has_active_favicon() const { return m_active_favicon; }
|
||||
void check_favicon_after_loading_link_resource();
|
||||
|
||||
private:
|
||||
|
|
|
@ -187,6 +187,10 @@ bool FrameLoader::load(LoadRequest& request, Type type)
|
|||
if (type == Type::IFrame)
|
||||
return true;
|
||||
|
||||
auto* document = browsing_context().active_document();
|
||||
if (document && document->has_active_favicon())
|
||||
return true;
|
||||
|
||||
if (url.protocol() == "http" || url.protocol() == "https") {
|
||||
AK::URL favicon_url;
|
||||
favicon_url.set_protocol(url.protocol());
|
||||
|
@ -197,6 +201,10 @@ bool FrameLoader::load(LoadRequest& request, Type type)
|
|||
ResourceLoader::the().load(
|
||||
favicon_url,
|
||||
[this, favicon_url](auto data, auto&, auto) {
|
||||
// Always fetch the current document
|
||||
auto* document = this->browsing_context().active_document();
|
||||
if (document && document->has_active_favicon())
|
||||
return;
|
||||
dbgln_if(SPAM_DEBUG, "Favicon downloaded, {} bytes from {}", data.size(), favicon_url);
|
||||
if (data.is_empty())
|
||||
return;
|
||||
|
@ -211,6 +219,11 @@ bool FrameLoader::load(LoadRequest& request, Type type)
|
|||
load_favicon(favicon_bitmap);
|
||||
},
|
||||
[this](auto&, auto) {
|
||||
// Always fetch the current document
|
||||
auto* document = this->browsing_context().active_document();
|
||||
if (document && document->has_active_favicon())
|
||||
return;
|
||||
|
||||
load_favicon();
|
||||
});
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue