OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/ntp_snippets/content_suggestions_service.h" | 5 #include "components/ntp_snippets/content_suggestions_service.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
80 } | 80 } |
81 | 81 |
82 void FireSuggestionInvalidated(const ContentSuggestion::ID& suggestion_id) { | 82 void FireSuggestionInvalidated(const ContentSuggestion::ID& suggestion_id) { |
83 observer()->OnSuggestionInvalidated(this, suggestion_id); | 83 observer()->OnSuggestionInvalidated(this, suggestion_id); |
84 } | 84 } |
85 | 85 |
86 MOCK_METHOD3(ClearHistory, | 86 MOCK_METHOD3(ClearHistory, |
87 void(base::Time begin, | 87 void(base::Time begin, |
88 base::Time end, | 88 base::Time end, |
89 const base::Callback<bool(const GURL& url)>& filter)); | 89 const base::Callback<bool(const GURL& url)>& filter)); |
90 MOCK_METHOD2(FetchMore, void(const Category&, FetchedMoreCallback)); | |
90 MOCK_METHOD1(ClearCachedSuggestions, void(Category category)); | 91 MOCK_METHOD1(ClearCachedSuggestions, void(Category category)); |
91 MOCK_METHOD2(GetDismissedSuggestionsForDebugging, | 92 MOCK_METHOD2(GetDismissedSuggestionsForDebugging, |
92 void(Category category, | 93 void(Category category, |
93 const DismissedSuggestionsCallback& callback)); | 94 const DismissedSuggestionsCallback& callback)); |
94 MOCK_METHOD1(ClearDismissedSuggestionsForDebugging, void(Category category)); | 95 MOCK_METHOD1(ClearDismissedSuggestionsForDebugging, void(Category category)); |
95 MOCK_METHOD1(DismissSuggestion, | 96 MOCK_METHOD1(DismissSuggestion, |
96 void(const ContentSuggestion::ID& suggestion_id)); | 97 void(const ContentSuggestion::ID& suggestion_id)); |
97 MOCK_METHOD2(FetchSuggestionImage, | 98 MOCK_METHOD2(FetchSuggestionImage, |
98 void(const ContentSuggestion::ID& suggestion_id, | 99 void(const ContentSuggestion::ID& suggestion_id, |
99 const ImageFetchedCallback& callback)); | 100 const ImageFetchedCallback& callback)); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
189 | 190 |
190 MockProvider* RegisterProvider( | 191 MockProvider* RegisterProvider( |
191 const std::vector<Category>& provided_categories) { | 192 const std::vector<Category>& provided_categories) { |
192 std::unique_ptr<MockProvider> provider = base::MakeUnique<MockProvider>( | 193 std::unique_ptr<MockProvider> provider = base::MakeUnique<MockProvider>( |
193 service(), category_factory(), provided_categories); | 194 service(), category_factory(), provided_categories); |
194 MockProvider* result = provider.get(); | 195 MockProvider* result = provider.get(); |
195 service()->RegisterProvider(std::move(provider)); | 196 service()->RegisterProvider(std::move(provider)); |
196 return result; | 197 return result; |
197 } | 198 } |
198 | 199 |
200 MockProvider::FetchedMoreCallback MakeDummyCallback() { | |
201 return base::Bind(&ContentSuggestionsServiceTest::EmptyCallback, | |
202 base::Unretained(this)); | |
203 } | |
204 | |
199 MOCK_METHOD1(OnImageFetched, void(const gfx::Image&)); | 205 MOCK_METHOD1(OnImageFetched, void(const gfx::Image&)); |
200 | 206 |
201 protected: | 207 protected: |
202 void RegisterPrefs() { | 208 void RegisterPrefs() { |
203 ContentSuggestionsService::RegisterProfilePrefs(pref_service_->registry()); | 209 ContentSuggestionsService::RegisterProfilePrefs(pref_service_->registry()); |
204 UserClassifier::RegisterProfilePrefs(pref_service_->registry()); | 210 UserClassifier::RegisterProfilePrefs(pref_service_->registry()); |
205 } | 211 } |
206 | 212 |
207 void CreateContentSuggestionsService( | 213 void CreateContentSuggestionsService( |
208 ContentSuggestionsService::State enabled) { | 214 ContentSuggestionsService::State enabled) { |
(...skipping 21 matching lines...) Expand all Loading... | |
230 Category category, | 236 Category category, |
231 const std::vector<int>& numbers) { | 237 const std::vector<int>& numbers) { |
232 std::vector<ContentSuggestion> result; | 238 std::vector<ContentSuggestion> result; |
233 for (int number : numbers) { | 239 for (int number : numbers) { |
234 result.push_back(CreateSuggestion(category, number)); | 240 result.push_back(CreateSuggestion(category, number)); |
235 } | 241 } |
236 return result; | 242 return result; |
237 } | 243 } |
238 | 244 |
239 private: | 245 private: |
246 void EmptyCallback(std::vector<ContentSuggestion>) {} | |
247 | |
240 std::unique_ptr<ContentSuggestionsService> service_; | 248 std::unique_ptr<ContentSuggestionsService> service_; |
241 std::unique_ptr<TestingPrefServiceSimple> pref_service_; | 249 std::unique_ptr<TestingPrefServiceSimple> pref_service_; |
242 | 250 |
243 DISALLOW_COPY_AND_ASSIGN(ContentSuggestionsServiceTest); | 251 DISALLOW_COPY_AND_ASSIGN(ContentSuggestionsServiceTest); |
244 }; | 252 }; |
245 | 253 |
246 class ContentSuggestionsServiceDisabledTest | 254 class ContentSuggestionsServiceDisabledTest |
247 : public ContentSuggestionsServiceTest { | 255 : public ContentSuggestionsServiceTest { |
248 public: | 256 public: |
249 void SetUp() override { | 257 void SetUp() override { |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
567 TEST_F(ContentSuggestionsServiceTest, ShouldForwardClearHistory) { | 575 TEST_F(ContentSuggestionsServiceTest, ShouldForwardClearHistory) { |
568 Category category = FromKnownCategory(KnownCategories::DOWNLOADS); | 576 Category category = FromKnownCategory(KnownCategories::DOWNLOADS); |
569 MockProvider* provider = RegisterProvider(category); | 577 MockProvider* provider = RegisterProvider(category); |
570 base::Time begin = base::Time::FromTimeT(123), | 578 base::Time begin = base::Time::FromTimeT(123), |
571 end = base::Time::FromTimeT(456); | 579 end = base::Time::FromTimeT(456); |
572 EXPECT_CALL(*provider, ClearHistory(begin, end, _)); | 580 EXPECT_CALL(*provider, ClearHistory(begin, end, _)); |
573 base::Callback<bool(const GURL& url)> filter; | 581 base::Callback<bool(const GURL& url)> filter; |
574 service()->ClearHistory(begin, end, filter); | 582 service()->ClearHistory(begin, end, filter); |
575 } | 583 } |
576 | 584 |
585 TEST_F(ContentSuggestionsServiceTest, ShouldForwardFetchMore) { | |
586 Category category = FromKnownCategory(KnownCategories::ARTICLES); | |
587 MockProvider* provider = RegisterProvider(category); | |
588 provider->FireCategoryStatusChangedWithCurrentStatus(category); | |
589 EXPECT_CALL(*provider, FetchMore(category, testing::_)); | |
Marc Treib
2016/10/20 16:51:39
nit: "testing::" not required (there's a "using" a
Marc Treib
2016/10/28 14:49:49
Done.
| |
590 service()->FetchMore(category, MakeDummyCallback()); | |
Marc Treib
2016/10/20 16:51:39
You can just put a null callback here, as in "Fetc
Marc Treib
2016/10/28 14:49:49
Done.
| |
591 } | |
592 | |
577 TEST_F(ContentSuggestionsServiceTest, DismissAndRestoreCategory) { | 593 TEST_F(ContentSuggestionsServiceTest, DismissAndRestoreCategory) { |
578 // Register a category with one suggestion. | 594 // Register a category with one suggestion. |
579 Category category = FromKnownCategory(KnownCategories::ARTICLES); | 595 Category category = FromKnownCategory(KnownCategories::ARTICLES); |
580 MockProvider* provider = RegisterProvider(category); | 596 MockProvider* provider = RegisterProvider(category); |
581 provider->FireCategoryStatusChangedWithCurrentStatus(category); | 597 provider->FireCategoryStatusChangedWithCurrentStatus(category); |
582 provider->FireSuggestionsChanged(category, CreateSuggestions(category, {42})); | 598 provider->FireSuggestionsChanged(category, CreateSuggestions(category, {42})); |
583 | 599 |
584 EXPECT_THAT(service()->GetCategories(), ElementsAre(category)); | 600 EXPECT_THAT(service()->GetCategories(), ElementsAre(category)); |
585 EXPECT_THAT(service()->GetCategoryStatus(category), | 601 EXPECT_THAT(service()->GetCategoryStatus(category), |
586 Eq(CategoryStatus::AVAILABLE)); | 602 Eq(CategoryStatus::AVAILABLE)); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
682 provider = RegisterProvider(category); | 698 provider = RegisterProvider(category); |
683 provider->FireCategoryStatusChangedWithCurrentStatus(category); | 699 provider->FireCategoryStatusChangedWithCurrentStatus(category); |
684 EXPECT_TRUE(service()->IsCategoryDismissed(category)); | 700 EXPECT_TRUE(service()->IsCategoryDismissed(category)); |
685 | 701 |
686 service()->RestoreDismissedCategories(); | 702 service()->RestoreDismissedCategories(); |
687 EXPECT_FALSE(service()->IsCategoryDismissed(category)); | 703 EXPECT_FALSE(service()->IsCategoryDismissed(category)); |
688 EXPECT_THAT(providers().find(category)->second, Eq(provider)); | 704 EXPECT_THAT(providers().find(category)->second, Eq(provider)); |
689 } | 705 } |
690 | 706 |
691 } // namespace ntp_snippets | 707 } // namespace ntp_snippets |
OLD | NEW |