| 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 14 matching lines...) Expand all Loading... |
| 25 #include "ui/gfx/image/image.h" | 25 #include "ui/gfx/image/image.h" |
| 26 | 26 |
| 27 using offline_pages::ClientId; | 27 using offline_pages::ClientId; |
| 28 using offline_pages::DownloadUIAdapter; | 28 using offline_pages::DownloadUIAdapter; |
| 29 using offline_pages::DownloadUIItem; | 29 using offline_pages::DownloadUIItem; |
| 30 | 30 |
| 31 namespace ntp_snippets { | 31 namespace ntp_snippets { |
| 32 | 32 |
| 33 namespace { | 33 namespace { |
| 34 | 34 |
| 35 const int kDefaultMaxSuggestionsCount = 5; | 35 const base::FeatureParam<int> kMaxSuggestionsCountParam{ |
| 36 | 36 &kRecentOfflineTabSuggestionsFeature, "recent_tabs_max_count", 5}; |
| 37 const char* kMaxSuggestionsCountParamName = "recent_tabs_max_count"; | |
| 38 | |
| 39 int GetMaxSuggestionsCount() { | |
| 40 return variations::GetVariationParamByFeatureAsInt( | |
| 41 kRecentOfflineTabSuggestionsFeature, kMaxSuggestionsCountParamName, | |
| 42 kDefaultMaxSuggestionsCount); | |
| 43 } | |
| 44 | 37 |
| 45 struct OrderUIItemsByMostRecentlyCreatedFirst { | 38 struct OrderUIItemsByMostRecentlyCreatedFirst { |
| 46 bool operator()(const DownloadUIItem* left, | 39 bool operator()(const DownloadUIItem* left, |
| 47 const DownloadUIItem* right) const { | 40 const DownloadUIItem* right) const { |
| 48 return left->start_time > right->start_time; | 41 return left->start_time > right->start_time; |
| 49 } | 42 } |
| 50 }; | 43 }; |
| 51 | 44 |
| 52 struct OrderUIItemsByUrlAndThenMostRecentlyCreatedFirst { | 45 struct OrderUIItemsByUrlAndThenMostRecentlyCreatedFirst { |
| 53 bool operator()(const DownloadUIItem* left, | 46 bool operator()(const DownloadUIItem* left, |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 std::unique(ui_items.begin(), ui_items.end(), | 265 std::unique(ui_items.begin(), ui_items.end(), |
| 273 [](const DownloadUIItem* left, const DownloadUIItem* right) { | 266 [](const DownloadUIItem* left, const DownloadUIItem* right) { |
| 274 return left->url == right->url; | 267 return left->url == right->url; |
| 275 }); | 268 }); |
| 276 ui_items.erase(new_end, ui_items.end()); | 269 ui_items.erase(new_end, ui_items.end()); |
| 277 std::sort(ui_items.begin(), ui_items.end(), | 270 std::sort(ui_items.begin(), ui_items.end(), |
| 278 OrderUIItemsByMostRecentlyCreatedFirst()); | 271 OrderUIItemsByMostRecentlyCreatedFirst()); |
| 279 std::vector<ContentSuggestion> suggestions; | 272 std::vector<ContentSuggestion> suggestions; |
| 280 for (const DownloadUIItem* ui_item : ui_items) { | 273 for (const DownloadUIItem* ui_item : ui_items) { |
| 281 suggestions.push_back(ConvertUIItem(*ui_item)); | 274 suggestions.push_back(ConvertUIItem(*ui_item)); |
| 282 if (static_cast<int>(suggestions.size()) == GetMaxSuggestionsCount()) { | 275 if (static_cast<int>(suggestions.size()) == |
| 276 kMaxSuggestionsCountParam.Get()) { |
| 283 break; | 277 break; |
| 284 } | 278 } |
| 285 } | 279 } |
| 286 return suggestions; | 280 return suggestions; |
| 287 } | 281 } |
| 288 | 282 |
| 289 void RecentTabSuggestionsProvider::InvalidateSuggestion( | 283 void RecentTabSuggestionsProvider::InvalidateSuggestion( |
| 290 const std::string& ui_item_guid) { | 284 const std::string& ui_item_guid) { |
| 291 std::string offline_page_id = base::IntToString( | 285 std::string offline_page_id = base::IntToString( |
| 292 recent_tabs_ui_adapter_->GetOfflineIdByGuid(ui_item_guid)); | 286 recent_tabs_ui_adapter_->GetOfflineIdByGuid(ui_item_guid)); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 308 } | 302 } |
| 309 | 303 |
| 310 void RecentTabSuggestionsProvider::StoreDismissedIDsToPrefs( | 304 void RecentTabSuggestionsProvider::StoreDismissedIDsToPrefs( |
| 311 const std::set<std::string>& dismissed_ids) { | 305 const std::set<std::string>& dismissed_ids) { |
| 312 prefs::StoreDismissedIDsToPrefs(pref_service_, | 306 prefs::StoreDismissedIDsToPrefs(pref_service_, |
| 313 prefs::kDismissedRecentOfflineTabSuggestions, | 307 prefs::kDismissedRecentOfflineTabSuggestions, |
| 314 dismissed_ids); | 308 dismissed_ids); |
| 315 } | 309 } |
| 316 | 310 |
| 317 } // namespace ntp_snippets | 311 } // namespace ntp_snippets |
| OLD | NEW |