chromium/chrome/browser/policy/policy_value_and_status_aggregator.h

// 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.

#ifndef CHROME_BROWSER_POLICY_POLICY_VALUE_AND_STATUS_AGGREGATOR_H_
#define CHROME_BROWSER_POLICY_POLICY_VALUE_AND_STATUS_AGGREGATOR_H_

#include <memory>
#include <utility>
#include <vector>

#include "base/containers/flat_map.h"
#include "base/memory/raw_ptr.h"
#include "base/observer_list.h"
#include "base/scoped_multi_source_observation.h"
#include "base/values.h"
#include "build/branding_buildflags.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/policy/value_provider/policy_value_provider.h"
#include "components/policy/core/browser/webui/policy_status_provider.h"
#include "extensions/buildflags/buildflags.h"

class Profile;

namespace policy {

extern const char kUserStatusKey[];
#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
extern const char kDeviceStatusKey[];
#endif  // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)

// PolicyValueAndStatusAggregator is a wrapper class that will contain all the
// platform-specific PolicyStatusProviders and PolicyValueProviders. It will
// call GetStatus(), GetValues(), GetNames() on the available providers, merge
// them and return the dictionary that contains all the available information.
class PolicyValueAndStatusAggregator : public PolicyValueProvider::Observer,
                                       public PolicyStatusProvider::Observer {};
}  // namespace policy

#endif  // CHROME_BROWSER_POLICY_POLICY_VALUE_AND_STATUS_AGGREGATOR_H_