blob: 22aa8de93b5e78b39e294ec00b06fc9e3595b12c [file]
// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/browser_window_theme_observer.h"
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/themes/theme_service_factory.h"
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
DEFINE_USER_DATA(BrowserWindowThemeObserver);
BrowserWindowThemeObserver::BrowserWindowThemeObserver(
BrowserWindowInterface* browser)
: scoped_unowned_user_data_(browser->GetUnownedUserDataHost(), *this) {
theme_service_observation_.Observe(
ThemeServiceFactory::GetForProfile(browser->GetProfile()));
}
BrowserWindowThemeObserver::~BrowserWindowThemeObserver() = default;
// static
BrowserWindowThemeObserver* BrowserWindowThemeObserver::From(
BrowserWindowInterface* browser) {
return Get(browser->GetUnownedUserDataHost());
}
base::CallbackListSubscription
BrowserWindowThemeObserver::RegisterThemeChangedCallback(
ThemeChangedCallback callback) {
return theme_changed_callbacks_.Add(std::move(callback));
}
void BrowserWindowThemeObserver::NotifyThemeChanged(
BrowserThemeChangeType type) {
theme_changed_callbacks_.Notify(type);
}
void BrowserWindowThemeObserver::OnThemeChanged() {
theme_changed_callbacks_.Notify(BrowserThemeChangeType::kBrowserTheme);
}