Chromium Code Reviews| Index: components/ntp_snippets/snippet.h |
| diff --git a/components/ntp_snippets/snippet.h b/components/ntp_snippets/snippet.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a597c17738e915a09f9b008d063aaa92c3fb1cb4 |
| --- /dev/null |
| +++ b/components/ntp_snippets/snippet.h |
| @@ -0,0 +1,102 @@ |
| +// 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_SNIPPET_H_ |
| +#define COMPONENTS_NTP_SNIPPETS_SNIPPET_H_ |
| + |
| +#include <memory> |
| +#include <string> |
| +#include <vector> |
| + |
| +#include "base/macros.h" |
| +#include "base/time/time.h" |
| +#include "components/ntp_snippets/snippet_category.h" |
| +#include "components/ntp_snippets/snippet_provider_type.h" |
| +#include "url/gurl.h" |
| + |
| +namespace ntp_snippets { |
| + |
| +// A snippet for the new tab page, which can be an article or an offline page, |
| +// for example. |
| +class Snippet { |
|
Marc Treib
2016/06/14 09:29:44
Could you add a comment here saying that this isn'
Philipp Keck
2016/06/14 09:35:50
Done.
|
| + public: |
| + using PtrVector = std::vector<std::unique_ptr<Snippet>>; |
| + |
| + // Creates a new snippet with the given |id|. |
| + Snippet(const std::string& id, |
| + const SnippetProviderType provider, |
| + const SnippetCategory category, |
| + const GURL& url); |
| + |
| + ~Snippet(); |
| + |
| + // An ID for identifying the snippet. The ID is unique among all snippets |
| + // from the same provider, so to determine a globally unique identifier, |
| + // combine this ID with the provider type. |
| + const std::string& id() const { return id_; } |
| + |
| + // The provider that created this snippet. |
| + SnippetProviderType provider() const { return provider_; } |
| + |
| + // The category that this snippet belongs to. |
| + SnippetCategory category() const { return category_; } |
| + |
| + // The normal content URL where the content referenced by the snippet can be |
| + // accessed. |
| + const GURL& url() const { return url_; } |
| + |
| + // If available, this contains an URL to an AMP version of the same content. |
| + // Otherwise, this is an empty GURL(). |
| + const GURL& amp_url() const { return amp_url_; } |
| + void set_amp_url(const GURL& amp_url) { amp_url_ = amp_url; } |
| + |
| + // Title of the snippet. |
| + const std::string& title() const { return title_; } |
| + void set_title(const std::string& title) { title_ = title; } |
| + |
| + // Summary or relevant extract from the content. |
| + const std::string& text_extract() const { return text_extract_; } |
| + void set_text_extract(const std::string& text_extract) { |
| + text_extract_ = text_extract; |
| + } |
| + |
| + // The time when the content represented by this snippet was published. |
| + const base::Time& publish_date() const { return publish_date_; } |
| + void set_publish_date(const base::Time& publish_date) { |
| + publish_date_ = publish_date; |
| + } |
| + |
| + // The name of the source/publisher of this snippet. |
| + const std::string& publisher_name() const { return publisher_name_; } |
| + void set_publisher_name(const std::string& publisher_name) { |
| + publisher_name_ = publisher_name; |
| + } |
| + |
| + // TODO(pke) Remove the score from the Snippet class. The UI only uses |
| + // it to track user clicks (histogram data). Instead, the providers should |
| + // be informed about clicks and do appropriate logging themselves. |
| + // IMPORTANT: The score may simply be 0 for snippets from providers which |
| + // cannot provide score values. |
| + float score() const { return score_; } |
| + void set_score(float score) { score_ = score; } |
| + |
| + private: |
| + std::string id_; |
| + SnippetProviderType provider_; |
| + SnippetCategory category_; |
| + GURL url_; |
| + GURL amp_url_; |
| + std::string title_; |
| + std::string text_extract_; |
| + GURL salient_image_url_; |
| + base::Time publish_date_; |
| + std::string publisher_name_; |
| + float score_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(Snippet); |
| +}; |
| + |
| +} // namespace ntp_snippets |
| + |
| +#endif // COMPONENTS_NTP_SNIPPETS_SNIPPET_H_ |