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

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

Issue 2228553003: a provider of Physical Web pages. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: added unittest Created 4 years, 4 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "components/ntp_snippets/physical_web_pages/physical_web_page_suggestio ns_provider.h"
6
7 #include "base/bind.h"
8 #include "base/strings/string_number_conversions.h"
9 #include "base/strings/string_util.h"
10 #include "base/strings/utf_string_conversions.h"
11
12 namespace ntp_snippets {
13
14 namespace {
15
16 const int kMaxSuggestionsCount = 10;
17
18 } // namespace
19
20 // TODO(vitaliii): remove when Physical Web C++ interface is provided.
21 UrlInfo::UrlInfo() {}
22 UrlInfo::~UrlInfo() {}
23 UrlInfo::UrlInfo(const UrlInfo& other) = default;
24
25 PhysicalWebPageSuggestionsProvider::PhysicalWebPageSuggestionsProvider(
26 ContentSuggestionsProvider::Observer* observer,
27 CategoryFactory* category_factory)
28 : ContentSuggestionsProvider(observer, category_factory),
29 category_status_(CategoryStatus::AVAILABLE_LOADING),
30 provided_category_(category_factory->FromKnownCategory(
31 KnownCategories::PHYSICAL_WEB_PAGES)) {
32 }
33
34 PhysicalWebPageSuggestionsProvider::~PhysicalWebPageSuggestionsProvider() {
35 }
36
37 void PhysicalWebPageSuggestionsProvider::OnDisplayableUrlsChanged(
38 const std::vector<UrlInfo>& urls) {
39 NotifyStatusChanged(CategoryStatus::AVAILABLE);
40 std::vector<ContentSuggestion> suggestions;
41
42 for (const auto& url_info: urls) {
Marc Treib 2016/08/10 16:22:03 I'd use the actual type (UrlInfo) here instead of
vitaliii 2016/08/11 12:15:24 Done.
43 if (static_cast<int>(suggestions.size()) >= kMaxSuggestionsCount) {
Marc Treib 2016/08/10 16:22:03 You could make kMaxSuggestionsCount a size_t and a
tschumann 2016/08/10 17:37:57 I'd probably leave the check at the beginning as y
vitaliii 2016/08/11 12:15:24 The check at the beginning handles kMaxSuggestions
Marc Treib 2016/08/11 12:53:09 ...which should never actually happen. But okay, f
vitaliii 2016/08/11 14:29:58 Acknowledged.
44 break;
45 }
46
47 ContentSuggestion suggestion(
48 MakeUniqueID(provided_category_, url_info.site_url.spec()),
49 url_info.site_url);
50
51 suggestion.set_title(base::UTF8ToUTF16(url_info.title));
52 suggestion.set_snippet_text(base::UTF8ToUTF16(url_info.description));
53 suggestion.set_publish_date(url_info.scan_time);
54 suggestion.set_publisher_name(base::UTF8ToUTF16(url_info.site_url.host()));
55 suggestions.emplace_back(std::move(suggestion));
56 }
57
58 observer()->OnNewSuggestions(this, provided_category_,
59 std::move(suggestions));
60 }
61
62 std::vector<Category>
63 PhysicalWebPageSuggestionsProvider::GetProvidedCategories() {
64 return std::vector<Category>({provided_category_});
65 }
66
67 CategoryStatus PhysicalWebPageSuggestionsProvider::GetCategoryStatus(
68 Category category) {
69 return category_status_;
70 }
71
72 void PhysicalWebPageSuggestionsProvider::DismissSuggestion(
73 const std::string& suggestion_id) {
74 // TODO(vitaliii): Implement this and then
75 // ClearDismissedSuggestionsForDebugging.
76 }
77
78 void PhysicalWebPageSuggestionsProvider::FetchSuggestionImage(
79 const std::string& suggestion_id,
80 const ImageFetchedCallback& callback) {
81 // TODO(vitaliii): Implement.
82 }
83
84 void PhysicalWebPageSuggestionsProvider::ClearCachedSuggestionsForDebugging(
85 Category category) {
86 // Ignored
87 }
88
89 std::vector<ContentSuggestion>
90 PhysicalWebPageSuggestionsProvider::GetDismissedSuggestionsForDebugging(
91 Category category) {
92 // Ignored.
Marc Treib 2016/08/10 16:22:03 This is really "not implemented" or "not supported
vitaliii 2016/08/11 12:15:24 Done.
93 return std::vector<ContentSuggestion>();
94 }
95
96 void PhysicalWebPageSuggestionsProvider::
97 ClearDismissedSuggestionsForDebugging(Category category) {
98 // TODO(vitaliii): Implement when dismissed suggestions are supported.
99 }
100
101 ////////////////////////////////////////////////////////////////////////////////
102 // Private methods
103
104 // Updates the |category_status_| and notifies the |observer_|, if necessary.
105 void PhysicalWebPageSuggestionsProvider::NotifyStatusChanged(
106 CategoryStatus new_status) {
107 if (category_status_ == new_status)
108 return;
109 category_status_ = new_status;
110 observer()->OnCategoryStatusChanged(this, provided_category_, new_status);
111 }
112
113 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698