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

Unified Diff: components/reading_list/ios/reading_list_entry.cc

Issue 2592043002: Add title update merge logic to reading list entry (Closed)
Patch Set: Update function comment Created 4 years 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/reading_list/ios/reading_list_entry.cc
diff --git a/components/reading_list/ios/reading_list_entry.cc b/components/reading_list/ios/reading_list_entry.cc
index b3fc0e0e033219e3e259a8ce3db976911efe7831..d4fdad3aaa3bdfb83bbd81f086b2097759edb859 100644
--- a/components/reading_list/ios/reading_list_entry.cc
+++ b/components/reading_list/ios/reading_list_entry.cc
@@ -51,6 +51,7 @@ ReadingListEntry::ReadingListEntry(const GURL& url,
0,
0,
0,
+ 0,
WAITING,
base::FilePath(),
0,
@@ -63,6 +64,7 @@ ReadingListEntry::ReadingListEntry(
int64_t creation_time,
int64_t first_read_time,
int64_t update_time,
+ int64_t update_title_time,
ReadingListEntry::DistillationState distilled_state,
const base::FilePath& distilled_path,
int failed_download_counter,
@@ -75,7 +77,8 @@ ReadingListEntry::ReadingListEntry(
failed_download_counter_(failed_download_counter),
creation_time_us_(creation_time),
first_read_time_us_(first_read_time),
- update_time_us_(update_time) {
+ update_time_us_(update_time),
+ update_title_time_us_(update_title_time) {
if (backoff) {
backoff_ = std::move(backoff);
} else {
@@ -83,9 +86,11 @@ ReadingListEntry::ReadingListEntry(
}
if (creation_time_us_ == 0) {
DCHECK(update_time_us_ == 0);
+ DCHECK(update_title_time_us_ == 0);
creation_time_us_ =
(base::Time::Now() - base::Time::UnixEpoch()).InMicroseconds();
update_time_us_ = creation_time_us_;
+ update_title_time_us_ = creation_time_us_;
}
DCHECK(!url.is_empty());
DCHECK(url.is_valid());
@@ -101,7 +106,8 @@ ReadingListEntry::ReadingListEntry(ReadingListEntry&& entry)
failed_download_counter_(std::move(entry.failed_download_counter_)),
creation_time_us_(std::move(entry.creation_time_us_)),
first_read_time_us_(std::move(entry.first_read_time_us_)),
- update_time_us_(std::move(entry.update_time_us_)) {}
+ update_time_us_(std::move(entry.update_time_us_)),
+ update_title_time_us_(std::move(entry.update_title_time_us_)) {}
ReadingListEntry::~ReadingListEntry() {}
@@ -140,6 +146,7 @@ ReadingListEntry& ReadingListEntry::operator=(ReadingListEntry&& other) {
creation_time_us_ = std::move(other.creation_time_us_);
first_read_time_us_ = std::move(other.first_read_time_us_);
update_time_us_ = std::move(other.update_time_us_);
+ update_title_time_us_ = std::move(other.update_title_time_us_);
return *this;
}
@@ -149,6 +156,8 @@ bool ReadingListEntry::operator==(const ReadingListEntry& other) const {
void ReadingListEntry::SetTitle(const std::string& title) {
title_ = title;
+ update_title_time_us_ =
+ (base::Time::Now() - base::Time::UnixEpoch()).InMicroseconds();
}
void ReadingListEntry::SetRead(bool read) {
@@ -195,6 +204,10 @@ int64_t ReadingListEntry::UpdateTime() const {
return update_time_us_;
}
+int64_t ReadingListEntry::UpdateTitleTime() const {
+ return update_title_time_us_;
+}
+
int64_t ReadingListEntry::CreationTime() const {
return creation_time_us_;
}
@@ -238,6 +251,11 @@ std::unique_ptr<ReadingListEntry> ReadingListEntry::FromReadingListLocal(
update_time_us = pb_entry.update_time_us();
}
+ int64_t update_title_time_us = 0;
+ if (pb_entry.has_update_title_time_us()) {
+ update_title_time_us = pb_entry.update_title_time_us();
+ }
+
State state = UNSEEN;
if (pb_entry.has_status()) {
switch (pb_entry.status()) {
@@ -298,8 +316,8 @@ std::unique_ptr<ReadingListEntry> ReadingListEntry::FromReadingListLocal(
return base::WrapUnique<ReadingListEntry>(new ReadingListEntry(
url, title, state, creation_time_us, first_read_time_us, update_time_us,
- distillation_state, distilled_path, failed_download_counter,
- std::move(backoff)));
+ update_title_time_us, distillation_state, distilled_path,
+ failed_download_counter, std::move(backoff)));
}
// static
@@ -332,6 +350,11 @@ std::unique_ptr<ReadingListEntry> ReadingListEntry::FromReadingListSpecifics(
update_time_us = pb_entry.update_time_us();
}
+ int64_t update_title_time_us = 0;
+ if (pb_entry.has_update_title_time_us()) {
+ update_title_time_us = pb_entry.update_title_time_us();
+ }
+
State state = UNSEEN;
if (pb_entry.has_status()) {
switch (pb_entry.status()) {
@@ -349,7 +372,7 @@ std::unique_ptr<ReadingListEntry> ReadingListEntry::FromReadingListSpecifics(
return base::WrapUnique<ReadingListEntry>(new ReadingListEntry(
url, title, state, creation_time_us, first_read_time_us, update_time_us,
- WAITING, base::FilePath(), 0, nullptr));
+ update_title_time_us, WAITING, base::FilePath(), 0, nullptr));
}
void ReadingListEntry::MergeWithEntry(const ReadingListEntry& other) {
@@ -361,10 +384,16 @@ void ReadingListEntry::MergeWithEntry(const ReadingListEntry& other) {
other.AsReadingListSpecifics());
#endif
DCHECK(url_ == other.url_);
- if (title_.compare(other.title_) < 0) {
- // Take the last in alphabetical order or the longer one.
- // This ensure empty string is replaced.
+ if (update_title_time_us_ < other.update_title_time_us_) {
+ // Take the most recent title updated.
title_ = std::move(other.title_);
+ update_title_time_us_ = std::move(other.update_title_time_us_);
+ } else if (update_title_time_us_ == other.update_title_time_us_) {
+ if (title_.compare(other.title_) < 0) {
+ // Take the last in alphabetical order or the longer one.
+ // This ensure empty string is replaced.
+ title_ = std::move(other.title_);
+ }
}
if (creation_time_us_ < other.creation_time_us_) {
creation_time_us_ = std::move(other.creation_time_us_);
@@ -411,6 +440,7 @@ ReadingListEntry::AsReadingListLocal() const {
pb_entry->set_creation_time_us(CreationTime());
pb_entry->set_first_read_time_us(FirstReadTime());
pb_entry->set_update_time_us(UpdateTime());
+ pb_entry->set_update_title_time_us(UpdateTitleTime());
switch (state_) {
case READ:
@@ -474,6 +504,7 @@ ReadingListEntry::AsReadingListSpecifics() const {
pb_entry->set_creation_time_us(CreationTime());
pb_entry->set_first_read_time_us(FirstReadTime());
pb_entry->set_update_time_us(UpdateTime());
+ pb_entry->set_update_title_time_us(UpdateTitleTime());
switch (state_) {
case READ:

Powered by Google App Engine
This is Rietveld 408576698