blob: b3a129ec4e712f73c25c6e863a429e0a0fe66da9 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_NTP_SNIPPETS_SECTION_RANKERS_CONSTANT_SECTION_RANKER_H_
#define COMPONENTS_NTP_SNIPPETS_SECTION_RANKERS_CONSTANT_SECTION_RANKER_H_
#include <string>
#include <vector>
#include "base/time/time.h"
#include "components/ntp_snippets/category.h"
#include "components/ntp_snippets/category_rankers/category_ranker.h"
namespace ntp_snippets {
// Simple implementation of a CategoryRanker that never changes the order. For
// KnownCategories, the order is hardcoded. Remote categories must be added
// using |AppendCategoryIfNecessary|. They are sorted after all known
// categories. Among themselves their order is the same as the order they were
// added in.
class ConstantCategoryRanker : public CategoryRanker {
public:
ConstantCategoryRanker();
~ConstantCategoryRanker() override;
// CategoryRanker implementation.
bool Compare(Category left, Category right) const override;
void ClearHistory(base::Time begin, base::Time end) override;
void AppendCategoryIfNecessary(Category category) override;
void InsertCategoryBeforeIfNecessary(Category category_to_insert,
Category anchor) override;
void InsertCategoryAfterIfNecessary(Category category_to_insert,
Category anchor) override;
std::vector<CategoryRanker::DebugDataItem> GetDebugData() override;
void OnSuggestionOpened(Category category) override;
void OnCategoryDismissed(Category category) override;
static std::vector<KnownCategories> GetKnownCategoriesDefaultOrder();
private:
void AppendKnownCategory(KnownCategories known_category);
std::vector<Category> ordered_categories_;
DISALLOW_COPY_AND_ASSIGN(ConstantCategoryRanker);
};
} // namespace ntp_snippets
#endif // COMPONENTS_NTP_SNIPPETS_SECTION_RANKERS_CONSTANT_SECTION_RANKER_H_