// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ASH_NET_XDR_MANAGER_H_
#define CHROME_BROWSER_ASH_NET_XDR_MANAGER_H_
#include "components/policy/core/common/policy_namespace.h"
#include "components/policy/core/common/policy_service.h"
namespace ash {
// Responds to changes in the DeviceReportXDREvents policy and updates
// the network metadata to determine if connection warning should be shown.
class XdrManager {
public:
explicit XdrManager(policy::PolicyService* policy_service);
XdrManager(const XdrManager&) = delete;
XdrManager& operator=(const XdrManager&) = delete;
~XdrManager();
// Returns whether or not XDR events are being reported.
bool AreXdrPoliciesEnabled();
private:
// Updates the network metadata store value when the XDR policy changes.
void OnXdrPolicyChange(const base::Value* previous,
const base::Value* current);
// Sets the current value of the XDR policy in network metadata store.
void SetNetworkMetadataStoreXdrValue();
std::unique_ptr<policy::PolicyChangeRegistrar> policy_registrar_;
bool report_xdr_events_enabled_ = false;
};
} // namespace ash
#endif // CHROME_BROWSER_ASH_NET_XDR_MANAGER_H_