#ifndef EXTENSIONS_BROWSER_CONTENT_VERIFIER_CONTENT_VERIFIER_IO_DATA_H_
#define EXTENSIONS_BROWSER_CONTENT_VERIFIER_CONTENT_VERIFIER_IO_DATA_H_
#include <map>
#include <memory>
#include <optional>
#include <set>
#include <string>
#include "base/version.h"
#include "extensions/browser/content_verifier/content_verifier_delegate.h"
#include "extensions/browser/content_verifier/content_verifier_utils.h"
#include "extensions/common/extension_id.h"
namespace extensions {
using CanonicalRelativePath = content_verifier_utils::CanonicalRelativePath;
class ContentVerifierIOData {
public:
struct ExtensionData {
std::set<CanonicalRelativePath> canonical_browser_image_paths;
std::optional<CanonicalRelativePath> canonical_background_page_path;
std::set<CanonicalRelativePath> canonical_background_scripts_paths;
std::optional<CanonicalRelativePath> canonical_service_worker_script_path;
std::set<CanonicalRelativePath> canonical_content_scripts_paths;
std::set<CanonicalRelativePath> canonical_indexed_ruleset_paths;
base::Version version;
int manifest_version = 0;
ContentVerifierDelegate::VerifierSourceType source_type;
ExtensionData();
ExtensionData(ExtensionData&&);
ExtensionData& operator=(ExtensionData&&);
ExtensionData(const ExtensionData&) = delete;
ExtensionData& operator=(const ExtensionData&) = delete;
~ExtensionData();
};
ContentVerifierIOData();
ContentVerifierIOData(const ContentVerifierIOData&) = delete;
ContentVerifierIOData& operator=(const ContentVerifierIOData&) = delete;
~ContentVerifierIOData();
void AddData(const ExtensionId& extension_id, ExtensionData data);
void RemoveData(const ExtensionId& extension_id);
void Clear();
const ExtensionData* GetData(const ExtensionId& extension_id);
private:
std::map<ExtensionId, ExtensionData> data_map_;
};
}
#endif