1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
// Copyright 2024 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/net/default_dns_over_https_config_source.h"
#include <string>
#include "build/build_config.h"
#include "chrome/browser/net/secure_dns_config.h"
#include "chrome/common/pref_names.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
DefaultDnsOverHttpsConfigSource::DefaultDnsOverHttpsConfigSource(
PrefService* local_state,
bool set_up_pref_defaults) {
pref_change_registrar_.Init(local_state);
// Update the DoH default preferences based on the corresponding
// features before registering change callbacks for these preferences.
// Changing prefs or defaults after registering change callbacks could
// result in reentrancy and mess up registration between this code and
// NetworkService creation.
if (set_up_pref_defaults) {
local_state->SetDefaultPrefValue(prefs::kDnsOverHttpsMode,
base::Value(SecureDnsConfig::ModeToString(
net::SecureDnsMode::kAutomatic)));
}
}
DefaultDnsOverHttpsConfigSource::~DefaultDnsOverHttpsConfigSource() = default;
// static
void DefaultDnsOverHttpsConfigSource::RegisterPrefs(
PrefRegistrySimple* registry) {
registry->RegisterStringPref(prefs::kDnsOverHttpsMode, std::string());
registry->RegisterStringPref(prefs::kDnsOverHttpsTemplates, std::string());
#if BUILDFLAG(IS_CHROMEOS)
registry->RegisterStringPref(prefs::kDnsOverHttpsEffectiveTemplatesChromeOS,
std::string());
#endif
}
std::string DefaultDnsOverHttpsConfigSource::GetDnsOverHttpsMode() const {
return pref_change_registrar_.prefs()->GetString(prefs::kDnsOverHttpsMode);
}
std::string DefaultDnsOverHttpsConfigSource::GetDnsOverHttpsTemplates() const {
return pref_change_registrar_.prefs()->GetString(
prefs::kDnsOverHttpsTemplates);
}
bool DefaultDnsOverHttpsConfigSource::IsConfigManaged() const {
return pref_change_registrar_.prefs()
->FindPreference(prefs::kDnsOverHttpsMode)
->IsManaged();
}
void DefaultDnsOverHttpsConfigSource::SetDohChangeCallback(
base::RepeatingClosure callback) {
CHECK(pref_change_registrar_.IsEmpty());
pref_change_registrar_.Add(prefs::kDnsOverHttpsMode, callback);
pref_change_registrar_.Add(prefs::kDnsOverHttpsTemplates, callback);
}
|