#ifndef IOS_WEB_PUBLIC_WEBUI_WEB_UI_IOS_DATA_SOURCE_H_
#define IOS_WEB_PUBLIC_WEBUI_WEB_UI_IOS_DATA_SOURCE_H_
#include <string>
#include <string_view>
#include "base/containers/span.h"
#include "base/supports_user_data.h"
#include "base/values.h"
namespace webui {
struct LocalizedString;
struct ResourcePath;
}
namespace web {
class BrowserState;
class WebUIIOSDataSource : public base::SupportsUserData {
public:
~WebUIIOSDataSource() override {}
static WebUIIOSDataSource* Create(std::string_view source_name);
static void Add(BrowserState* browser_state, WebUIIOSDataSource* source);
virtual void AddString(const std::string& name,
const std::u16string& value) = 0;
virtual void AddString(const std::string& name, const std::string& value) = 0;
virtual void AddLocalizedString(const std::string& name, int ids) = 0;
virtual void AddLocalizedStrings(
const base::Value::Dict& localized_strings) = 0;
virtual void AddLocalizedStrings(
base::span<const webui::LocalizedString> strings) = 0;
virtual void AddBoolean(const std::string& name, bool value) = 0;
virtual void UseStringsJs() = 0;
virtual void EnableReplaceI18nInJS() = 0;
virtual void AddResourcePath(const std::string& path, int resource_id) = 0;
virtual void AddResourcePaths(
base::span<const webui::ResourcePath> paths) = 0;
virtual void SetDefaultResource(int resource_id) = 0;
virtual void DisableDenyXFrameOptions() = 0;
};
}
#endif