blob: 1c691a5608092168aa122730ea2db2572626142e [file]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/devtools/devtools_dispatch_http_request_params.h"
DevToolsDispatchHttpRequestParams::DevToolsDispatchHttpRequestParams() =
default;
DevToolsDispatchHttpRequestParams::~DevToolsDispatchHttpRequestParams() =
default;
DevToolsDispatchHttpRequestParams::DevToolsDispatchHttpRequestParams(
const DevToolsDispatchHttpRequestParams&) = default;
DevToolsDispatchHttpRequestParams& DevToolsDispatchHttpRequestParams::operator=(
const DevToolsDispatchHttpRequestParams&) = default;
DevToolsDispatchHttpRequestParams::DevToolsDispatchHttpRequestParams(
DevToolsDispatchHttpRequestParams&&) = default;
DevToolsDispatchHttpRequestParams& DevToolsDispatchHttpRequestParams::operator=(
DevToolsDispatchHttpRequestParams&&) = default;
// static
std::optional<DevToolsDispatchHttpRequestParams>
DevToolsDispatchHttpRequestParams::FromDict(const base::DictValue& dict) {
const std::string* service = dict.FindString("service");
if (!service) {
return std::nullopt;
}
const std::string* path = dict.FindString("path");
if (!path) {
return std::nullopt;
}
const std::string* method = dict.FindString("method");
if (!method) {
return std::nullopt;
}
DevToolsDispatchHttpRequestParams params;
params.service = *service;
params.path = *path;
params.method = *method;
const std::string* body = dict.FindString("body");
if (body) {
params.body = *body;
}
const base::DictValue* query_params_dict = dict.FindDict("queryParams");
if (query_params_dict) {
for (auto [key, value] : *query_params_dict) {
if (const std::string* str = value.GetIfString()) {
params.query_params[key].push_back(*str);
} else if (const base::ListValue* list = value.GetIfList()) {
for (const auto& item : *list) {
if (const std::string* item_str = item.GetIfString()) {
params.query_params[key].push_back(*item_str);
}
}
}
}
}
params.stream_id = dict.FindInt("streamId");
return params;
}