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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
// Copyright 2017 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/extensions/api/settings_private/generated_pref.h"
#include "base/observer_list.h"
#include "chrome/common/extensions/api/settings_private.h"
#include "components/content_settings/core/common/content_settings.h"
namespace settings_api = extensions::api::settings_private;
namespace extensions {
namespace settings_private {
GeneratedPref::Observer::Observer() = default;
GeneratedPref::Observer::~Observer() = default;
GeneratedPref::GeneratedPref() = default;
GeneratedPref::~GeneratedPref() = default;
void GeneratedPref::AddObserver(Observer* observer) {
observers_.AddObserver(observer);
}
void GeneratedPref::RemoveObserver(Observer* observer) {
observers_.RemoveObserver(observer);
}
void GeneratedPref::NotifyObservers(const std::string& pref_name) {
for (Observer& observer : observers_)
observer.OnGeneratedPrefChanged(pref_name);
}
/* static */
void GeneratedPref::ApplyControlledByFromPref(
api::settings_private::PrefObject* pref_object,
const PrefService::Preference* pref) {
if (pref->IsManaged()) {
pref_object->controlled_by = settings_api::ControlledBy::kDevicePolicy;
return;
}
if (pref->IsExtensionControlled()) {
pref_object->controlled_by = settings_api::ControlledBy::kExtension;
return;
}
if (pref->IsManagedByCustodian()) {
pref_object->controlled_by = settings_api::ControlledBy::kChildRestriction;
return;
}
NOTREACHED();
}
/* static */
void GeneratedPref::ApplyControlledByFromContentSettingSource(
api::settings_private::PrefObject* pref_object,
content_settings::SettingSource setting_source) {
switch (setting_source) {
case content_settings::SettingSource::kPolicy:
pref_object->controlled_by = settings_api::ControlledBy::kDevicePolicy;
break;
case content_settings::SettingSource::kExtension:
pref_object->controlled_by = settings_api::ControlledBy::kExtension;
break;
case content_settings::SettingSource::kSupervised:
pref_object->controlled_by =
settings_api::ControlledBy::kChildRestriction;
break;
default:
NOTREACHED();
}
}
/* static */
void GeneratedPref::AddUserSelectableValue(
settings_api::PrefObject* pref_object,
int value) {
if (!pref_object->user_selectable_values) {
pref_object->user_selectable_values.emplace();
}
pref_object->user_selectable_values->Append(value);
}
} // namespace settings_private
} // namespace extensions
|