blob: 74b09a3469f75cf439b361462c5e17b8d01a50e3 [file] [log] [blame]
// Copyright 2021 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.
#include "chrome/browser/ash/settings/hardware_data_usage_controller.h"
#include "ash/components/settings/cros_settings_names.h"
#include "base/bind.h"
#include "chrome/browser/ash/settings/cros_settings.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
namespace {
constexpr char kPendingPref[] = "pending.cros.reven.enable_hw_data_usage";
} // namespace
namespace ash {
static HWDataUsageController* g_hw_data_usage_controller = nullptr;
// static
void HWDataUsageController::Initialize(PrefService* local_state) {
CHECK(!g_hw_data_usage_controller);
g_hw_data_usage_controller = new HWDataUsageController(local_state);
}
// static
bool HWDataUsageController::IsInitialized() {
return g_hw_data_usage_controller;
}
// static
void HWDataUsageController::Shutdown() {
DCHECK(g_hw_data_usage_controller);
delete g_hw_data_usage_controller;
g_hw_data_usage_controller = nullptr;
}
// static
HWDataUsageController* HWDataUsageController::Get() {
CHECK(g_hw_data_usage_controller);
return g_hw_data_usage_controller;
}
// static
void HWDataUsageController::RegisterLocalStatePrefs(
PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(kPendingPref, false,
PrefRegistry::NO_REGISTRATION_FLAGS);
}
HWDataUsageController::HWDataUsageController(PrefService* local_state)
: OwnerPendingSettingController(kRevenEnableDeviceHWDataUsage,
kPendingPref,
local_state) {
setting_subscription_ = CrosSettings::Get()->AddSettingsObserver(
kRevenEnableDeviceHWDataUsage,
base::BindRepeating(&HWDataUsageController::NotifyObservers,
this->as_weak_ptr()));
}
HWDataUsageController::~HWDataUsageController() {
owner_settings_service_observation_.Reset();
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
}
} // namespace ash