#ifndef CHROME_BROWSER_BROWSER_SWITCHER_BROWSER_SWITCHER_SERVICE_WIN_H_
#define CHROME_BROWSER_BROWSER_SWITCHER_BROWSER_SWITCHER_SERVICE_WIN_H_
#include <memory>
#include <string>
#include "base/files/file_path.h"
#include "base/task/sequenced_task_runner.h"
#include "chrome/browser/browser_switcher/browser_switcher_service.h"
namespace browser_switcher {
class BrowserSwitcherServiceWin : public BrowserSwitcherService {
public:
BrowserSwitcherServiceWin() = delete;
explicit BrowserSwitcherServiceWin(
Profile* profile,
base::FilePath cache_dir_for_testing = base::FilePath());
BrowserSwitcherServiceWin(const BrowserSwitcherServiceWin&) = delete;
BrowserSwitcherServiceWin& operator=(const BrowserSwitcherServiceWin&) =
delete;
~BrowserSwitcherServiceWin() override;
void Init() override;
static void SetIeemSitelistUrlForTesting(const std::string& url);
std::vector<RulesetSource> GetRulesetSources() override;
void LoadRulesFromPrefs() override;
void OnCacheFileUpdatedForTesting(base::OnceClosure cb);
void OnSitelistCacheFileUpdatedForTesting(base::OnceClosure cb);
protected:
void OnAllRulesetsParsed() override;
void OnBrowserSwitcherPrefsChanged(
BrowserSwitcherPrefs* prefs,
const std::vector<std::string>& changed_prefs) override;
private:
base::FilePath GetCacheDir();
GURL GetIeemSitelistUrl();
void OnIeemSitelistParsed(ParsedXml xml);
void SavePrefsToFile();
void DeletePrefsFile();
void DeleteSitelistCacheFile();
void PrefsFileDeleted(bool success);
void CacheFileUpdated();
void SitelistCacheFileUpdated();
void UpdateAllCacheFiles();
base::FilePath cache_dir_for_testing_;
base::OnceClosure cache_file_updated_callback_for_testing_;
base::OnceClosure sitelist_cache_file_updated_callback_for_testing_;
scoped_refptr<base::SequencedTaskRunner> sequenced_task_runner_;
base::WeakPtrFactory<BrowserSwitcherServiceWin> weak_ptr_factory_{this};
};
}
#endif