Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(732)

Unified Diff: components/ntp_snippets/category_rankers/category_ranker.h

Issue 2568033005: [NTP::SectionOrder] Replace CategoryFactory with a category ranker. (Closed)
Patch Set: rebase. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/ntp_snippets/category_rankers/category_ranker.h
diff --git a/components/ntp_snippets/category_rankers/category_ranker.h b/components/ntp_snippets/category_rankers/category_ranker.h
new file mode 100644
index 0000000000000000000000000000000000000000..30cf36bf8e2670e0166fa079f0bf66f59d583c09
--- /dev/null
+++ b/components/ntp_snippets/category_rankers/category_ranker.h
@@ -0,0 +1,43 @@
+// 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 "base/time/time.h"
+#include "components/ntp_snippets/category.h"
+
+namespace ntp_snippets {
+
+// TODO(vitaliii): Ensure that changes in the order are propagated to the UI.
+// (crbug.com/673743)
+
+// 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;
+
+ // Feedback data from the user to update the ranking.
+
+ // Called whenever a suggestion is opened by the user.
+ virtual void OnSuggestionOpened(Category category) = 0;
+};
+
+} // namespace ntp_snippets
+
+#endif // COMPONENTS_NTP_SNIPPETS_CATEGORY_RANKERS_CATEGORY_RANKER_H_

Powered by Google App Engine
This is Rietveld 408576698