chromium/chrome/browser/policy/messaging_layer/storage_selector/storage_selector.h

// 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_POLICY_MESSAGING_LAYER_STORAGE_SELECTOR_STORAGE_SELECTOR_H_
#define CHROME_BROWSER_POLICY_MESSAGING_LAYER_STORAGE_SELECTOR_STORAGE_SELECTOR_H_

#include "base/memory/scoped_refptr.h"
#include "build/build_config.h"
#include "components/reporting/storage/storage_module_interface.h"
#include "components/reporting/util/statusor.h"

#if !BUILDFLAG(IS_CHROMEOS)
#include <string_view>
#include <utility>

#include "base/functional/callback.h"
#include "chrome/browser/policy/messaging_layer/util/upload_declarations.h"
#include "components/reporting/storage/storage_uploader_interface.h"  // nogncheck
#endif  // !BUILDFLAG(IS_CHROMEOS)

namespace base {
class FilePath;
}

namespace reporting {

// This static class facilitates `ReportingClient` ability to select underlying
// storage for encrypted reporting pipeline report client.  It is built into
// Chrome and configured differently depending on whether Chrome is intended for
// ChromeOS/LaCros or not and whether it is Ash Chrome: it can store event
// locally or in Missive Daemon. It can also be built into other daemons; in
// that case it always connects to Missive Daemon.
// This class is never instantiated; it serves as a front for the client
// configuration settings according to the build.
class StorageSelector {};
}  // namespace reporting

#endif  // CHROME_BROWSER_POLICY_MESSAGING_LAYER_STORAGE_SELECTOR_STORAGE_SELECTOR_H_