Chromium Code Reviews| 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 |