#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_ui.h"
#include <optional>
#include <string>
#include <utility>
#include "base/rand_util.h"
#include "chrome/browser/bad_message.h"
#include "chrome/browser/image_fetcher/image_decoder_impl.h"
#include "chrome/browser/new_tab_page/modules/new_tab_page_modules.h"
#include "chrome/browser/new_tab_page/new_tab_page_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/search/background/ntp_custom_background_service_factory.h"
#include "chrome/browser/search/background/wallpaper_search/wallpaper_search_background_manager.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/views/side_panel/customize_chrome/customize_chrome_utils.h"
#include "chrome/browser/ui/webui/cr_components/customize_color_scheme_mode/customize_color_scheme_mode_handler.h"
#include "chrome/browser/ui/webui/cr_components/theme_color_picker/theme_color_picker_handler.h"
#include "chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h"
#include "chrome/browser/ui/webui/sanitized_image_source.h"
#include "chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_page_handler.h"
#include "chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_section.h"
#include "chrome/browser/ui/webui/side_panel/customize_chrome/customize_toolbar/customize_toolbar_handler.h"
#include "chrome/browser/ui/webui/side_panel/customize_chrome/wallpaper_search/wallpaper_search_handler.h"
#include "chrome/browser/ui/webui/side_panel/customize_chrome/wallpaper_search/wallpaper_search_string_map.h"
#include "chrome/browser/ui/webui/webui_util.h"
#include "chrome/common/webui_url_constants.h"
#include "chrome/grit/generated_resources.h"
#include "chrome/grit/side_panel_customize_chrome_resources.h"
#include "chrome/grit/side_panel_customize_chrome_resources_map.h"
#include "chrome/grit/side_panel_shared_resources.h"
#include "chrome/grit/side_panel_shared_resources_map.h"
#include "components/search/ntp_features.h"
#include "components/strings/grit/components_strings.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_data_source.h"
#include "ui/base/webui/web_ui_util.h"
#include "ui/strings/grit/ui_strings.h"
#include "ui/webui/color_change_listener/color_change_handler.h"
namespace {
int64_t RandInt64() { … }
}
DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(CustomizeChromeUI,
kChangeChromeThemeButtonElementId);
DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(CustomizeChromeUI,
kChangeChromeThemeClassicElementId);
DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(CustomizeChromeUI,
kChromeThemeBackElementId);
DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(CustomizeChromeUI,
kChromeThemeCollectionElementId);
DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(CustomizeChromeUI, kChromeThemeElementId);
CustomizeChromeUI::CustomizeChromeUI(content::WebUI* web_ui)
: … { … }
CustomizeChromeUI::~CustomizeChromeUI() = default;
void CustomizeChromeUI::ScrollToSection(CustomizeChromeSection section) { … }
void CustomizeChromeUI::AttachedTabStateUpdated(
bool is_source_tab_first_party_ntp) { … }
base::WeakPtr<CustomizeChromeUI> CustomizeChromeUI::GetWeakPtr() { … }
WEB_UI_CONTROLLER_TYPE_IMPL(CustomizeChromeUI)
void CustomizeChromeUI::BindInterface(
mojo::PendingReceiver<side_panel::mojom::CustomizeChromePageHandlerFactory>
receiver) { … }
void CustomizeChromeUI::BindInterface(
mojo::PendingReceiver<
side_panel::customize_chrome::mojom::CustomizeToolbarHandlerFactory>
receiver) { … }
void CustomizeChromeUI::BindInterface(
mojo::PendingReceiver<help_bubble::mojom::HelpBubbleHandlerFactory>
pending_receiver) { … }
void CustomizeChromeUI::BindInterface(
mojo::PendingReceiver<customize_color_scheme_mode::mojom::
CustomizeColorSchemeModeHandlerFactory>
pending_receiver) { … }
void CustomizeChromeUI::BindInterface(
mojo::PendingReceiver<
theme_color_picker::mojom::ThemeColorPickerHandlerFactory>
pending_receiver) { … }
void CustomizeChromeUI::BindInterface(
mojo::PendingReceiver<color_change_listener::mojom::PageHandler>
pending_receiver) { … }
void CustomizeChromeUI::BindInterface(
mojo::PendingReceiver<
side_panel::customize_chrome::mojom::WallpaperSearchHandlerFactory>
pending_receiver) { … }
void CustomizeChromeUI::CreatePageHandler(
mojo::PendingRemote<side_panel::mojom::CustomizeChromePage> pending_page,
mojo::PendingReceiver<side_panel::mojom::CustomizeChromePageHandler>
pending_page_handler) { … }
void CustomizeChromeUI::CreateHelpBubbleHandler(
mojo::PendingRemote<help_bubble::mojom::HelpBubbleClient> client,
mojo::PendingReceiver<help_bubble::mojom::HelpBubbleHandler> handler) { … }
void CustomizeChromeUI::CreateCustomizeColorSchemeModeHandler(
mojo::PendingRemote<
customize_color_scheme_mode::mojom::CustomizeColorSchemeModeClient>
client,
mojo::PendingReceiver<
customize_color_scheme_mode::mojom::CustomizeColorSchemeModeHandler>
handler) { … }
void CustomizeChromeUI::CreateThemeColorPickerHandler(
mojo::PendingReceiver<theme_color_picker::mojom::ThemeColorPickerHandler>
handler,
mojo::PendingRemote<theme_color_picker::mojom::ThemeColorPickerClient>
client) { … }
void CustomizeChromeUI::CreateWallpaperSearchHandler(
mojo::PendingRemote<
side_panel::customize_chrome::mojom::WallpaperSearchClient> client,
mojo::PendingReceiver<
side_panel::customize_chrome::mojom::WallpaperSearchHandler> handler) { … }
void CustomizeChromeUI::CreateCustomizeToolbarHandler(
mojo::PendingRemote<
side_panel::customize_chrome::mojom::CustomizeToolbarClient> client,
mojo::PendingReceiver<
side_panel::customize_chrome::mojom::CustomizeToolbarHandler> handler) { … }