维生素b什么时候吃| 血液病是什么病| 手热脚热是什么原因| 什么啤酒度数高| 膳食纤维是什么| 胃囊肿是什么病严重吗| 班别是什么意思| 夏至什么意思| 白带是什么意思| 孩子爱啃指甲是什么原因| 眼睛干涩用什么药水| 天妇罗是什么| ms什么意思| 什么是代谢| 脖子长疣是什么原因| 割礼是什么| 啊囊死给什么意思| 亮丽是什么意思| 岐黄是什么意思| 训练有素是什么意思| 消防队属于什么单位| 去香港澳门需要什么证件| moo是什么意思| 什么是跑马| 缺黄体酮会有什么症状| 镜检白细胞是什么意思| 拉肚子看什么科| 梦见来例假是什么预兆| 一个黑一个今念什么| 暗物质和暗能量是什么| 11月27是什么星座| 糟卤可以做什么菜| 身上长小红点是什么原因| 胡萝卜炒什么| 可是什么意思| 头什么脚什么| 盐是什么味道| 抽烟打嗝是什么情况| 物美价廉是什么意思| 黑眼圈严重是什么原因| 杏仁有什么营养| 菊花茶泡了为什么会变绿| 手足口病是什么症状| 锁骨上的痣代表什么| 什么叫三本| 恨铁不成钢什么意思| 白带发黄用什么药| 乙肝前s1抗原阳性是什么意思| 牡丹什么时候开花| 切什么意思| 高岗为什么自杀| 铁观音适合什么季节喝| 孙悟空是个什么样的人| 反复发烧吃什么药| 腰椎骨质增生是什么意思| 扎是什么意思| 浮萍是什么| 孕早期不能吃什么食物| 真言是什么意思| 宫缩是什么感觉| 绘本是什么意思| 脚心痒是什么预兆| 转氨酶高是怎么回事有什么危害| 调和油是什么油| 世界上最难的字是什么字| 梅毒是什么| 胃字出头念什么| 说话不清楚是什么原因导致的| 睡美人最怕什么| 吃什么可以让月经快点来| dmp是什么意思| 龟头有白色污垢是什么| 欧诗漫适合什么年龄| 父亲节什么时间| 71年出生属什么生肖| 手足口病咳嗽吃什么药| 车票改签是什么意思| 河南话信球是什么意思| 封神榜讲的是什么故事| 十年大运是什么意思| 一般什么原因做宫腔镜| 心梗是什么症状| 分家是什么意思| 什么是ps| 六月五号是什么星座| 中医说的湿气重是什么意思| 司空见惯是什么意思| 女生的逼长什么样| 介入医学科是什么科室| 什么什么不什么| dna里面有什么| 时代是什么意思| 物质是什么| 欲语还休是什么意思| 用热毛巾敷眼睛有什么好处| 小便发黄是什么原因| 玫瑰花泡水有什么功效| 吃了鸡蛋不能吃什么| 量贩式ktv是什么意思| 刺史是什么官职| 三碘甲状腺原氨酸高是什么意思| 什么样的礼物| hbeab阳性是什么意思| 下体瘙痒是什么原因| 梦见吃油饼是什么意思| 什么是对的人| 松绿色是什么颜色| 马卡龙为什么这么贵| 玛丽珍鞋是什么意思| 毛新宇什么级别| 逍遥丸有什么作用| 吃什么水果可以降火| 健忘是什么意思| 为什么感冒会流眼泪| yonex是什么品牌| 阿僧只劫是什么意思| 沉香有什么作用| 鱼腥草泡水喝有什么功效| handmade是什么牌子| 睡莲和碗莲有什么区别| 苏州有什么好玩的| 胚胎生化是什么意思| a02是什么牌子| 土加一笔是什么字| 什么是盗汗| 螃蟹的血是什么颜色的| 刚生完宝宝的产妇吃什么好| 舌苔厚白应该吃什么| 自主意识是什么意思| 引力的本质是什么| 大熊猫是什么科| 一个米一个参念什么| 鼻窦炎有什么症状表现| 爱恨就在一瞬间是什么歌| 超市属于什么行业| 山楂泡水喝有什么功效| 环比是什么意思| 囊肿挂什么科| 什么叫专科| 什么花晚上开| 夜长梦多是什么意思| 亚玛病是什么病| 三点水加一个心读什么| 小青龙是什么龙虾| 加百列是什么天使| 敛肺是什么意思| 蒸蒸日上什么意思| 马克华菲属于什么档次| 去鱼腥味最好的方法是什么| 高干文是什么意思| 马兰头是什么菜| 高锰酸钾用什么能洗掉| 虎皮羊质是指什么生肖| 刀伤用什么药愈合最快| 混纺棉是什么面料| 什么海没有鱼| 儿童咳嗽吃什么药| 月经提前了10天是什么原因| 摩羯座喜欢什么样的女生| ins是什么| 属猴的幸运色是什么颜色| 女人喝咖啡有什么好处| 嘴下面起痘是什么原因| 放生乌龟有什么寓意| 流清鼻涕吃什么药好| 辛辣的辛指什么| 张飞穿针歇后语下一句是什么| 关节炎挂什么科| 月亮是什么生肖| suv什么意思| 71年什么时候退休| 什么是小暑| 疏是什么意思| 吃什么能立马催月经| 骨皮质断裂是什么意思| 家里停电打什么电话| 人工降雨的原理是什么| 自采暖是什么意思| 荞麦长什么样子| 什么花喜欢磷酸二氢钾| 蓝莓不能和什么一起吃| 你正在干什么用英语怎么说| 四象是什么| 明天什么日子| 左膝关节退行性变是什么意思| 人参有什么作用| 乳腺增生结节吃什么药| 2023年属兔的是什么命| 血晕症是什么病| 百合和什么一起煮可以治失眠| 为什么牛肝便宜没人吃| paco2是什么意思| 手指甲上的月牙代表什么| 喜欢花的女人是什么性格| supreme是什么牌子| 男人嘴唇薄代表什么| 商标r是什么意思| 下雨天适合穿什么衣服| 牙龈发黑是什么原因| 打嗝和嗳气有什么区别| 蛋白高是什么原因| 日丙念什么| 二级教授是什么意思| 松针泡水喝有什么功效| 头晕目赤是什么意思| 滋阴是什么意思| 高血压是什么引起的| 本帮菜是什么意思| 粘液丝是什么| 珑骧包属于什么档次| 反清复明是什么意思| 感冒为什么会打喷嚏| 淋巴细胞绝对值偏低是什么意思| 好文采是什么意思| 尿检隐血弱阳性是什么意思| 太妹是什么意思| 呵呵代表什么意思| 什锦是什么水果| 吃什么能让月经快点来| 泔水是什么意思| 小龙虾什么季节吃最好| 阴茎痒是什么原因| 打招呼是什么意思| 空腹喝牛奶为什么会拉肚子| 朱砂有什么作用与功效| 刺梨是什么| bmi是什么| 看灰指甲去医院挂什么科| 血压高吃什么药最好| 禾加比读什么| 钙片吃多了有什么副作用| 小孩为什么吃果糖二磷酸钠| 为什么睾丸一边大一边小| 梅开二度是什么意思| 俊俏是什么意思| 定期是什么意思| 过敏性咳嗽用什么药| 克隆是什么意思| 为什么人一瘦就会漂亮| 螃蟹的血是什么颜色的| electrolux是什么牌子| 高血压挂什么科| 钓鲤鱼用什么饵料| 红细胞减少是什么原因| 佛陀是什么意思| 干邑是什么意思| 宝宝不喝奶是什么原因| 左腿疼是什么原因| 六月初九是什么日子| 什么一惊| 肌肉萎缩看什么科| 外强中干什么意思| 风寒感冒和风热感冒有什么区别| 猪肚是什么器官| 小米长什么样| 补办医保卡去什么地方| 白天咳嗽晚上不咳嗽是什么原因| 日久见人心是什么意思| 白茶为什么叫白茶| 阴阳双补用什么药最佳| 血液病有什么症状| 小跟班是什么意思| 道谢是什么意思| 5月10日什么星座| 百度
blob: 2bd15b3cb0438e059875602aae1a3ca9073283c2 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "tools/aggregation_service/aggregation_service_tool.h"
#include <functional>
#include <optional>
#include <string>
#include <string_view>
#include <utility>
#include "base/check.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/functional/bind.h"
#include "base/functional/callback_forward.h"
#include "base/json/json_writer.h"
#include "base/logging.h"
#include "base/run_loop.h"
#include "base/strings/abseil_string_number_conversions.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/default_clock.h"
#include "base/values.h"
#include "build/build_config.h"
#include "content/public/test/test_aggregation_service.h"
#include "services/network/public/cpp/is_potentially_trustworthy.h"
#include "third_party/abseil-cpp/absl/numeric/int128.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace aggregation_service {
namespace {
std::optional<content::TestAggregationService::Operation> ConvertToOperation(
std::string_view operation_string) {
if (operation_string == "histogram") {
return content::TestAggregationService::Operation::kHistogram;
}
return std::nullopt;
}
} // namespace
UrlKeyFile::UrlKeyFile(GURL url, std::string key_file)
: url(std::move(url)), key_file(std::move(key_file)) {}
UrlKeyFile::UrlKeyFile(const UrlKeyFile& other) = default;
UrlKeyFile& UrlKeyFile::operator=(const UrlKeyFile& other) = default;
UrlKeyFile::~UrlKeyFile() = default;
AggregationServiceTool::AggregationServiceTool()
: agg_service_(content::TestAggregationService::Create(
base::DefaultClock::GetInstance(),
network_initializer_.shared_url_loader_factory())) {}
AggregationServiceTool::~AggregationServiceTool() = default;
void AggregationServiceTool::SetDisablePayloadEncryption(bool should_disable) {
agg_service_->SetDisablePayloadEncryption(should_disable);
}
bool AggregationServiceTool::SetPublicKeys(const UrlKeyFile& key_file) {
if (!network::IsUrlPotentiallyTrustworthy(key_file.url)) {
LOG(ERROR) << "Invalid processing url: " << key_file.url;
return false;
}
if (!SetPublicKeysFromFile(key_file.url, key_file.key_file)) {
return false;
}
return true;
}
bool AggregationServiceTool::SetPublicKeysFromFile(
const GURL& url,
std::string_view json_file_path) {
#if BUILDFLAG(IS_WIN)
base::FilePath json_file(base::UTF8ToWide(json_file_path));
#else
base::FilePath json_file(json_file_path);
#endif
bool succeeded = false;
base::RunLoop run_loop;
agg_service_->SetPublicKeys(
url, json_file,
base::BindOnce(
[](base::OnceClosure quit, bool& succeeded_out, bool succeeded_in) {
succeeded_out = succeeded_in;
std::move(quit).Run();
},
run_loop.QuitClosure(), std::ref(succeeded)));
run_loop.Run();
return succeeded;
}
base::Value::Dict AggregationServiceTool::AssembleReport(
std::string operation_str,
std::string bucket_str,
std::string value_str,
url::Origin reporting_origin,
GURL processing_url,
bool is_debug_mode_enabled,
base::Value::Dict additional_fields,
std::string api_version,
std::string api_identifier) {
base::Value::Dict result;
std::optional<content::TestAggregationService::Operation> operation =
ConvertToOperation(operation_str);
if (!operation.has_value()) {
LOG(ERROR) << "Invalid operation: " << operation_str;
return result;
}
absl::uint128 bucket;
if (!base::StringToUint128(bucket_str, &bucket)) {
LOG(ERROR) << "Invalid bucket: " << bucket_str;
return result;
}
int value;
if (!base::StringToInt(value_str, &value) || value < 0) {
LOG(ERROR) << "Invalid value: " << value_str;
return result;
}
if (reporting_origin.opaque()) {
LOG(ERROR) << "Invalid reporting origin: " << reporting_origin;
return result;
}
content::TestAggregationService::AssembleRequest request(
operation.value(), bucket, value, std::move(reporting_origin),
std::move(processing_url), is_debug_mode_enabled,
std::move(additional_fields), std::move(api_version),
std::move(api_identifier));
base::RunLoop run_loop;
agg_service_->AssembleReport(
std::move(request),
base::BindOnce(
[](base::OnceClosure quit, base::Value::Dict& result_out,
base::Value::Dict result_in) {
result_out = std::move(result_in);
std::move(quit).Run();
},
run_loop.QuitClosure(), std::ref(result)));
run_loop.Run();
return result;
}
bool AggregationServiceTool::SendReport(const base::Value& contents,
const GURL& url) {
if (!url.is_valid()) {
LOG(ERROR) << "Invalid output url: " << url;
return false;
}
bool succeeded = false;
base::RunLoop run_loop;
agg_service_->SendReport(
url, contents,
base::BindOnce(
[](base::OnceClosure quit, bool& succeeded_out, bool succeeded_in) {
succeeded_out = succeeded_in;
std::move(quit).Run();
},
run_loop.QuitClosure(), std::ref(succeeded)));
run_loop.Run();
return succeeded;
}
bool AggregationServiceTool::WriteReportToFile(const base::Value& contents,
const base::FilePath& filename) {
if (filename.empty()) {
LOG(ERROR) << "Invalid output file: " << filename;
return false;
}
std::optional<std::string> contents_json = base::WriteJson(contents);
CHECK(contents_json);
return base::WriteFile(filename, *contents_json);
}
} // namespace aggregation_service
宜夫痣是什么意思 rangerover是什么车 横纹肌溶解什么意思 爬山膝盖疼是什么原因 噤若寒蝉是什么意思
山昆读什么 感冒喉咙痒吃什么药 侯是什么意思 dr是什么 什么的事物
梦到鸡是什么意思 胆囊炎不能吃什么 元神是什么意思 锶是什么意思 阳卦代表什么意思
白话文是什么意思 七月九号是什么日子 牛奶能做什么美食 早上喝蜂蜜水有什么好处 4月30号是什么星座
露从今夜白下一句是什么hcv8jop4ns3r.cn 男人肾虚吃什么补得快hcv8jop4ns4r.cn 便秘吃什么药能根治hcv7jop5ns0r.cn 无痛人流后吃什么对身体恢复比较好hcv8jop8ns4r.cn 唇炎是什么原因引起的hcv7jop9ns8r.cn
茯苓是什么味道hcv8jop6ns7r.cn 生男生女取决于什么hcv8jop2ns0r.cn rococo是什么牌子hcv9jop5ns8r.cn 心脏彩超ef是什么意思hcv9jop1ns1r.cn 女人大把掉头发是什么原因hcv9jop2ns2r.cn
右膝关节退行性变是什么意思hcv9jop4ns7r.cn 西瓜虫吃什么hcv9jop2ns1r.cn 条件兵是什么意思adwl56.com 11月30号是什么星座hcv7jop5ns6r.cn cnv是什么意思aiwuzhiyu.com
什么叫方差hcv7jop6ns0r.cn 感冒吃什么药hcv8jop5ns3r.cn 家庭主妇是什么意思hcv8jop0ns0r.cn npv是什么hcv9jop0ns1r.cn 摆地摊卖什么最赚钱而且很受欢迎hcv9jop4ns7r.cn
百度