#ifndef CHROME_BROWSER_DEFAULT_BROWSER_DEFAULT_BROWSER_MONITOR_H_
#define CHROME_BROWSER_DEFAULT_BROWSER_DEFAULT_BROWSER_MONITOR_H_
#include <memory>
#include "base/callback_list.h"
#include "base/functional/callback_forward.h"
#include "base/memory/scoped_refptr.h"
#include "build/build_config.h"
class RegistryWatcher;
namespace default_browser {
class DefaultBrowserMonitor {
public:
DefaultBrowserMonitor();
~DefaultBrowserMonitor();
DefaultBrowserMonitor(const DefaultBrowserMonitor&) = delete;
const DefaultBrowserMonitor& operator=(const DefaultBrowserMonitor&) = delete;
void StartMonitor();
base::CallbackListSubscription RegisterDefaultBrowserChanged(
base::RepeatingClosure callback);
protected:
void NotifyObservers();
private:
#if BUILDFLAG(IS_WIN)
void OnDefaultBrowserChangedWin();
std::unique_ptr<RegistryWatcher> registry_watcher_;
#endif
base::RepeatingClosureList callback_list_;
SEQUENCE_CHECKER(sequence_checker_);
base::WeakPtrFactory<DefaultBrowserMonitor> weak_ptr_factory_{this};
};
}
#endif