#include "components/subresource_filter/tools/filter_tool.h"
#include <algorithm>
#include <istream>
#include <ostream>
#include <string>
#include <string_view>
#include <unordered_map>
#include <utility>
#include <vector>
#include "base/check.h"
#include "base/json/json_reader.h"
#include "base/logging.h"
#include "base/values.h"
#include "components/subresource_filter/core/common/document_subresource_filter.h"
#include "components/subresource_filter/core/common/load_policy.h"
#include "components/subresource_filter/core/mojom/subresource_filter.mojom.h"
#include "components/url_pattern_index/flat/url_pattern_index_generated.h"
#include "components/url_pattern_index/proto/rules.pb.h"
#include "components/url_pattern_index/url_rule_util.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace subresource_filter {
namespace {
url::Origin ParseOrigin(std::string_view arg) { … }
GURL ParseRequestUrl(std::string_view arg) { … }
url_pattern_index::proto::ElementType ParseType(std::string_view type) { … }
const url_pattern_index::flat::UrlRule* FindMatchingUrlRule(
const subresource_filter::MemoryMappedRuleset* ruleset,
const url::Origin& document_origin,
const GURL& request_url,
url_pattern_index::proto::ElementType type) { … }
const std::string& ExtractStringFromDictionary(
const base::Value::Dict& dictionary,
const std::string& key) { … }
}
FilterTool::FilterTool(
scoped_refptr<const subresource_filter::MemoryMappedRuleset> ruleset,
std::ostream* output)
: … { … }
FilterTool::~FilterTool() = default;
void FilterTool::Match(const std::string& document_origin,
const std::string& url,
const std::string& type) { … }
void FilterTool::MatchBatch(std::istream* request_stream) { … }
void FilterTool::MatchRules(std::istream* request_stream, int min_match_count) { … }
void FilterTool::PrintResult(bool blocked,
const url_pattern_index::flat::UrlRule* rule,
std::string_view document_origin,
std::string_view url,
std::string_view type) { … }
const url_pattern_index::flat::UrlRule* FilterTool::MatchImpl(
std::string_view document_origin,
std::string_view url,
std::string_view type,
bool* blocked) { … }
void FilterTool::MatchBatchImpl(std::istream* request_stream,
bool print_each_request,
int min_match_count) { … }
}