blob: 504b96298fb37e1c120f0a28f3a1ec95df9c3203 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_URL_DEDUPLICATION_URL_DEDUPLICATION_HELPER_H_
#define COMPONENTS_URL_DEDUPLICATION_URL_DEDUPLICATION_HELPER_H_
#include <memory>
#include <string>
#include <vector>
#include "components/url_deduplication/deduplication_strategy.h"
#include "components/url_deduplication/url_strip_handler.h"
class GURL;
namespace url_deduplication {
class URLDeduplicationHelper {
public:
URLDeduplicationHelper(
std::vector<std::unique_ptr<URLStripHandler>> strip_handlers,
DeduplicationStrategy strategy);
explicit URLDeduplicationHelper(DeduplicationStrategy strategy);
~URLDeduplicationHelper();
// Returns a unique identifier for a given URL (i.e. deduplication key) such
// that related URLs will generate the same key and so clients may recognize
// that two similar looking URLs represent the same visit or visit intention.
std::string ComputeURLDeduplicationKey(const GURL& url,
const std::string& title);
void AddStripHandler(std::unique_ptr<URLStripHandler> handler) {
strip_handlers_.push_back(std::move(handler));
}
private:
std::vector<std::unique_ptr<URLStripHandler>> strip_handlers_;
DeduplicationStrategy strategy_;
};
} // namespace url_deduplication
#endif // COMPONENTS_URL_DEDUPLICATION_URL_DEDUPLICATION_HELPER_H_