| 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/offline_pages/recent_tab_suggestions_provider.
h" | 5 #include "components/ntp_snippets/offline_pages/recent_tab_suggestions_provider.
h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 }; | 62 }; |
| 63 | 63 |
| 64 std::unique_ptr<OfflinePageModelQuery> BuildRecentTabsQuery( | 64 std::unique_ptr<OfflinePageModelQuery> BuildRecentTabsQuery( |
| 65 offline_pages::OfflinePageModel* model) { | 65 offline_pages::OfflinePageModel* model) { |
| 66 OfflinePageModelQueryBuilder builder; | 66 OfflinePageModelQueryBuilder builder; |
| 67 builder.RequireShownAsRecentlyVisitedSite( | 67 builder.RequireShownAsRecentlyVisitedSite( |
| 68 OfflinePageModelQuery::Requirement::INCLUDE_MATCHING); | 68 OfflinePageModelQuery::Requirement::INCLUDE_MATCHING); |
| 69 return builder.Build(model->GetPolicyController()); | 69 return builder.Build(model->GetPolicyController()); |
| 70 } | 70 } |
| 71 | 71 |
| 72 bool IsRecentTab(offline_pages::ClientPolicyController* policy_controller, |
| 73 const OfflinePageItem& offline_page) { |
| 74 return policy_controller->IsShownAsRecentlyVisitedSite( |
| 75 offline_page.client_id.name_space); |
| 76 } |
| 77 |
| 72 } // namespace | 78 } // namespace |
| 73 | 79 |
| 74 RecentTabSuggestionsProvider::RecentTabSuggestionsProvider( | 80 RecentTabSuggestionsProvider::RecentTabSuggestionsProvider( |
| 75 ContentSuggestionsProvider::Observer* observer, | 81 ContentSuggestionsProvider::Observer* observer, |
| 76 offline_pages::OfflinePageModel* offline_page_model, | 82 offline_pages::OfflinePageModel* offline_page_model, |
| 77 PrefService* pref_service) | 83 PrefService* pref_service) |
| 78 : ContentSuggestionsProvider(observer), | 84 : ContentSuggestionsProvider(observer), |
| 79 category_status_(CategoryStatus::AVAILABLE_LOADING), | 85 category_status_(CategoryStatus::AVAILABLE_LOADING), |
| 80 provided_category_( | 86 provided_category_( |
| 81 Category::FromKnownCategory(KnownCategories::RECENT_TABS)), | 87 Category::FromKnownCategory(KnownCategories::RECENT_TABS)), |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 callback.Run(std::move(suggestions)); | 211 callback.Run(std::move(suggestions)); |
| 206 } | 212 } |
| 207 | 213 |
| 208 void RecentTabSuggestionsProvider::OfflinePageModelLoaded( | 214 void RecentTabSuggestionsProvider::OfflinePageModelLoaded( |
| 209 offline_pages::OfflinePageModel* model) {} | 215 offline_pages::OfflinePageModel* model) {} |
| 210 | 216 |
| 211 void RecentTabSuggestionsProvider::OfflinePageAdded( | 217 void RecentTabSuggestionsProvider::OfflinePageAdded( |
| 212 offline_pages::OfflinePageModel* model, | 218 offline_pages::OfflinePageModel* model, |
| 213 const offline_pages::OfflinePageItem& added_page) { | 219 const offline_pages::OfflinePageItem& added_page) { |
| 214 DCHECK_EQ(offline_page_model_, model); | 220 DCHECK_EQ(offline_page_model_, model); |
| 215 FetchRecentTabs(); | 221 if (IsRecentTab(model->GetPolicyController(), added_page)) { |
| 222 FetchRecentTabs(); |
| 223 } |
| 216 } | 224 } |
| 217 | 225 |
| 218 void RecentTabSuggestionsProvider:: | 226 void RecentTabSuggestionsProvider:: |
| 219 GetPagesMatchingQueryCallbackForFetchRecentTabs( | 227 GetPagesMatchingQueryCallbackForFetchRecentTabs( |
| 220 const std::vector<OfflinePageItem>& offline_pages) { | 228 const std::vector<OfflinePageItem>& offline_pages) { |
| 221 NotifyStatusChanged(CategoryStatus::AVAILABLE); | 229 NotifyStatusChanged(CategoryStatus::AVAILABLE); |
| 222 std::set<std::string> old_dismissed_ids = ReadDismissedIDsFromPrefs(); | 230 std::set<std::string> old_dismissed_ids = ReadDismissedIDsFromPrefs(); |
| 223 std::set<std::string> new_dismissed_ids; | 231 std::set<std::string> new_dismissed_ids; |
| 224 std::vector<const OfflinePageItem*> recent_tab_items; | 232 std::vector<const OfflinePageItem*> recent_tab_items; |
| 225 for (const OfflinePageItem& item : offline_pages) { | 233 for (const OfflinePageItem& item : offline_pages) { |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 } | 345 } |
| 338 | 346 |
| 339 void RecentTabSuggestionsProvider::StoreDismissedIDsToPrefs( | 347 void RecentTabSuggestionsProvider::StoreDismissedIDsToPrefs( |
| 340 const std::set<std::string>& dismissed_ids) { | 348 const std::set<std::string>& dismissed_ids) { |
| 341 prefs::StoreDismissedIDsToPrefs(pref_service_, | 349 prefs::StoreDismissedIDsToPrefs(pref_service_, |
| 342 prefs::kDismissedRecentOfflineTabSuggestions, | 350 prefs::kDismissedRecentOfflineTabSuggestions, |
| 343 dismissed_ids); | 351 dismissed_ids); |
| 344 } | 352 } |
| 345 | 353 |
| 346 } // namespace ntp_snippets | 354 } // namespace ntp_snippets |
| OLD | NEW |