Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef COMPONENTS_NTP_SNIPPETS_CONTENT_SUGGESTIONS_CATEGORY_H_ | 5 #ifndef COMPONENTS_NTP_SNIPPETS_CONTENT_SUGGESTIONS_CATEGORY_H_ |
| 6 #define COMPONENTS_NTP_SNIPPETS_CONTENT_SUGGESTIONS_CATEGORY_H_ | 6 #define COMPONENTS_NTP_SNIPPETS_CONTENT_SUGGESTIONS_CATEGORY_H_ |
| 7 | 7 |
| 8 #include <ostream> | |
| 9 | |
| 8 namespace ntp_snippets { | 10 namespace ntp_snippets { |
| 9 | 11 |
| 10 // A category groups ContentSuggestions which belong together. | 12 class ContentSuggestionsCategoryFactory; |
| 11 enum class ContentSuggestionsCategory { ARTICLES, OFFLINE_PAGES, COUNT }; | 13 |
| 14 // These are the categories that the client knows about. | |
| 15 // The values before LOCAL_CATEGORIES_COUNT are the categories that are provided | |
| 16 // locally on the device. Categories provided by the server only need to be | |
| 17 // hard-coded here if they need to be recognized by the client implementation. | |
| 18 enum class KnownSuggestionsCategories { | |
| 19 OFFLINE_PAGES, | |
| 20 LOCAL_CATEGORIES_COUNT, | |
| 21 | |
| 22 REMOTE_CATEGORIES_OFFSET = 10000, | |
|
Marc Treib
2016/07/28 11:41:45
Should REMOTE_CATEGORIES_OFFSET itself be a valid
Philipp Keck
2016/07/28 13:50:53
No it shouldn't and the factory enforces that. I d
| |
| 23 ARTICLES = REMOTE_CATEGORIES_OFFSET + 1, | |
| 24 }; | |
| 25 | |
| 26 // A category groups ContentSuggestions which belong together. Use the | |
| 27 // ContentSuggestionsCategoryFactory to obtain instances. | |
| 28 class ContentSuggestionsCategory { | |
| 29 public: | |
| 30 int id() const { return id_; }; | |
|
Marc Treib
2016/07/28 11:41:45
nit: extra semicolon at the end
Philipp Keck
2016/07/28 13:50:54
Done.
| |
| 31 | |
| 32 private: | |
| 33 friend class ContentSuggestionsCategoryFactory; | |
| 34 ContentSuggestionsCategory(int id); | |
|
Marc Treib
2016/07/28 11:41:45
empty line before
Philipp Keck
2016/07/28 13:50:54
Done.
| |
| 35 | |
| 36 int id_; | |
| 37 }; | |
| 38 | |
| 39 inline bool operator==(const ContentSuggestionsCategory& left, | |
|
Marc Treib
2016/07/28 11:41:45
All these shouldn't be inline.
Philipp Keck
2016/07/28 13:50:54
Done.
| |
| 40 const ContentSuggestionsCategory& right) { | |
| 41 return left.id() == right.id(); | |
| 42 } | |
| 43 | |
| 44 inline bool operator!=(const ContentSuggestionsCategory& left, | |
| 45 const ContentSuggestionsCategory& right) { | |
| 46 return left.id() != right.id(); | |
|
Marc Treib
2016/07/28 11:41:45
It's a common practice to define != in terms of ==
Philipp Keck
2016/07/28 13:50:54
Done.
| |
| 47 } | |
| 48 | |
| 49 inline bool operator==(const KnownSuggestionsCategories& left, | |
|
Marc Treib
2016/07/28 11:41:45
Hmm, not quite sure about these... maybe an explic
tschumann
2016/07/28 12:50:14
Yeah, this also seems a bit overkill to me. Ideall
Philipp Keck
2016/07/28 13:50:53
Done.
Philipp Keck
2016/07/28 13:50:54
See below.
| |
| 50 const ContentSuggestionsCategory& right) { | |
| 51 return static_cast<int>(left) == right.id(); | |
| 52 } | |
| 53 | |
| 54 inline bool operator==(const ContentSuggestionsCategory& left, | |
| 55 const KnownSuggestionsCategories& right) { | |
| 56 return right == left; | |
| 57 } | |
| 58 | |
| 59 inline bool operator!=(const KnownSuggestionsCategories& left, | |
| 60 const ContentSuggestionsCategory& right) { | |
| 61 return static_cast<int>(left) != right.id(); | |
| 62 } | |
| 63 | |
| 64 inline bool operator!=(const ContentSuggestionsCategory& left, | |
| 65 const KnownSuggestionsCategories& right) { | |
| 66 return right != left; | |
| 67 } | |
| 68 | |
| 69 std::ostream& operator<<(std::ostream& os, | |
|
Marc Treib
2016/07/28 11:41:45
What's this needed for - output in tests?
tschumann
2016/07/28 12:50:14
not sure about chrome, but in google3 you'd have a
Marc Treib
2016/07/28 12:54:02
Chrome's LOG, DCHECK etc macros make use of operat
Philipp Keck
2016/07/28 13:50:54
It's used in DCHECK_EQ, but it also comes in handy
tschumann
2016/07/28 15:03:45
ok, so this means no operator== comparing KnownSug
Philipp Keck
2016/07/28 15:15:25
Yes, I removed the operator== comparing KnownSugge
| |
| 70 const ContentSuggestionsCategory& obj); | |
| 12 | 71 |
| 13 } // namespace ntp_snippets | 72 } // namespace ntp_snippets |
| 14 | 73 |
| 15 #endif // COMPONENTS_NTP_SNIPPETS_CONTENT_SUGGESTIONS_CATEGORY_H_ | 74 #endif // COMPONENTS_NTP_SNIPPETS_CONTENT_SUGGESTIONS_CATEGORY_H_ |
| OLD | NEW |