1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
// 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.
#ifndef TOOLS_AGGREGATION_SERVICE_AGGREGATION_SERVICE_TOOL_H_
#define TOOLS_AGGREGATION_SERVICE_AGGREGATION_SERVICE_TOOL_H_
#include <memory>
#include <string>
#include <string_view>
#include "base/strings/string_split.h"
#include "base/values.h"
#include "tools/aggregation_service/aggregation_service_tool_network_initializer.h"
#include "url/gurl.h"
namespace base {
class FilePath;
} // namespace base
namespace content {
class TestAggregationService;
} // namespace content
namespace url {
class Origin;
} // namespace url
namespace aggregation_service {
struct UrlKeyFile {
UrlKeyFile(GURL url, std::string key_file);
UrlKeyFile(const UrlKeyFile& other);
UrlKeyFile& operator=(const UrlKeyFile& other);
~UrlKeyFile();
GURL url;
std::string key_file;
};
// This class is a wrapper for aggregation service tool.
class AggregationServiceTool {
public:
AggregationServiceTool();
~AggregationServiceTool();
// Sets whether to disable the AggregatableReport's payload(s) being encrypted
// after serialization.
void SetDisablePayloadEncryption(bool should_disable);
// Sets public keys to storage from the url-filename pair and returns
// whether it's successful.
bool SetPublicKeys(const UrlKeyFile& key_file);
// Construct an aggregatable report from the specified information and returns
// a `base::Value::Dict` for its JSON representation. Empty
// `base::Value::Dict` will be returned in case of error.
base::Value::Dict 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);
// Sends the contents of the aggregatable report to the specified reporting
// url `url` and returns whether it's successful.
bool SendReport(const base::Value& contents, const GURL& url);
// Writes the contents of the aggregatable report to the specified file
// `filename` and returns whether it's successful.
bool WriteReportToFile(const base::Value& contents,
const base::FilePath& filename);
private:
bool SetPublicKeysFromFile(const GURL& url, std::string_view json_file_path);
ToolNetworkInitializer network_initializer_;
std::unique_ptr<content::TestAggregationService> agg_service_;
};
} // namespace aggregation_service
#endif // TOOLS_AGGREGATION_SERVICE_AGGREGATION_SERVICE_TOOL_H_
|