diff --git a/brave_paks.gni b/brave_paks.gni index 9aabbda8905..470b084f184 100644 --- a/brave_paks.gni +++ b/brave_paks.gni @@ -36,11 +36,13 @@ template("brave_repack_percent") { sources = [ "$root_gen_dir/brave/brave_theme_resources_${percent}_percent.pak", "$root_gen_dir/brave/browser/resources/bookmark_icon/bookmark_icon_resources_${percent}_percent.pak", + "$root_gen_dir/components/brave_components_resources_${percent}_percent.pak", ] deps = [ "//brave/app/theme:brave_theme_resources", "//brave/browser/resources/bookmark_icon:bookmark_icon_resources", + "//brave/components/resources:scaled_resources", ] if (defined(invoker.deps)) { diff --git a/browser/ui/BUILD.gn b/browser/ui/BUILD.gn index 9b88cc1b3e9..97fc93e6cd6 100644 --- a/browser/ui/BUILD.gn +++ b/browser/ui/BUILD.gn @@ -869,6 +869,7 @@ source_set("ui") { "//brave/components/p3a_utils", "//brave/components/playlist/core/common", "//brave/components/query_filter", + "//brave/components/resources:scaled_resources", "//brave/components/resources:static_resources", "//brave/components/services/bat_ads/public/interfaces", "//brave/components/skus/browser", diff --git a/build/chromium/resources/chrome/app/theme/default_100_percent/common/favicon_ntp.png b/build/chromium/resources/chrome/app/theme/default_100_percent/common/favicon_ntp.png index 422cc0056de..bfdfcfd5fc2 100644 Binary files a/build/chromium/resources/chrome/app/theme/default_100_percent/common/favicon_ntp.png and b/build/chromium/resources/chrome/app/theme/default_100_percent/common/favicon_ntp.png differ diff --git a/build/chromium/resources/chrome/app/theme/default_200_percent/common/favicon_ntp.png b/build/chromium/resources/chrome/app/theme/default_200_percent/common/favicon_ntp.png index c581156b90d..8387793d0f0 100644 Binary files a/build/chromium/resources/chrome/app/theme/default_200_percent/common/favicon_ntp.png and b/build/chromium/resources/chrome/app/theme/default_200_percent/common/favicon_ntp.png differ diff --git a/chromium_src/chrome/browser/ui/tabs/tab_renderer_data.cc b/chromium_src/chrome/browser/ui/tabs/tab_renderer_data.cc index 883caf772a1..50599cf97f3 100644 --- a/chromium_src/chrome/browser/ui/tabs/tab_renderer_data.cc +++ b/chromium_src/chrome/browser/ui/tabs/tab_renderer_data.cc @@ -16,9 +16,31 @@ #include "brave/browser/ui/tabs/shared_pinned_tab_service_factory.h" #include "brave/components/constants/webui_url_constants.h" #include "chrome/browser/resource_coordinator/tab_load_tracker.h" +#include "chrome/browser/ui/color/chrome_color_id.h" #include "chrome/browser/ui/tabs/features.h" +#include "chrome/common/webui_url_constants.h" +#include "components/grit/brave_components_scaled_resources.h" +#include "ui/base/resource/resource_bundle.h" +#include "ui/color/color_provider.h" +#include "ui/gfx/color_utils.h" #include "url/gurl.h" +namespace { + +// Returns the appropriate favicon for the NTP based on the current theme. +ui::ImageModel GetThemedNTPFavicon(content::WebContents* contents) { + const auto& color_provider = contents->GetColorProvider(); + const SkColor background_color = + color_provider.GetColor(kColorTabBackgroundActiveFrameActive); + const bool is_dark = color_utils::IsDark(background_color); + const int resource_id = + is_dark ? IDR_FAVICON_NTP_DARK : IDR_FAVICON_NTP_LIGHT; + return ui::ImageModel::FromImage( + ui::ResourceBundle::GetSharedInstance().GetImageNamed(resource_id)); +} + +} // namespace + TabRendererData TabRendererData::FromTabInModel(const TabStripModel* model, int index) { if (base::FeatureList::IsEnabled(tabs::kBraveSharedPinnedTabs)) { @@ -39,18 +61,22 @@ TabRendererData TabRendererData::FromTabInModel(const TabStripModel* model, } auto data = FromTabInModel_ChromiumImpl(model, index); - if (data.should_themify_favicon) { - content::WebContents* const contents = model->GetWebContentsAt(index); - const GURL& url = contents->GetVisibleURL(); - if (url.SchemeIs(content::kChromeUIScheme) && - (url.host() == kWelcomeHost || url.host() == kRewardsPageHost)) { + + content::WebContents* const contents = model->GetWebContentsAt(index); + const GURL& url = contents->GetVisibleURL(); + + // Override favicon theming for some WebUIs. + if (url.SchemeIs(content::kChromeUIScheme)) { + if (url.host() == chrome::kChromeUINewTabHost) { + data.favicon = GetThemedNTPFavicon(contents); + data.should_themify_favicon = false; + } else if (url.host() == kWelcomeHost || url.host() == kRewardsPageHost) { data.should_themify_favicon = false; } } // Show which tabs are unloaded. if (!data.should_show_discard_status) { - content::WebContents* const contents = model->GetWebContentsAt(index); using resource_coordinator::TabLoadTracker; const auto loading_state = TabLoadTracker::Get()->GetLoadingState(contents); if (loading_state == TabLoadTracker::LoadingState::UNLOADED) { diff --git a/components/resources/BUILD.gn b/components/resources/BUILD.gn index 534634ae92a..c75c3e3fd55 100644 --- a/components/resources/BUILD.gn +++ b/components/resources/BUILD.gn @@ -17,6 +17,20 @@ import("//build/config/locales.gni") import("//extensions/buildflags/buildflags.gni") import("//tools/grit/repack.gni") +brave_grit("scaled_resources") { + source = "brave_components_scaled_resources.grd" + + outputs = [ + "grit/brave_components_scaled_resources.h", + "grit/brave_components_scaled_resources_map.cc", + "grit/brave_components_scaled_resources_map.h", + "brave_components_resources_100_percent.pak", + "brave_components_resources_200_percent.pak", + ] + + output_dir = "$root_gen_dir/components" +} + brave_grit("static_resources") { source = "brave_components_resources.grd" @@ -66,6 +80,7 @@ brave_grit("static_resources") { repack("resources") { deps = [ + ":scaled_resources", ":static_resources", "//brave/components/ai_rewriter/common/buildflags", "//brave/components/brave_account/resources", diff --git a/components/resources/brave_components_scaled_resources.grd b/components/resources/brave_components_scaled_resources.grd new file mode 100644 index 00000000000..d2f18d0c7fb --- /dev/null +++ b/components/resources/brave_components_scaled_resources.grd @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/components/resources/brave_new_tab_page_scaled_resources.grdp b/components/resources/brave_new_tab_page_scaled_resources.grdp new file mode 100644 index 00000000000..abdcf800134 --- /dev/null +++ b/components/resources/brave_new_tab_page_scaled_resources.grdp @@ -0,0 +1,5 @@ + + + + + diff --git a/components/resources/default_100_percent/favicon_ntp_dark.png b/components/resources/default_100_percent/favicon_ntp_dark.png new file mode 100644 index 00000000000..944a69fdc5a Binary files /dev/null and b/components/resources/default_100_percent/favicon_ntp_dark.png differ diff --git a/components/resources/default_100_percent/favicon_ntp_light.png b/components/resources/default_100_percent/favicon_ntp_light.png new file mode 100644 index 00000000000..422cc0056de Binary files /dev/null and b/components/resources/default_100_percent/favicon_ntp_light.png differ diff --git a/components/resources/default_200_percent/favicon_ntp_dark.png b/components/resources/default_200_percent/favicon_ntp_dark.png new file mode 100644 index 00000000000..88d5c7dde6e Binary files /dev/null and b/components/resources/default_200_percent/favicon_ntp_dark.png differ diff --git a/components/resources/default_200_percent/favicon_ntp_light.png b/components/resources/default_200_percent/favicon_ntp_light.png new file mode 100644 index 00000000000..c581156b90d Binary files /dev/null and b/components/resources/default_200_percent/favicon_ntp_light.png differ diff --git a/resources/resource_ids.spec b/resources/resource_ids.spec index 26654d772ad..5da7d376f12 100644 --- a/resources/resource_ids.spec +++ b/resources/resource_ids.spec @@ -237,6 +237,9 @@ "META": {"sizes": {"includes": [20]}}, "includes": [54080], }, + "brave/components/resources/brave_components_scaled_resources.grd": { + "structures": [54100], + }, # WARNING: The IDs range is 2^16-1. Check # out//gen/brave/resources/brave_resource_ids for how much the # ids got expanded for the build.