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
|
// Copyright 2022 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_HISTORY_CLUSTERS_CORE_FILE_CLUSTERING_BACKEND_H_
#define COMPONENTS_HISTORY_CLUSTERS_CORE_FILE_CLUSTERING_BACKEND_H_
#include <memory>
#include "base/task/sequenced_task_runner.h"
#include "components/history_clusters/core/clustering_backend.h"
namespace history_clusters {
namespace switches {
extern const char kClustersOverrideFile[];
} // namespace switches
// A clustering backend that returns the clusters provided by a file specified
// by the command line.
class FileClusteringBackend : public ClusteringBackend {
public:
// Creates a FileClusteringBackend for overriding clusters if enabled
// by command line switch.
static std::unique_ptr<FileClusteringBackend> CreateIfEnabled();
~FileClusteringBackend() override;
// ClusteringBackend:
// `unused_requires_ui_and_triggerability` as this function just sends back
// the clusters as is from the file.
void GetClusters(ClusteringRequestSource clustering_request_source,
ClustersCallback callback,
std::vector<history::AnnotatedVisit> visits,
bool unused_requires_ui_and_triggerability) override;
void GetClustersForUI(ClusteringRequestSource clustering_request_source,
QueryClustersFilterParams filter_params,
ClustersCallback callback,
std::vector<history::Cluster> clusters) override;
void GetClusterTriggerability(
ClustersCallback callback,
std::vector<history::Cluster> clusters) override;
private:
// Private so that it does not incidentally get called if the command line is
// invalid.
FileClusteringBackend();
// The background task runner that processes the file passes in the command
// line and does the heavy lifting for responding to cluster requests.
scoped_refptr<base::SequencedTaskRunner> background_task_runner_;
// Gets the displayable variant of `clusters` that will be shown on the UI
// surface associated with `clustering_request_source` on background thread.
// This will filter persisted clusters using clusters from command line
// override file, as well as apply `filter_params`.
static std::vector<history::Cluster> GetClustersForUIOnBackgroundThread(
ClusteringRequestSource clustering_request_source,
QueryClustersFilterParams filter_params,
std::vector<history::Cluster> persisted_clusters);
};
} // namespace history_clusters
#endif // COMPONENTS_HISTORY_CLUSTERS_CORE_FILE_CLUSTERING_BACKEND_H_
|