#include "content/browser/webui/web_ui_data_source_impl.h"
#include <stddef.h>
#include <stdint.h>
#include <memory>
#include <string>
#include <string_view>
#include <utility>
#include <vector>
#include "base/check.h"
#include "base/check_op.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/ref_counted_memory.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/thread_pool.h"
#include "base/trace_event/trace_event.h"
#include "base/values.h"
#include "content/grit/content_resources.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/common/content_client.h"
#include "content/public/common/url_constants.h"
#include "services/network/public/mojom/content_security_policy.mojom.h"
#include "ui/base/template_expressions.h"
#include "ui/base/webui/jstemplate_builder.h"
#include "ui/base/webui/resource_path.h"
#include "ui/base/webui/web_ui_util.h"
namespace content {
WebUIDataSource* WebUIDataSource::CreateAndAdd(BrowserContext* browser_context,
const std::string& source_name) { … }
void WebUIDataSource::Update(BrowserContext* browser_context,
const std::string& source_name,
const base::Value::Dict& update) { … }
namespace {
void GetDataResourceBytesOnWorkerThread(
int resource_id,
URLDataSource::GotDataCallback callback) { … }
const int kNonExistentResource = …;
}
class WebUIDataSourceImpl::InternalDataSource : public URLDataSource { … };
WebUIDataSourceImpl::WebUIDataSourceImpl(const std::string& source_name)
: … { … }
WebUIDataSourceImpl::~WebUIDataSourceImpl() = default;
void WebUIDataSourceImpl::AddString(std::string_view name,
std::u16string_view value) { … }
void WebUIDataSourceImpl::AddString(std::string_view name,
std::string_view value) { … }
void WebUIDataSourceImpl::AddLocalizedString(std::string_view name, int ids) { … }
void WebUIDataSourceImpl::AddLocalizedStrings(
base::span<const webui::LocalizedString> strings) { … }
void WebUIDataSourceImpl::AddLocalizedStrings(
const base::Value::Dict& localized_strings) { … }
void WebUIDataSourceImpl::AddBoolean(std::string_view name, bool value) { … }
void WebUIDataSourceImpl::AddInteger(std::string_view name, int32_t value) { … }
void WebUIDataSourceImpl::AddDouble(std::string_view name, double value) { … }
void WebUIDataSourceImpl::UseStringsJs() { … }
void WebUIDataSourceImpl::AddResourcePath(std::string_view path,
int resource_id) { … }
void WebUIDataSourceImpl::AddResourcePaths(
base::span<const webui::ResourcePath> paths) { … }
void WebUIDataSourceImpl::SetDefaultResource(int resource_id) { … }
void WebUIDataSourceImpl::SetRequestFilter(
const ShouldHandleRequestCallback& should_handle_request_callback,
const HandleRequestCallback& handle_request_callback) { … }
bool WebUIDataSourceImpl::IsWebUIDataSourceImpl() const { … }
void WebUIDataSourceImpl::OverrideContentSecurityPolicy(
network::mojom::CSPDirectiveName directive,
const std::string& value) { … }
void WebUIDataSourceImpl::OverrideCrossOriginOpenerPolicy(
const std::string& value) { … }
void WebUIDataSourceImpl::OverrideCrossOriginEmbedderPolicy(
const std::string& value) { … }
void WebUIDataSourceImpl::OverrideCrossOriginResourcePolicy(
const std::string& value) { … }
void WebUIDataSourceImpl::DisableTrustedTypesCSP() { … }
void WebUIDataSourceImpl::AddFrameAncestor(const GURL& frame_ancestor) { … }
void WebUIDataSourceImpl::DisableDenyXFrameOptions() { … }
void WebUIDataSourceImpl::EnableReplaceI18nInJS() { … }
void WebUIDataSourceImpl::EnsureLoadTimeDataDefaultsAdded() { … }
std::string WebUIDataSourceImpl::GetSource() { … }
void WebUIDataSourceImpl::SetSupportedScheme(std::string_view scheme) { … }
std::string WebUIDataSourceImpl::GetMimeType(const GURL& url) const { … }
void WebUIDataSourceImpl::StartDataRequest(
const GURL& url,
const WebContents::Getter& wc_getter,
URLDataSource::GotDataCallback callback) { … }
void WebUIDataSourceImpl::SendLocalizedStringsAsJSON(
URLDataSource::GotDataCallback callback,
bool from_js_module) { … }
const base::Value::Dict* WebUIDataSourceImpl::GetLocalizedStrings() const { … }
bool WebUIDataSourceImpl::ShouldReplaceI18nInJS() const { … }
int WebUIDataSourceImpl::URLToIdrOrDefault(const GURL& url) const { … }
}