Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: components/ntp_snippets/physical_web_pages/physical_web_page_suggestions_provider.cc

Issue 2744253004: NTP: clang-format (Closed)
Patch Set: rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/physical_web_pages/physical_web_page_suggestio ns_provider.h" 5 #include "components/ntp_snippets/physical_web_pages/physical_web_page_suggestio ns_provider.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 // When there is no estimate, the value is <= 0, so we implicitly treat it as 43 // When there is no estimate, the value is <= 0, so we implicitly treat it as
44 // infinity. 44 // infinity.
45 bool is_left_estimated = left.distance_estimate > 0; 45 bool is_left_estimated = left.distance_estimate > 0;
46 bool is_right_estimated = right.distance_estimate > 0; 46 bool is_right_estimated = right.distance_estimate > 0;
47 47
48 if (is_left_estimated != is_right_estimated) 48 if (is_left_estimated != is_right_estimated)
49 return is_left_estimated; 49 return is_left_estimated;
50 return left.distance_estimate < right.distance_estimate; 50 return left.distance_estimate < right.distance_estimate;
51 } 51 }
52 52
53 void FilterOutByGroupId( 53 void FilterOutByGroupId(physical_web::MetadataList& page_metadata_list) {
54 physical_web::MetadataList& page_metadata_list) {
55 // |std::unique| only removes duplicates that immediately follow each other. 54 // |std::unique| only removes duplicates that immediately follow each other.
56 // Thus, first, we have to sort by group_id and distance and only then remove 55 // Thus, first, we have to sort by group_id and distance and only then remove
57 // duplicates. 56 // duplicates.
58 std::sort(page_metadata_list.begin(), page_metadata_list.end(), 57 std::sort(page_metadata_list.begin(), page_metadata_list.end(),
59 [](const physical_web::Metadata& left, 58 [](const physical_web::Metadata& left,
60 const physical_web::Metadata& right) { 59 const physical_web::Metadata& right) {
61 if (left.group_id != right.group_id) { 60 if (left.group_id != right.group_id) {
62 return left.group_id < right.group_id; 61 return left.group_id < right.group_id;
63 } 62 }
64 63
65 // We want closest pages first, so in case of same group_id we 64 // We want closest pages first, so in case of same group_id we
66 // sort by distance. 65 // sort by distance.
67 return CompareByDistance(left, right); 66 return CompareByDistance(left, right);
68 }); 67 });
69 68
70 // Each empty group_id must be treated as unique, so we do not apply 69 // Each empty group_id must be treated as unique, so we do not apply
71 // std::unique to them at all. 70 // std::unique to them at all.
72 auto nonempty_group_id_begin = std::find_if( 71 auto nonempty_group_id_begin =
73 page_metadata_list.begin(), page_metadata_list.end(), 72 std::find_if(page_metadata_list.begin(), page_metadata_list.end(),
74 [](const physical_web::Metadata& page) { 73 [](const physical_web::Metadata& page) {
75 return !page.group_id.empty(); 74 return !page.group_id.empty();
76 }); 75 });
77 76
78 auto new_end = std::unique( 77 auto new_end = std::unique(nonempty_group_id_begin, page_metadata_list.end(),
79 nonempty_group_id_begin, page_metadata_list.end(), 78 [](const physical_web::Metadata& left,
80 [](const physical_web::Metadata& left, 79 const physical_web::Metadata& right) {
81 const physical_web::Metadata& right) { 80 return left.group_id == right.group_id;
82 return left.group_id == right.group_id; 81 });
83 });
84 82
85 page_metadata_list.erase(new_end, page_metadata_list.end()); 83 page_metadata_list.erase(new_end, page_metadata_list.end());
86 } 84 }
87 85
88 } // namespace 86 } // namespace
89 87
90 PhysicalWebPageSuggestionsProvider::PhysicalWebPageSuggestionsProvider( 88 PhysicalWebPageSuggestionsProvider::PhysicalWebPageSuggestionsProvider(
91 ContentSuggestionsProvider::Observer* observer, 89 ContentSuggestionsProvider::Observer* observer,
92 physical_web::PhysicalWebDataSource* physical_web_data_source, 90 physical_web::PhysicalWebDataSource* physical_web_data_source,
93 PrefService* pref_service) 91 PrefService* pref_service)
94 : ContentSuggestionsProvider(observer), 92 : ContentSuggestionsProvider(observer),
95 category_status_(CategoryStatus::AVAILABLE), 93 category_status_(CategoryStatus::AVAILABLE),
96 provided_category_( 94 provided_category_(
97 Category::FromKnownCategory(KnownCategories::PHYSICAL_WEB_PAGES)), 95 Category::FromKnownCategory(KnownCategories::PHYSICAL_WEB_PAGES)),
98 physical_web_data_source_(physical_web_data_source), 96 physical_web_data_source_(physical_web_data_source),
99 pref_service_(pref_service) { 97 pref_service_(pref_service) {
100 observer->OnCategoryStatusChanged(this, provided_category_, category_status_); 98 observer->OnCategoryStatusChanged(this, provided_category_, category_status_);
101 physical_web_data_source_->RegisterListener(this, 99 physical_web_data_source_->RegisterListener(
102 physical_web::BACKGROUND_INTERMITTENT); 100 this, physical_web::BACKGROUND_INTERMITTENT);
103 // TODO(vitaliii): Rewrite initial fetch once crbug.com/667754 is resolved. 101 // TODO(vitaliii): Rewrite initial fetch once crbug.com/667754 is resolved.
104 FetchPhysicalWebPages(); 102 FetchPhysicalWebPages();
105 } 103 }
106 104
107 PhysicalWebPageSuggestionsProvider::~PhysicalWebPageSuggestionsProvider() { 105 PhysicalWebPageSuggestionsProvider::~PhysicalWebPageSuggestionsProvider() {
108 physical_web_data_source_->UnregisterListener(this); 106 physical_web_data_source_->UnregisterListener(this);
109 } 107 }
110 108
111 CategoryStatus PhysicalWebPageSuggestionsProvider::GetCategoryStatus( 109 CategoryStatus PhysicalWebPageSuggestionsProvider::GetCategoryStatus(
112 Category category) { 110 Category category) {
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 } 357 }
360 358
361 void PhysicalWebPageSuggestionsProvider::StoreDismissedIDsToPrefs( 359 void PhysicalWebPageSuggestionsProvider::StoreDismissedIDsToPrefs(
362 const std::set<std::string>& dismissed_ids) { 360 const std::set<std::string>& dismissed_ids) {
363 prefs::StoreDismissedIDsToPrefs(pref_service_, 361 prefs::StoreDismissedIDsToPrefs(pref_service_,
364 prefs::kDismissedPhysicalWebPageSuggestions, 362 prefs::kDismissedPhysicalWebPageSuggestions,
365 dismissed_ids); 363 dismissed_ids);
366 } 364 }
367 365
368 } // namespace ntp_snippets 366 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698