12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // 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_CATEGORY_RANKERS_CATEGORY_RANKER_H_
- #define COMPONENTS_NTP_SNIPPETS_CATEGORY_RANKERS_CATEGORY_RANKER_H_
- #include <string>
- #include <vector>
- #include "base/time/time.h"
- #include "components/ntp_snippets/category.h"
- namespace ntp_snippets {
- // Orders categories.
- // The order may be dynamic and change at any time.
- class CategoryRanker {
- public:
- virtual ~CategoryRanker() = default;
- // Compares two categories. True means that |left| precedes |right|, i.e. it
- // must be located earlier (above) on the NTP. This method must satisfy
- // "Compare" contract required by sort algorithms.
- virtual bool Compare(Category left, Category right) const = 0;
- // Deletes all history related data between |begin| and |end|. After this
- // call, the category order may not depend on this history range anymore.
- virtual void ClearHistory(base::Time begin, base::Time end) = 0;
- // If |category| has not been added previously, it is added after all already
- // known categories, otherwise nothing is changed.
- virtual void AppendCategoryIfNecessary(Category category) = 0;
- // If |category_to_insert| has not been added previously, it is added before
- // |anchor|, otherwise nothing is changed.
- virtual void InsertCategoryBeforeIfNecessary(Category category_to_insert,
- Category anchor) = 0;
- // If |category_to_insert| has not been added previously, it is added after
- // |anchor|, otherwise nothing is changed.
- virtual void InsertCategoryAfterIfNecessary(Category category_to_insert,
- Category anchor) = 0;
- struct DebugDataItem {
- std::string label;
- std::string content;
- DebugDataItem(const std::string& label, const std::string& content)
- : label(label), content(content) {}
- };
- // Returns DebugData in form of pairs of strings (label; content),
- // e.g. describing internal state or parameter values.
- virtual std::vector<DebugDataItem> GetDebugData() = 0;
- // Feedback data from the user to update the ranking.
- // Called whenever a suggestion is opened by the user.
- virtual void OnSuggestionOpened(Category category) = 0;
- // Called whenever a category is dismissed by the user.
- virtual void OnCategoryDismissed(Category category) = 0;
- };
- } // namespace ntp_snippets
- #endif // COMPONENTS_NTP_SNIPPETS_CATEGORY_RANKERS_CATEGORY_RANKER_H_
|