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

Side by Side Diff: components/ntp_snippets/offline_pages/offline_page_suggestions_provider.cc

Issue 2377663002: [NTP Snippets] Introduce ContentSuggestion::ID (Closed)
Patch Set: . Created 4 years, 2 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/offline_pages/offline_page_suggestions_provide r.h" 5 #include "components/ntp_snippets/offline_pages/offline_page_suggestions_provide r.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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 /*show_if_empty=*/false); 128 /*show_if_empty=*/false);
129 } 129 }
130 NOTREACHED() << "Unknown category " << category.id(); 130 NOTREACHED() << "Unknown category " << category.id();
131 return CategoryInfo(base::string16(), 131 return CategoryInfo(base::string16(),
132 ContentSuggestionsCardLayout::MINIMAL_CARD, 132 ContentSuggestionsCardLayout::MINIMAL_CARD,
133 /*has_more_button=*/false, 133 /*has_more_button=*/false,
134 /*show_if_empty=*/false); 134 /*show_if_empty=*/false);
135 } 135 }
136 136
137 void OfflinePageSuggestionsProvider::DismissSuggestion( 137 void OfflinePageSuggestionsProvider::DismissSuggestion(
138 const std::string& suggestion_id) { 138 const ContentSuggestion::ID& suggestion_id) {
139 Category category = GetCategoryFromUniqueID(suggestion_id); 139 std::set<std::string> dismissed_ids =
140 std::string offline_page_id = GetWithinCategoryIDFromUniqueID(suggestion_id); 140 ReadDismissedIDsFromPrefs(suggestion_id.category());
141 std::set<std::string> dismissed_ids = ReadDismissedIDsFromPrefs(category); 141 dismissed_ids.insert(suggestion_id.within_category_id());
142 dismissed_ids.insert(offline_page_id); 142 StoreDismissedIDsToPrefs(suggestion_id.category(), dismissed_ids);
143 StoreDismissedIDsToPrefs(category, dismissed_ids);
144 } 143 }
145 144
146 void OfflinePageSuggestionsProvider::FetchSuggestionImage( 145 void OfflinePageSuggestionsProvider::FetchSuggestionImage(
147 const std::string& suggestion_id, 146 const ContentSuggestion::ID& suggestion_id,
148 const ImageFetchedCallback& callback) { 147 const ImageFetchedCallback& callback) {
149 // TODO(pke): Fetch proper thumbnail from OfflinePageModel once it's available 148 // TODO(pke): Fetch proper thumbnail from OfflinePageModel once it's available
150 // there. 149 // there.
151 base::ThreadTaskRunnerHandle::Get()->PostTask( 150 base::ThreadTaskRunnerHandle::Get()->PostTask(
152 FROM_HERE, base::Bind(callback, gfx::Image())); 151 FROM_HERE, base::Bind(callback, gfx::Image()));
153 } 152 }
154 153
155 void OfflinePageSuggestionsProvider::ClearHistory( 154 void OfflinePageSuggestionsProvider::ClearHistory(
156 base::Time begin, 155 base::Time begin,
157 base::Time end, 156 base::Time end,
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 NOTREACHED() << "Unknown category " << category.id(); 306 NOTREACHED() << "Unknown category " << category.id();
308 } 307 }
309 } 308 }
310 309
311 ContentSuggestion OfflinePageSuggestionsProvider::ConvertOfflinePage( 310 ContentSuggestion OfflinePageSuggestionsProvider::ConvertOfflinePage(
312 Category category, 311 Category category,
313 const OfflinePageItem& offline_page) const { 312 const OfflinePageItem& offline_page) const {
314 // TODO(pke): Make sure the URL is actually opened as an offline URL. 313 // TODO(pke): Make sure the URL is actually opened as an offline URL.
315 // Currently, the browser opens the offline URL and then immediately 314 // Currently, the browser opens the offline URL and then immediately
316 // redirects to the online URL if the device is online. 315 // redirects to the online URL if the device is online.
317 ContentSuggestion suggestion( 316 ContentSuggestion suggestion(category,
318 MakeUniqueID(category, base::IntToString(offline_page.offline_id)), 317 base::IntToString(offline_page.offline_id),
319 offline_page.GetOfflineURL()); 318 offline_page.GetOfflineURL());
320 319
321 if (offline_page.title.empty()) { 320 if (offline_page.title.empty()) {
322 // TODO(pke): Remove this fallback once the OfflinePageModel provides titles 321 // TODO(pke): Remove this fallback once the OfflinePageModel provides titles
323 // for all (relevant) OfflinePageItems. 322 // for all (relevant) OfflinePageItems.
324 suggestion.set_title(base::UTF8ToUTF16(offline_page.url.spec())); 323 suggestion.set_title(base::UTF8ToUTF16(offline_page.url.spec()));
325 } else { 324 } else {
326 suggestion.set_title(offline_page.title); 325 suggestion.set_title(offline_page.title);
327 } 326 }
328 suggestion.set_publish_date(offline_page.creation_time); 327 suggestion.set_publish_date(offline_page.creation_time);
329 suggestion.set_publisher_name(base::UTF8ToUTF16(offline_page.url.host())); 328 suggestion.set_publisher_name(base::UTF8ToUTF16(offline_page.url.host()));
(...skipping 11 matching lines...) Expand all
341 suggestions.push_back(ConvertOfflinePage(category, *offline_page_item)); 340 suggestions.push_back(ConvertOfflinePage(category, *offline_page_item));
342 if (suggestions.size() == kMaxSuggestionsCount) 341 if (suggestions.size() == kMaxSuggestionsCount)
343 break; 342 break;
344 } 343 }
345 return suggestions; 344 return suggestions;
346 } 345 }
347 346
348 void OfflinePageSuggestionsProvider::InvalidateSuggestion(Category category, 347 void OfflinePageSuggestionsProvider::InvalidateSuggestion(Category category,
349 int64_t offline_id) { 348 int64_t offline_id) {
350 std::string offline_page_id = base::IntToString(offline_id); 349 std::string offline_page_id = base::IntToString(offline_id);
351 observer()->OnSuggestionInvalidated(this, category, 350 observer()->OnSuggestionInvalidated(
352 MakeUniqueID(category, offline_page_id)); 351 this, ContentSuggestion::ID(category, offline_page_id));
353 352
354 std::set<std::string> dismissed_ids = ReadDismissedIDsFromPrefs(category); 353 std::set<std::string> dismissed_ids = ReadDismissedIDsFromPrefs(category);
355 auto it = 354 auto it =
356 std::find(dismissed_ids.begin(), dismissed_ids.end(), offline_page_id); 355 std::find(dismissed_ids.begin(), dismissed_ids.end(), offline_page_id);
357 if (it != dismissed_ids.end()) { 356 if (it != dismissed_ids.end()) {
358 dismissed_ids.erase(it); 357 dismissed_ids.erase(it);
359 StoreDismissedIDsToPrefs(category, dismissed_ids); 358 StoreDismissedIDsToPrefs(category, dismissed_ids);
360 } 359 }
361 } 360 }
362 361
(...skipping 14 matching lines...) Expand all
377 } 376 }
378 377
379 void OfflinePageSuggestionsProvider::StoreDismissedIDsToPrefs( 378 void OfflinePageSuggestionsProvider::StoreDismissedIDsToPrefs(
380 Category category, 379 Category category,
381 const std::set<std::string>& dismissed_ids) { 380 const std::set<std::string>& dismissed_ids) {
382 prefs::StoreDismissedIDsToPrefs(pref_service_, GetDismissedPref(category), 381 prefs::StoreDismissedIDsToPrefs(pref_service_, GetDismissedPref(category),
383 dismissed_ids); 382 dismissed_ids);
384 } 383 }
385 384
386 } // namespace ntp_snippets 385 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698