chromium/chrome/browser/ui/prefs/pref_watcher.h

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_UI_PREFS_PREF_WATCHER_H_
#define CHROME_BROWSER_UI_PREFS_PREF_WATCHER_H_

#include "base/memory/raw_ptr.h"
#include "base/memory/singleton.h"
#include "base/scoped_observation.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
#include "components/keyed_service/core/keyed_service.h"
#include "components/prefs/pref_change_registrar.h"
#include "components/privacy_sandbox/tracking_protection_settings.h"
#include "components/privacy_sandbox/tracking_protection_settings_observer.h"
#include "mojo/public/cpp/bindings/remote_set.h"
#include "third_party/blink/public/mojom/renderer_preference_watcher.mojom.h"
#include "ui/native_theme/native_theme_observer.h"

class Profile;
class PrefsTabHelper;

// Watches updates in WebKitPreferences and blink::RendererPreferences, and
// notifies tab helpers and registered watchers of those updates.
class PrefWatcher : public KeyedService,
                    public privacy_sandbox::TrackingProtectionSettingsObserver,
                    public ui::NativeThemeObserver {};

class PrefWatcherFactory : public ProfileKeyedServiceFactory {};

#endif  // CHROME_BROWSER_UI_PREFS_PREF_WATCHER_H_