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 89 90 91 92 93 94 95 96 97 98 99 100
|
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/performance_manager/public/user_tuning/prefs.h"
#include "components/performance_manager/public/features.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
namespace performance_manager::user_tuning::prefs {
void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(kHighEfficiencyModeEnabled, false);
registry->RegisterIntegerPref(
kHighEfficiencyModeTimeBeforeDiscardInMinutes,
kDefaultHighEfficiencyModeTimeBeforeDiscardInMinutes);
registry->RegisterIntegerPref(
kHighEfficiencyModeState,
static_cast<int>(HighEfficiencyModeState::kDisabled));
registry->RegisterIntegerPref(
kBatterySaverModeState,
static_cast<int>(BatterySaverModeState::kEnabledBelowThreshold));
registry->RegisterTimePref(kLastBatteryUseTimestamp, base::Time());
}
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterListPref(kTabDiscardingExceptions,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterListPref(kManagedTabDiscardingExceptions);
}
HighEfficiencyModeState GetCurrentHighEfficiencyModeState(
PrefService* pref_service) {
int state = pref_service->GetInteger(kHighEfficiencyModeState);
if (state < static_cast<int>(HighEfficiencyModeState::kDisabled) ||
state > static_cast<int>(HighEfficiencyModeState::kEnabledOnTimer)) {
int disabled_state = static_cast<int>(HighEfficiencyModeState::kDisabled);
pref_service->SetInteger(kHighEfficiencyModeState, disabled_state);
state = disabled_state;
}
return static_cast<HighEfficiencyModeState>(state);
}
base::TimeDelta GetCurrentHighEfficiencyModeTimeBeforeDiscard(
PrefService* pref_service) {
int time_before_discard_in_minutes =
pref_service->GetInteger(kHighEfficiencyModeTimeBeforeDiscardInMinutes);
if (time_before_discard_in_minutes < 0) {
pref_service->ClearPref(kHighEfficiencyModeTimeBeforeDiscardInMinutes);
time_before_discard_in_minutes =
pref_service->GetInteger(kHighEfficiencyModeTimeBeforeDiscardInMinutes);
}
return base::Minutes(time_before_discard_in_minutes);
}
BatterySaverModeState GetCurrentBatterySaverModeState(
PrefService* pref_service) {
int state = pref_service->GetInteger(kBatterySaverModeState);
if (state < static_cast<int>(BatterySaverModeState::kDisabled) ||
state > static_cast<int>(BatterySaverModeState::kEnabled)) {
int disabled_state = static_cast<int>(BatterySaverModeState::kDisabled);
pref_service->SetInteger(kBatterySaverModeState, disabled_state);
state = disabled_state;
}
return static_cast<BatterySaverModeState>(state);
}
void MigrateHighEfficiencyModePref(PrefService* pref_service) {
const PrefService::Preference* state_pref =
pref_service->FindPreference(kHighEfficiencyModeState);
if (!state_pref->IsDefaultValue()) {
// The user has changed the new pref, no migration needed. Clear the old
// pref because it won't be used anymore.
pref_service->ClearPref(kHighEfficiencyModeEnabled);
return;
}
const PrefService::Preference* bool_pref =
pref_service->FindPreference(kHighEfficiencyModeEnabled);
bool enabled = bool_pref->GetValue()->GetBool();
int equivalent_int_pref =
enabled ? static_cast<int>(HighEfficiencyModeState::kEnabledOnTimer)
: static_cast<int>(HighEfficiencyModeState::kDisabled);
if (!bool_pref->IsDefaultValue()) {
// The user has changed the old pref, but the new pref is still set to the
// default value. This means the old pref's state needs to be migrated into
// the new pref.
pref_service->SetInteger(kHighEfficiencyModeState, equivalent_int_pref);
// Clear the old pref because it won't be used anymore.
pref_service->ClearPref(kHighEfficiencyModeEnabled);
}
}
} // namespace performance_manager::user_tuning::prefs
|