1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "components/ntp_snippets/mock_content_suggestions_provider.h"
6 
7 #include <utility>
8 
9 #include "base/bind.h"
10 #include "base/strings/utf_string_conversions.h"
11 
12 namespace ntp_snippets {
13 
MockContentSuggestionsProvider(Observer * observer,const std::vector<Category> & provided_categories)14 MockContentSuggestionsProvider::MockContentSuggestionsProvider(
15     Observer* observer,
16     const std::vector<Category>& provided_categories)
17     : ContentSuggestionsProvider(observer) {
18   SetProvidedCategories(provided_categories);
19 }
20 
~MockContentSuggestionsProvider()21 MockContentSuggestionsProvider::~MockContentSuggestionsProvider() {
22   if (destructor_callback_) {
23     std::move(destructor_callback_).Run();
24   }
25 }
26 
SetProvidedCategories(const std::vector<Category> & provided_categories)27 void MockContentSuggestionsProvider::SetProvidedCategories(
28     const std::vector<Category>& provided_categories) {
29   statuses_.clear();
30   provided_categories_ = provided_categories;
31   for (Category category : provided_categories) {
32     statuses_[category.id()] = CategoryStatus::AVAILABLE;
33   }
34 }
35 
GetCategoryStatus(Category category)36 CategoryStatus MockContentSuggestionsProvider::GetCategoryStatus(
37     Category category) {
38   return statuses_[category.id()];
39 }
40 
GetCategoryInfo(Category category)41 CategoryInfo MockContentSuggestionsProvider::GetCategoryInfo(
42     Category category) {
43   return CategoryInfo(base::ASCIIToUTF16("Section title"),
44                       ContentSuggestionsCardLayout::FULL_CARD,
45                       ContentSuggestionsAdditionalAction::FETCH,
46                       /*show_if_empty=*/false,
47                       base::ASCIIToUTF16("No suggestions message"));
48 }
49 
SetDestructorCallback(DestructorCallback callback)50 void MockContentSuggestionsProvider::SetDestructorCallback(
51     DestructorCallback callback) {
52   destructor_callback_ = std::move(callback);
53 }
54 
Fetch(const Category & category,const std::set<std::string> & set,FetchDoneCallback callback)55 void MockContentSuggestionsProvider::Fetch(const Category& category,
56                                            const std::set<std::string>& set,
57                                            FetchDoneCallback callback) {
58   FetchMock(category, set, &callback);
59 }
60 
FetchSuggestionImage(const ContentSuggestion::ID & id,ImageFetchedCallback callback)61 void MockContentSuggestionsProvider::FetchSuggestionImage(
62     const ContentSuggestion::ID& id,
63     ImageFetchedCallback callback) {
64   FetchSuggestionImageMock(id, callback);
65 }
66 
FetchSuggestionImageData(const ContentSuggestion::ID & id,ImageDataFetchedCallback callback)67 void MockContentSuggestionsProvider::FetchSuggestionImageData(
68     const ContentSuggestion::ID& id,
69     ImageDataFetchedCallback callback) {
70   FetchSuggestionImageDataMock(id, &callback);
71 }
72 
FireSuggestionsChanged(Category category,std::vector<ContentSuggestion> suggestions)73 void MockContentSuggestionsProvider::FireSuggestionsChanged(
74     Category category,
75     std::vector<ContentSuggestion> suggestions) {
76   observer()->OnNewSuggestions(this, category, std::move(suggestions));
77 }
78 
FireCategoryStatusChanged(Category category,CategoryStatus new_status)79 void MockContentSuggestionsProvider::FireCategoryStatusChanged(
80     Category category,
81     CategoryStatus new_status) {
82   statuses_[category.id()] = new_status;
83   observer()->OnCategoryStatusChanged(this, category, new_status);
84 }
85 
FireCategoryStatusChangedWithCurrentStatus(Category category)86 void MockContentSuggestionsProvider::FireCategoryStatusChangedWithCurrentStatus(
87     Category category) {
88   observer()->OnCategoryStatusChanged(this, category, statuses_[category.id()]);
89 }
90 
FireSuggestionInvalidated(const ContentSuggestion::ID & suggestion_id)91 void MockContentSuggestionsProvider::FireSuggestionInvalidated(
92     const ContentSuggestion::ID& suggestion_id) {
93   observer()->OnSuggestionInvalidated(this, suggestion_id);
94 }
95 
GetDismissedSuggestionsForDebugging(Category category,DismissedSuggestionsCallback callback)96 void MockContentSuggestionsProvider::GetDismissedSuggestionsForDebugging(
97     Category category,
98     DismissedSuggestionsCallback callback) {
99   GetDismissedSuggestionsForDebuggingMock(category, callback);
100 }
101 
102 }  // namespace ntp_snippets
103