123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- // 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_H_
- #define COMPONENTS_NTP_SNIPPETS_CATEGORY_H_
- #include <ostream>
- namespace ntp_snippets {
- // These are the categories that the client knows about.
- // The values before LOCAL_CATEGORIES_COUNT are the categories that are provided
- // locally on the device. Categories provided by the server (IDs strictly larger
- // than REMOTE_CATEGORIES_OFFSET) only need to be hard-coded here if they need
- // to be recognized by the client implementation.
- // NOTE: These are persisted, so don't reorder or remove values, and insert new
- // values only in the appropriate places marked below.
- // On Android builds, a Java counterpart will be generated for this enum.
- // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.ntp.snippets
- enum class KnownCategories {
- // Pages recently downloaded during normal navigation.
- RECENT_TABS_DEPRECATED,
- // Pages downloaded by the user for offline consumption.
- DOWNLOADS_DEPRECATED,
- // Recently used bookmarks.
- BOOKMARKS_DEPRECATED,
- // Physical Web page available in the vicinity.
- PHYSICAL_WEB_PAGES_DEPRECATED,
- // Pages recently browsed to on other devices.
- FOREIGN_TABS_DEPRECATED,
- // Pages from the user reading list.
- READING_LIST,
- // ****************** INSERT NEW LOCAL CATEGORIES HERE! ******************
- // Existing categories are persisted and they must never be removed. This may
- // happen implicitly, e.g. when an older version without some local category
- // is installed.
- // Follows the last local category.
- LOCAL_CATEGORIES_COUNT,
- // Remote categories come after this.
- REMOTE_CATEGORIES_OFFSET = 10000,
- // Articles for you.
- ARTICLES = 10001,
- // Categories 10002-10008 are defined on the server.
- // ****************** INSERT NEW REMOTE CATEGORIES HERE! ******************
- // Update the list on the server first. Here specify the ID explicitly.
- // Tracks the last known remote category
- LAST_KNOWN_REMOTE_CATEGORY = ARTICLES,
- };
- // A category groups ContentSuggestions which belong together. Use the
- // CategoryFactory to obtain instances.
- class Category {
- public:
- // An arbitrary but consistent ordering. Can be used to look up categories in
- // a std::map, but should not be used to order categories for other purposes.
- struct CompareByID;
- // Creates a category from a KnownCategory value. The passed |known_category|
- // must not be one of the special values (LOCAL_CATEGORIES_COUNT or
- // REMOTE_CATEGORIES_OFFSET).
- static Category FromKnownCategory(KnownCategories known_category);
- // Creates a category from a category identifier delivered by the server.
- // |remote_category| must be positive.
- static Category FromRemoteCategory(int remote_category);
- // Creates a category from an ID as returned by |id()|. |id| must be a
- // non-negative value. Callers should make sure this is a valid id (if in
- // doubt, call IsValidIDValue()).
- static Category FromIDValue(int id);
- // Verifies if |id| is a valid ID value. Only checks that the value is within
- // a valid range -- not that the system actually knows about the corresponding
- // category.
- static bool IsValidIDValue(int id);
- // Returns a non-negative identifier that is unique for the category and can
- // be converted back to a Category instance using
- // |CategoryFactory::FromIDValue(id)|.
- int id() const { return id_; }
- // Returns a remote category identifier. Do not call for non-remote
- // categories.
- int remote_id() const;
- // Returns whether this category matches the given |known_category|.
- bool IsKnownCategory(KnownCategories known_category) const;
- private:
- explicit Category(int id);
- int id_;
- // Allow copy and assignment.
- };
- bool operator==(const Category& left, const Category& right);
- bool operator!=(const Category& left, const Category& right);
- struct Category::CompareByID {
- bool operator()(const Category& left, const Category& right) const;
- };
- std::ostream& operator<<(std::ostream& os, const Category& obj);
- } // namespace ntp_snippets
- #endif // COMPONENTS_NTP_SNIPPETS_CATEGORY_H_
|