blob: 28f4b513a061b1e417c40ad5b5399466eaf9505f [file] [log] [blame]
// Copyright 2017 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_CONTEXTUAL_CONTEXTUAL_SUGGESTION_H_
#define COMPONENTS_NTP_SNIPPETS_CONTEXTUAL_CONTEXTUAL_SUGGESTION_H_
#include <string>
#include "url/gurl.h"
namespace contextual_suggestions {
// Struct containing the data for a single contextual content suggestion.
struct ContextualSuggestion {
ContextualSuggestion();
ContextualSuggestion(const ContextualSuggestion&);
ContextualSuggestion(ContextualSuggestion&&) noexcept;
~ContextualSuggestion();
ContextualSuggestion& operator=(const ContextualSuggestion&);
// The ID identifying the suggestion.
std::string id;
// Title of the suggestion.
std::string title;
// The URL of the suggested page.
GURL url;
// The name of the content's publisher.
std::string publisher_name;
// Summary or relevant extract from the content.
std::string snippet;
// Identifier of the image to display alongside the suggestion. This id can
// be used to construct a URL to the image.
std::string image_id;
// As above, but for identifying the favicon for the site the suggestion
// resides on.
std::string favicon_image_id;
// The favicon URL for the suggestion.
std::string favicon_image_url;
};
// Allows compact, precise construction of a ContextualSuggestion. Its main
// purpose is to avoid using a confusing 6 param helper whose argument
// order has to be guessed at.
class SuggestionBuilder {
public:
explicit SuggestionBuilder(const GURL& url);
SuggestionBuilder& Title(const std::string& title);
SuggestionBuilder& PublisherName(const std::string& publisher_name);
SuggestionBuilder& Snippet(const std::string& snippet);
SuggestionBuilder& ImageId(const std::string& image_id);
SuggestionBuilder& FaviconImageId(const std::string& favicon_image_id);
SuggestionBuilder& FaviconImageUrl(const std::string& favicon_image_url);
ContextualSuggestion Build();
private:
ContextualSuggestion suggestion_;
};
} // namespace contextual_suggestions
#endif // COMPONENTS_NTP_SNIPPETS_CONTEXTUAL_CONTEXTUAL_SUGGESTION_H_