| // 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. |
| |
| #include "components/ntp_snippets/mock_content_suggestions_provider.h" |
| |
| #include <utility> |
| |
| #include "base/bind.h" |
| #include "base/strings/utf_string_conversions.h" |
| |
| namespace ntp_snippets { |
| |
| MockContentSuggestionsProvider::MockContentSuggestionsProvider( |
| Observer* observer, |
| const std::vector<Category>& provided_categories) |
| : ContentSuggestionsProvider(observer) { |
| SetProvidedCategories(provided_categories); |
| } |
| |
| MockContentSuggestionsProvider::~MockContentSuggestionsProvider() { |
| if (destructor_callback_) { |
| std::move(destructor_callback_).Run(); |
| } |
| } |
| |
| void MockContentSuggestionsProvider::SetProvidedCategories( |
| const std::vector<Category>& provided_categories) { |
| statuses_.clear(); |
| provided_categories_ = provided_categories; |
| for (Category category : provided_categories) { |
| statuses_[category.id()] = CategoryStatus::AVAILABLE; |
| } |
| } |
| |
| CategoryStatus MockContentSuggestionsProvider::GetCategoryStatus( |
| Category category) { |
| return statuses_[category.id()]; |
| } |
| |
| CategoryInfo MockContentSuggestionsProvider::GetCategoryInfo( |
| Category category) { |
| return CategoryInfo(base::ASCIIToUTF16("Section title"), |
| ContentSuggestionsCardLayout::FULL_CARD, |
| ContentSuggestionsAdditionalAction::FETCH, |
| /*show_if_empty=*/false, |
| base::ASCIIToUTF16("No suggestions message")); |
| } |
| |
| void MockContentSuggestionsProvider::SetDestructorCallback( |
| DestructorCallback callback) { |
| destructor_callback_ = std::move(callback); |
| } |
| |
| void MockContentSuggestionsProvider::Fetch(const Category& category, |
| const std::set<std::string>& set, |
| FetchDoneCallback callback) { |
| FetchMock(category, set, &callback); |
| } |
| |
| void MockContentSuggestionsProvider::FetchSuggestionImage( |
| const ContentSuggestion::ID& id, |
| ImageFetchedCallback callback) { |
| FetchSuggestionImageMock(id, callback); |
| } |
| |
| void MockContentSuggestionsProvider::FireSuggestionsChanged( |
| Category category, |
| std::vector<ContentSuggestion> suggestions) { |
| observer()->OnNewSuggestions(this, category, std::move(suggestions)); |
| } |
| |
| void MockContentSuggestionsProvider::FireCategoryStatusChanged( |
| Category category, |
| CategoryStatus new_status) { |
| statuses_[category.id()] = new_status; |
| observer()->OnCategoryStatusChanged(this, category, new_status); |
| } |
| |
| void MockContentSuggestionsProvider::FireCategoryStatusChangedWithCurrentStatus( |
| Category category) { |
| observer()->OnCategoryStatusChanged(this, category, statuses_[category.id()]); |
| } |
| |
| void MockContentSuggestionsProvider::FireSuggestionInvalidated( |
| const ContentSuggestion::ID& suggestion_id) { |
| observer()->OnSuggestionInvalidated(this, suggestion_id); |
| } |
| |
| void MockContentSuggestionsProvider::GetDismissedSuggestionsForDebugging( |
| Category category, |
| DismissedSuggestionsCallback callback) { |
| GetDismissedSuggestionsForDebuggingMock(category, callback); |
| } |
| |
| } // namespace ntp_snippets |