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

Side by Side Diff: components/reading_list/ios/reading_list_entry.cc

Issue 2707043002: [Reading List iOS] Store distillation date and size. (Closed)
Patch Set: Created 3 years, 10 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/reading_list/ios/reading_list_entry.h" 5 #include "components/reading_list/ios/reading_list_entry.h"
6 6
7 #include "base/json/json_string_value_serializer.h" 7 #include "base/json/json_string_value_serializer.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "components/reading_list/ios/offline_url_utils.h" 9 #include "components/reading_list/ios/offline_url_utils.h"
10 #include "components/reading_list/ios/proto/reading_list.pb.h" 10 #include "components/reading_list/ios/proto/reading_list.pb.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 title, 49 title,
50 UNSEEN, 50 UNSEEN,
51 0, 51 0,
52 0, 52 0,
53 0, 53 0,
54 0, 54 0,
55 WAITING, 55 WAITING,
56 base::FilePath(), 56 base::FilePath(),
57 GURL(), 57 GURL(),
58 0, 58 0,
59 0,
60 0,
59 std::move(backoff)) {} 61 std::move(backoff)) {}
60 62
61 ReadingListEntry::ReadingListEntry( 63 ReadingListEntry::ReadingListEntry(
62 const GURL& url, 64 const GURL& url,
63 const std::string& title, 65 const std::string& title,
64 State state, 66 State state,
65 int64_t creation_time, 67 int64_t creation_time,
66 int64_t first_read_time, 68 int64_t first_read_time,
67 int64_t update_time, 69 int64_t update_time,
68 int64_t update_title_time, 70 int64_t update_title_time,
69 ReadingListEntry::DistillationState distilled_state, 71 ReadingListEntry::DistillationState distilled_state,
70 const base::FilePath& distilled_path, 72 const base::FilePath& distilled_path,
71 const GURL& distilled_url, 73 const GURL& distilled_url,
74 int64_t distillation_time,
75 int64_t distillation_size,
72 int failed_download_counter, 76 int failed_download_counter,
73 std::unique_ptr<net::BackoffEntry> backoff) 77 std::unique_ptr<net::BackoffEntry> backoff)
74 : url_(url), 78 : url_(url),
75 title_(title), 79 title_(title),
76 state_(state), 80 state_(state),
77 distilled_path_(distilled_path), 81 distilled_path_(distilled_path),
78 distilled_url_(distilled_url), 82 distilled_url_(distilled_url),
79 distilled_state_(distilled_state), 83 distilled_state_(distilled_state),
80 failed_download_counter_(failed_download_counter), 84 failed_download_counter_(failed_download_counter),
81 creation_time_us_(creation_time), 85 creation_time_us_(creation_time),
82 first_read_time_us_(first_read_time), 86 first_read_time_us_(first_read_time),
83 update_time_us_(update_time), 87 update_time_us_(update_time),
84 update_title_time_us_(update_title_time) { 88 update_title_time_us_(update_title_time),
89 distillation_time_us_(distillation_time),
90 distillation_size_(distillation_size) {
85 if (backoff) { 91 if (backoff) {
86 backoff_ = std::move(backoff); 92 backoff_ = std::move(backoff);
87 } else { 93 } else {
88 backoff_ = base::MakeUnique<net::BackoffEntry>(&kBackoffPolicy); 94 backoff_ = base::MakeUnique<net::BackoffEntry>(&kBackoffPolicy);
89 } 95 }
90 if (creation_time_us_ == 0) { 96 if (creation_time_us_ == 0) {
91 DCHECK(update_time_us_ == 0); 97 DCHECK(update_time_us_ == 0);
92 DCHECK(update_title_time_us_ == 0); 98 DCHECK(update_title_time_us_ == 0);
93 creation_time_us_ = 99 creation_time_us_ =
94 (base::Time::Now() - base::Time::UnixEpoch()).InMicroseconds(); 100 (base::Time::Now() - base::Time::UnixEpoch()).InMicroseconds();
95 update_time_us_ = creation_time_us_; 101 update_time_us_ = creation_time_us_;
96 update_title_time_us_ = creation_time_us_; 102 update_title_time_us_ = creation_time_us_;
97 } 103 }
98 DCHECK(!url.is_empty()); 104 DCHECK(!url.is_empty());
99 DCHECK(url.is_valid()); 105 DCHECK(url.is_valid());
100 } 106 }
101 107
102 ReadingListEntry::ReadingListEntry(ReadingListEntry&& entry) 108 ReadingListEntry::ReadingListEntry(ReadingListEntry&& entry)
103 : url_(std::move(entry.url_)), 109 : url_(std::move(entry.url_)),
104 title_(std::move(entry.title_)), 110 title_(std::move(entry.title_)),
105 state_(std::move(entry.state_)), 111 state_(std::move(entry.state_)),
106 distilled_path_(std::move(entry.distilled_path_)), 112 distilled_path_(std::move(entry.distilled_path_)),
107 distilled_url_(std::move(entry.distilled_url_)), 113 distilled_url_(std::move(entry.distilled_url_)),
108 distilled_state_(std::move(entry.distilled_state_)), 114 distilled_state_(std::move(entry.distilled_state_)),
109 backoff_(std::move(entry.backoff_)), 115 backoff_(std::move(entry.backoff_)),
110 failed_download_counter_(std::move(entry.failed_download_counter_)), 116 failed_download_counter_(std::move(entry.failed_download_counter_)),
111 creation_time_us_(std::move(entry.creation_time_us_)), 117 creation_time_us_(std::move(entry.creation_time_us_)),
112 first_read_time_us_(std::move(entry.first_read_time_us_)), 118 first_read_time_us_(std::move(entry.first_read_time_us_)),
113 update_time_us_(std::move(entry.update_time_us_)), 119 update_time_us_(std::move(entry.update_time_us_)),
114 update_title_time_us_(std::move(entry.update_title_time_us_)) {} 120 update_title_time_us_(std::move(entry.update_title_time_us_)),
121 distillation_time_us_(std::move(entry.distillation_time_us_)),
122 distillation_size_(std::move(entry.distillation_size_)) {}
115 123
116 ReadingListEntry::~ReadingListEntry() {} 124 ReadingListEntry::~ReadingListEntry() {}
117 125
118 const GURL& ReadingListEntry::URL() const { 126 const GURL& ReadingListEntry::URL() const {
119 return url_; 127 return url_;
120 } 128 }
121 129
122 const std::string& ReadingListEntry::Title() const { 130 const std::string& ReadingListEntry::Title() const {
123 return title_; 131 return title_;
124 } 132 }
125 133
126 ReadingListEntry::DistillationState ReadingListEntry::DistilledState() const { 134 ReadingListEntry::DistillationState ReadingListEntry::DistilledState() const {
127 return distilled_state_; 135 return distilled_state_;
128 } 136 }
129 137
130 const base::FilePath& ReadingListEntry::DistilledPath() const { 138 const base::FilePath& ReadingListEntry::DistilledPath() const {
131 return distilled_path_; 139 return distilled_path_;
132 } 140 }
133 141
134 const GURL& ReadingListEntry::DistilledURL() const { 142 const GURL& ReadingListEntry::DistilledURL() const {
135 return distilled_url_; 143 return distilled_url_;
136 } 144 }
137 145
146 int64_t ReadingListEntry::DistillationTime() const {
147 return distillation_time_us_;
148 }
149
150 int64_t ReadingListEntry::DistillationSize() const {
151 return distillation_size_;
152 }
153
138 base::TimeDelta ReadingListEntry::TimeUntilNextTry() const { 154 base::TimeDelta ReadingListEntry::TimeUntilNextTry() const {
139 return backoff_->GetTimeUntilRelease(); 155 return backoff_->GetTimeUntilRelease();
140 } 156 }
141 157
142 int ReadingListEntry::FailedDownloadCounter() const { 158 int ReadingListEntry::FailedDownloadCounter() const {
143 return failed_download_counter_; 159 return failed_download_counter_;
144 } 160 }
145 161
146 ReadingListEntry& ReadingListEntry::operator=(ReadingListEntry&& other) { 162 ReadingListEntry& ReadingListEntry::operator=(ReadingListEntry&& other) {
147 url_ = std::move(other.url_); 163 url_ = std::move(other.url_);
148 title_ = std::move(other.title_); 164 title_ = std::move(other.title_);
149 distilled_path_ = std::move(other.distilled_path_); 165 distilled_path_ = std::move(other.distilled_path_);
150 distilled_url_ = std::move(other.distilled_url_); 166 distilled_url_ = std::move(other.distilled_url_);
151 distilled_state_ = std::move(other.distilled_state_); 167 distilled_state_ = std::move(other.distilled_state_);
152 backoff_ = std::move(other.backoff_); 168 backoff_ = std::move(other.backoff_);
153 state_ = std::move(other.state_); 169 state_ = std::move(other.state_);
154 failed_download_counter_ = std::move(other.failed_download_counter_); 170 failed_download_counter_ = std::move(other.failed_download_counter_);
155 creation_time_us_ = std::move(other.creation_time_us_); 171 creation_time_us_ = std::move(other.creation_time_us_);
156 first_read_time_us_ = std::move(other.first_read_time_us_); 172 first_read_time_us_ = std::move(other.first_read_time_us_);
157 update_time_us_ = std::move(other.update_time_us_); 173 update_time_us_ = std::move(other.update_time_us_);
158 update_title_time_us_ = std::move(other.update_title_time_us_); 174 update_title_time_us_ = std::move(other.update_title_time_us_);
175 distillation_time_us_ = std::move(other.distillation_time_us_);
176 distillation_size_ = std::move(other.distillation_size_);
159 return *this; 177 return *this;
160 } 178 }
161 179
162 bool ReadingListEntry::operator==(const ReadingListEntry& other) const { 180 bool ReadingListEntry::operator==(const ReadingListEntry& other) const {
163 return url_ == other.url_; 181 return url_ == other.url_;
164 } 182 }
165 183
166 void ReadingListEntry::SetTitle(const std::string& title) { 184 void ReadingListEntry::SetTitle(const std::string& title) {
167 title_ = title; 185 title_ = title;
168 update_title_time_us_ = 186 update_title_time_us_ =
(...skipping 19 matching lines...) Expand all
188 206
189 bool ReadingListEntry::IsRead() const { 207 bool ReadingListEntry::IsRead() const {
190 return state_ == READ; 208 return state_ == READ;
191 } 209 }
192 210
193 bool ReadingListEntry::HasBeenSeen() const { 211 bool ReadingListEntry::HasBeenSeen() const {
194 return state_ != UNSEEN; 212 return state_ != UNSEEN;
195 } 213 }
196 214
197 void ReadingListEntry::SetDistilledInfo(const base::FilePath& path, 215 void ReadingListEntry::SetDistilledInfo(const base::FilePath& path,
198 const GURL& distilled_url) { 216 const GURL& distilled_url,
217 int64_t size) {
199 DCHECK(!path.empty()); 218 DCHECK(!path.empty());
200 DCHECK(distilled_url.is_valid()); 219 DCHECK(distilled_url.is_valid());
201 distilled_path_ = path; 220 distilled_path_ = path;
202 distilled_state_ = PROCESSED; 221 distilled_state_ = PROCESSED;
203 distilled_url_ = distilled_url; 222 distilled_url_ = distilled_url;
223 distillation_time_us_ =
224 (base::Time::Now() - base::Time::UnixEpoch()).InMicroseconds();
225 distillation_size_ = size;
204 backoff_->Reset(); 226 backoff_->Reset();
205 failed_download_counter_ = 0; 227 failed_download_counter_ = 0;
206 } 228 }
207 229
208 void ReadingListEntry::SetDistilledState(DistillationState distilled_state) { 230 void ReadingListEntry::SetDistilledState(DistillationState distilled_state) {
209 DCHECK(distilled_state != PROCESSED); // use SetDistilledPath instead. 231 DCHECK(distilled_state != PROCESSED); // use SetDistilledPath instead.
210 DCHECK(distilled_state != WAITING); 232 DCHECK(distilled_state != WAITING);
211 // Increase time until next retry exponentially if the state change from a 233 // Increase time until next retry exponentially if the state change from a
212 // non-error state to an error state. 234 // non-error state to an error state.
213 if ((distilled_state == WILL_RETRY || distilled_state == ERROR) && 235 if ((distilled_state == WILL_RETRY || distilled_state == ERROR) &&
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 base::FilePath distilled_path; 339 base::FilePath distilled_path;
318 if (pb_entry.has_distilled_path()) { 340 if (pb_entry.has_distilled_path()) {
319 distilled_path = base::FilePath(pb_entry.distilled_path()); 341 distilled_path = base::FilePath(pb_entry.distilled_path());
320 } 342 }
321 343
322 GURL distilled_url; 344 GURL distilled_url;
323 if (pb_entry.has_distilled_url()) { 345 if (pb_entry.has_distilled_url()) {
324 distilled_url = GURL(pb_entry.distilled_url()); 346 distilled_url = GURL(pb_entry.distilled_url());
325 } 347 }
326 348
349 int64_t distillation_time_us = 0;
350 if (pb_entry.has_distillation_time_us()) {
351 distillation_time_us = pb_entry.distillation_time_us();
352 }
353
354 int64_t distillation_size = 0;
355 if (pb_entry.has_distillation_size()) {
356 distillation_size = pb_entry.distillation_size();
357 }
358
327 int64_t failed_download_counter = 0; 359 int64_t failed_download_counter = 0;
328 if (pb_entry.has_failed_download_counter()) { 360 if (pb_entry.has_failed_download_counter()) {
329 failed_download_counter = pb_entry.failed_download_counter(); 361 failed_download_counter = pb_entry.failed_download_counter();
330 } 362 }
331 363
332 std::unique_ptr<net::BackoffEntry> backoff; 364 std::unique_ptr<net::BackoffEntry> backoff;
333 if (pb_entry.has_backoff()) { 365 if (pb_entry.has_backoff()) {
334 JSONStringValueDeserializer deserializer(pb_entry.backoff()); 366 JSONStringValueDeserializer deserializer(pb_entry.backoff());
335 std::unique_ptr<base::Value> value( 367 std::unique_ptr<base::Value> value(
336 deserializer.Deserialize(nullptr, nullptr)); 368 deserializer.Deserialize(nullptr, nullptr));
337 if (value) { 369 if (value) {
338 backoff = net::BackoffEntrySerializer::DeserializeFromValue( 370 backoff = net::BackoffEntrySerializer::DeserializeFromValue(
339 *value, &kBackoffPolicy, nullptr, base::Time::Now()); 371 *value, &kBackoffPolicy, nullptr, base::Time::Now());
340 } 372 }
341 } 373 }
342 374
343 return base::WrapUnique<ReadingListEntry>(new ReadingListEntry( 375 return base::WrapUnique<ReadingListEntry>(new ReadingListEntry(
344 url, title, state, creation_time_us, first_read_time_us, update_time_us, 376 url, title, state, creation_time_us, first_read_time_us, update_time_us,
345 update_title_time_us, distillation_state, distilled_path, distilled_url, 377 update_title_time_us, distillation_state, distilled_path, distilled_url,
346 failed_download_counter, std::move(backoff))); 378 distillation_time_us, distillation_size, failed_download_counter,
379 std::move(backoff)));
347 } 380 }
348 381
349 // static 382 // static
350 std::unique_ptr<ReadingListEntry> ReadingListEntry::FromReadingListSpecifics( 383 std::unique_ptr<ReadingListEntry> ReadingListEntry::FromReadingListSpecifics(
351 const sync_pb::ReadingListSpecifics& pb_entry) { 384 const sync_pb::ReadingListSpecifics& pb_entry) {
352 if (!pb_entry.has_url()) { 385 if (!pb_entry.has_url()) {
353 return nullptr; 386 return nullptr;
354 } 387 }
355 GURL url(pb_entry.url()); 388 GURL url(pb_entry.url());
356 if (url.is_empty() || !url.is_valid()) { 389 if (url.is_empty() || !url.is_valid()) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 state = UNREAD; 424 state = UNREAD;
392 break; 425 break;
393 case sync_pb::ReadingListSpecifics::UNSEEN: 426 case sync_pb::ReadingListSpecifics::UNSEEN:
394 state = UNSEEN; 427 state = UNSEEN;
395 break; 428 break;
396 } 429 }
397 } 430 }
398 431
399 return base::WrapUnique<ReadingListEntry>(new ReadingListEntry( 432 return base::WrapUnique<ReadingListEntry>(new ReadingListEntry(
400 url, title, state, creation_time_us, first_read_time_us, update_time_us, 433 url, title, state, creation_time_us, first_read_time_us, update_time_us,
401 update_title_time_us, WAITING, base::FilePath(), GURL(), 0, nullptr)); 434 update_title_time_us, WAITING, base::FilePath(), GURL(), 0, 0, 0,
435 nullptr));
402 } 436 }
403 437
404 void ReadingListEntry::MergeWithEntry(const ReadingListEntry& other) { 438 void ReadingListEntry::MergeWithEntry(const ReadingListEntry& other) {
405 #if !defined(NDEBUG) 439 #if !defined(NDEBUG)
406 // Checks that the result entry respects the sync order. 440 // Checks that the result entry respects the sync order.
407 std::unique_ptr<sync_pb::ReadingListSpecifics> old_this_pb( 441 std::unique_ptr<sync_pb::ReadingListSpecifics> old_this_pb(
408 AsReadingListSpecifics()); 442 AsReadingListSpecifics());
409 std::unique_ptr<sync_pb::ReadingListSpecifics> other_pb( 443 std::unique_ptr<sync_pb::ReadingListSpecifics> other_pb(
410 other.AsReadingListSpecifics()); 444 other.AsReadingListSpecifics());
411 #endif 445 #endif
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 distilation_state = reading_list::ReadingListLocal::ERROR; 532 distilation_state = reading_list::ReadingListLocal::ERROR;
499 break; 533 break;
500 } 534 }
501 pb_entry->set_distillation_state(distilation_state); 535 pb_entry->set_distillation_state(distilation_state);
502 if (!DistilledPath().empty()) { 536 if (!DistilledPath().empty()) {
503 pb_entry->set_distilled_path(DistilledPath().value()); 537 pb_entry->set_distilled_path(DistilledPath().value());
504 } 538 }
505 if (DistilledURL().is_valid()) { 539 if (DistilledURL().is_valid()) {
506 pb_entry->set_distilled_url(DistilledURL().spec()); 540 pb_entry->set_distilled_url(DistilledURL().spec());
507 } 541 }
542 if (DistillationTime()) {
543 pb_entry->set_distillation_time_us(DistillationTime());
544 }
545 if (DistillationSize()) {
546 pb_entry->set_distillation_size(DistillationSize());
547 }
548
508 pb_entry->set_failed_download_counter(failed_download_counter_); 549 pb_entry->set_failed_download_counter(failed_download_counter_);
509 550
510 if (backoff_) { 551 if (backoff_) {
511 std::unique_ptr<base::Value> backoff = 552 std::unique_ptr<base::Value> backoff =
512 net::BackoffEntrySerializer::SerializeToValue(*backoff_, 553 net::BackoffEntrySerializer::SerializeToValue(*backoff_,
513 base::Time::Now()); 554 base::Time::Now());
514 555
515 std::string output; 556 std::string output;
516 JSONStringValueSerializer serializer(&output); 557 JSONStringValueSerializer serializer(&output);
517 serializer.Serialize(*backoff); 558 serializer.Serialize(*backoff);
(...skipping 24 matching lines...) Expand all
542 case UNREAD: 583 case UNREAD:
543 pb_entry->set_status(sync_pb::ReadingListSpecifics::UNREAD); 584 pb_entry->set_status(sync_pb::ReadingListSpecifics::UNREAD);
544 break; 585 break;
545 case UNSEEN: 586 case UNSEEN:
546 pb_entry->set_status(sync_pb::ReadingListSpecifics::UNSEEN); 587 pb_entry->set_status(sync_pb::ReadingListSpecifics::UNSEEN);
547 break; 588 break;
548 } 589 }
549 590
550 return pb_entry; 591 return pb_entry;
551 } 592 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698