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

Unified Diff: components/ntp_snippets/ntp_snippets_service.cc

Issue 1921553004: Add favicon and publisher name to snippet cards (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
Index: components/ntp_snippets/ntp_snippets_service.cc
diff --git a/components/ntp_snippets/ntp_snippets_service.cc b/components/ntp_snippets/ntp_snippets_service.cc
index af047ac3af7da517dda41c378aa711cfd3cecd9c..2a3be2ee63132f71b99b19aafbe0b9a15ea4c5c0 100644
--- a/components/ntp_snippets/ntp_snippets_service.cc
+++ b/components/ntp_snippets/ntp_snippets_service.cc
@@ -13,6 +13,7 @@
#include "base/files/file_util.h"
#include "base/json/json_reader.h"
#include "base/location.h"
+#include "base/metrics/sparse_histogram.h"
#include "base/path_service.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
@@ -128,10 +129,14 @@ std::set<std::string> GetSuggestionsHostsImpl(
const char kContentInfo[] = "contentInfo";
-// Parses snippets from |list| and adds them to |snippets|. Returns true on
-// success, false if anything went wrong.
+// Parses snippets from |list| and adds them to |snippets|. |downloaded| should
+// be true if we are adding snippets that have been freshly downloaded, and
+// false if we are loading from prefs. Returns true on success, false if
+// anything went wrong.
bool AddSnippetsFromListValue(const base::ListValue& list,
- NTPSnippetsService::NTPSnippetStorage* snippets) {
+ NTPSnippetsService::NTPSnippetStorage* snippets,
+ bool downloaded) {
+ int num_incomplete_snippets = 0;
for (const base::Value* const value : list) {
const base::DictionaryValue* dict = nullptr;
if (!value->GetAsDictionary(&dict))
@@ -145,8 +150,29 @@ bool AddSnippetsFromListValue(const base::ListValue& list,
if (!snippet)
return false;
- snippets->push_back(std::move(snippet));
+ // Fill in default publish/expiry dates where required.
Marc Treib 2016/04/29 12:11:20 This will now also run when we're loading snippets
May 2016/04/29 12:19:09 We should never store snippets without a publish/e
Marc Treib 2016/04/29 12:33:32 Yes, please. It "should" be a no-op in those cases
May 2016/04/29 17:00:15 Sure, moved the snippet discarding logic into Load
+ if (snippet->publish_date().is_null())
+ snippet->set_publish_date(base::Time::Now());
+ if (snippet->expiry_date().is_null()) {
+ snippet->set_expiry_date(
+ snippet->publish_date() +
+ base::TimeDelta::FromMinutes(kDefaultExpiryTimeMins));
+ }
+
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kAddIncompleteSnippets)) {
+ snippets->push_back(std::move(snippet));
+ } else if (snippet->is_complete()) {
+ snippets->push_back(std::move(snippet));
+ } else {
+ ++num_incomplete_snippets;
+ }
}
+
+ if (num_incomplete_snippets > 0)
+ UMA_HISTOGRAM_SPARSE_SLOWLY("NewTabPage.Snippets.IncompleteSnippets",
+ num_incomplete_snippets);
+
return true;
}
@@ -284,10 +310,11 @@ std::set<std::string> NTPSnippetsService::GetSuggestionsHosts() const {
}
bool NTPSnippetsService::DiscardSnippet(const GURL& url) {
- auto it = std::find_if(snippets_.begin(), snippets_.end(),
- [&url](const std::unique_ptr<NTPSnippet>& snippet) {
- return snippet->url() == url;
- });
+ auto it =
+ std::find_if(snippets_.begin(), snippets_.end(),
+ [&url](const std::unique_ptr<NTPSnippet>& snippet) {
+ return snippet->url() == url || snippet->best_source().url;
Marc Treib 2016/04/29 12:11:20 This will just check if |snippet->best_source().ur
May 2016/04/29 12:19:09 Ack -- fixed. And apparently it can be turned into
+ });
if (it == snippets_.end())
return false;
discarded_snippets_.push_back(std::move(*it));
@@ -394,7 +421,7 @@ bool NTPSnippetsService::LoadFromValue(const base::Value& value) {
bool NTPSnippetsService::LoadFromListValue(const base::ListValue& list) {
NTPSnippetStorage new_snippets;
- if (!AddSnippetsFromListValue(list, &new_snippets))
+ if (!AddSnippetsFromListValue(list, &new_snippets, true))
return false;
// Remove new snippets that we already have, or that have been discarded.
@@ -406,17 +433,6 @@ bool NTPSnippetsService::LoadFromListValue(const base::ListValue& list) {
}),
new_snippets.end());
- // Fill in default publish/expiry dates where required.
- for (std::unique_ptr<NTPSnippet>& snippet : new_snippets) {
- if (snippet->publish_date().is_null())
- snippet->set_publish_date(base::Time::Now());
- if (snippet->expiry_date().is_null()) {
- snippet->set_expiry_date(
- snippet->publish_date() +
- base::TimeDelta::FromMinutes(kDefaultExpiryTimeMins));
- }
- }
-
// Insert the new snippets at the front.
snippets_.insert(snippets_.begin(),
std::make_move_iterator(new_snippets.begin()),
@@ -444,8 +460,8 @@ void NTPSnippetsService::StoreSnippetsToPrefs() {
void NTPSnippetsService::LoadDiscardedSnippetsFromPrefs() {
discarded_snippets_.clear();
bool success = AddSnippetsFromListValue(
- *pref_service_->GetList(prefs::kDiscardedSnippets),
- &discarded_snippets_);
+ *pref_service_->GetList(prefs::kDiscardedSnippets), &discarded_snippets_,
+ false);
DCHECK(success) << "Failed to parse discarded snippets from prefs";
}

Powered by Google App Engine
This is Rietveld 408576698