blob: 55cb7af330adec102285434c76149a0966797146 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_SAFE_BROWSING_GENERATED_SAFE_BROWSING_PREF_H_
#define CHROME_BROWSER_SAFE_BROWSING_GENERATED_SAFE_BROWSING_PREF_H_
#include "chrome/browser/extensions/api/settings_private/generated_pref.h"
#include "chrome/browser/profiles/profile.h"
#include "components/prefs/pref_change_registrar.h"
namespace safe_browsing {
extern const char kGeneratedSafeBrowsingPref[];
// Must be kept in sync with the SafeBrowsing enum located in
// chrome/browser/resources/settings/privacy_page/security_page.js.
enum class SafeBrowsingSetting {
ENHANCED,
STANDARD,
DISABLED,
};
// A generated preference which represents the effective Safe Browsing setting
// state (including non-user management) based on the underlying Safe Browsing
// enhanced, enabled and reporting preferences. This preference allows the
// direct use of WebUI controls without exposing any logic responsible for
// coalescing the underlying Safe Browsing prefs to front-end code.
class GeneratedSafeBrowsingPref
: public extensions::settings_private::GeneratedPref {
public:
explicit GeneratedSafeBrowsingPref(Profile* profile);
// Generated Preference Interface.
extensions::settings_private::SetPrefResult SetPref(
const base::Value* value) override;
std::unique_ptr<extensions::api::settings_private::PrefObject> GetPrefObject()
const override;
// Fired when underlying Safe Browsing preferences are changed.
void OnSafeBrowsingPreferencesChanged();
private:
// Applies the effective management state of Safe Browsing for |profile| to
// |pref_object|.
static void ApplySafeBrowsingManagementState(
const Profile* profile,
extensions::api::settings_private::PrefObject* pref_object);
// Weak reference to the profile this preference is generated for.
Profile* const profile_;
PrefChangeRegistrar user_prefs_registrar_;
};
} // namespace safe_browsing
#endif // CHROME_BROWSER_SAFE_BROWSING_GENERATED_SAFE_BROWSING_PREF_H_