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

Side by Side Diff: ios/chrome/browser/reading_list/reading_list_entry.cc

Issue 2351113003: Reading list downloader retries on recoverable error (Closed)
Patch Set: Use weak pointer Created 4 years, 3 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 "ios/chrome/browser/reading_list/reading_list_entry.h" 5 #include "ios/chrome/browser/reading_list/reading_list_entry.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 8
9 const net::BackoffEntry::Policy ReadingListEntry::kBackoffPolicy = { 9 const net::BackoffEntry::Policy ReadingListEntry::kBackoffPolicy = {
10 // Number of initial errors (in sequence) to ignore before applying 10 // Number of initial errors (in sequence) to ignore before applying
(...skipping 19 matching lines...) Expand all
30 30
31 false, // Don't use initial delay unless the last request was an error. 31 false, // Don't use initial delay unless the last request was an error.
32 }; 32 };
33 33
34 ReadingListEntry::ReadingListEntry(const GURL& url, const std::string& title) 34 ReadingListEntry::ReadingListEntry(const GURL& url, const std::string& title)
35 : ReadingListEntry(url, title, nullptr){}; 35 : ReadingListEntry(url, title, nullptr){};
36 36
37 ReadingListEntry::ReadingListEntry(const GURL& url, 37 ReadingListEntry::ReadingListEntry(const GURL& url,
38 const std::string& title, 38 const std::string& title,
39 std::unique_ptr<net::BackoffEntry> backoff) 39 std::unique_ptr<net::BackoffEntry> backoff)
40 : url_(url), title_(title), distilled_state_(WAITING) { 40 : url_(url),
41 title_(title),
42 distilled_state_(WAITING),
43 failed_download_counter_(0) {
41 if (backoff) { 44 if (backoff) {
42 backoff_ = std::move(backoff); 45 backoff_ = std::move(backoff);
43 } else { 46 } else {
44 backoff_ = base::MakeUnique<net::BackoffEntry>(&kBackoffPolicy); 47 backoff_ = base::MakeUnique<net::BackoffEntry>(&kBackoffPolicy);
45 } 48 }
46 DCHECK(!url.is_empty()); 49 DCHECK(!url.is_empty());
47 DCHECK(url.is_valid()); 50 DCHECK(url.is_valid());
48 } 51 }
49 52
50 ReadingListEntry::ReadingListEntry(ReadingListEntry&& entry) 53 ReadingListEntry::ReadingListEntry(ReadingListEntry&& entry)
51 : url_(std::move(entry.url_)), 54 : url_(std::move(entry.url_)),
52 title_(std::move(entry.title_)), 55 title_(std::move(entry.title_)),
53 distilled_url_(std::move(entry.distilled_url_)), 56 distilled_url_(std::move(entry.distilled_url_)),
54 distilled_state_(std::move(entry.distilled_state_)), 57 distilled_state_(std::move(entry.distilled_state_)),
55 backoff_(std::move(entry.backoff_)) {} 58 backoff_(std::move(entry.backoff_)),
59 failed_download_counter_(std::move(entry.failed_download_counter_)) {}
56 60
57 ReadingListEntry::~ReadingListEntry() {} 61 ReadingListEntry::~ReadingListEntry() {}
58 62
59 const GURL& ReadingListEntry::URL() const { 63 const GURL& ReadingListEntry::URL() const {
60 return url_; 64 return url_;
61 } 65 }
62 66
63 const std::string& ReadingListEntry::Title() const { 67 const std::string& ReadingListEntry::Title() const {
64 return title_; 68 return title_;
65 } 69 }
66 70
67 ReadingListEntry::DistillationState ReadingListEntry::DistilledState() const { 71 ReadingListEntry::DistillationState ReadingListEntry::DistilledState() const {
68 return distilled_state_; 72 return distilled_state_;
69 } 73 }
70 74
71 const GURL& ReadingListEntry::DistilledURL() const { 75 const GURL& ReadingListEntry::DistilledURL() const {
72 return distilled_url_; 76 return distilled_url_;
73 } 77 }
74 78
75 base::TimeDelta ReadingListEntry::TimeUntilNextTry() const { 79 base::TimeDelta ReadingListEntry::TimeUntilNextTry() const {
76 return backoff_->GetTimeUntilRelease(); 80 return backoff_->GetTimeUntilRelease();
77 } 81 }
78 82
83 int ReadingListEntry::FailedDownloadCounter() const {
84 return failed_download_counter_;
85 }
86
79 ReadingListEntry& ReadingListEntry::operator=(ReadingListEntry&& other) { 87 ReadingListEntry& ReadingListEntry::operator=(ReadingListEntry&& other) {
80 url_ = std::move(other.url_); 88 url_ = std::move(other.url_);
81 title_ = std::move(other.title_); 89 title_ = std::move(other.title_);
82 distilled_url_ = std::move(other.distilled_url_); 90 distilled_url_ = std::move(other.distilled_url_);
83 distilled_state_ = std::move(other.distilled_state_); 91 distilled_state_ = std::move(other.distilled_state_);
84 backoff_ = std::move(other.backoff_); 92 backoff_ = std::move(other.backoff_);
93 failed_download_counter_ = std::move(other.failed_download_counter_);
85 return *this; 94 return *this;
86 } 95 }
87 96
88 bool ReadingListEntry::operator==(const ReadingListEntry& other) const { 97 bool ReadingListEntry::operator==(const ReadingListEntry& other) const {
89 return url_ == other.url_; 98 return url_ == other.url_;
90 } 99 }
91 100
92 void ReadingListEntry::SetTitle(const std::string& title) { 101 void ReadingListEntry::SetTitle(const std::string& title) {
93 title_ = title; 102 title_ = title;
94 } 103 }
95 104
96 void ReadingListEntry::SetDistilledURL(const GURL& url) { 105 void ReadingListEntry::SetDistilledURL(const GURL& url) {
97 DCHECK(url.is_valid()); 106 DCHECK(url.is_valid());
98 distilled_url_ = url; 107 distilled_url_ = url;
99 distilled_state_ = PROCESSED; 108 distilled_state_ = PROCESSED;
100 backoff_->Reset(); 109 backoff_->Reset();
110 failed_download_counter_ = 0;
101 } 111 }
102 112
103 void ReadingListEntry::SetDistilledState(DistillationState distilled_state) { 113 void ReadingListEntry::SetDistilledState(DistillationState distilled_state) {
104 DCHECK(distilled_state != PROCESSED); // use SetDistilledURL instead. 114 DCHECK(distilled_state != PROCESSED); // use SetDistilledURL instead.
105 DCHECK(distilled_state != WAITING); 115 DCHECK(distilled_state != WAITING);
106 // Increase time until next retry exponentially if the state change from a 116 // Increase time until next retry exponentially if the state change from a
107 // non-error state to an error state. 117 // non-error state to an error state.
108 if ((distilled_state == WILL_RETRY || distilled_state == ERROR) && 118 if ((distilled_state == WILL_RETRY || distilled_state == ERROR) &&
109 distilled_state_ != WILL_RETRY && distilled_state_ != ERROR) { 119 distilled_state_ != WILL_RETRY && distilled_state_ != ERROR) {
110 backoff_->InformOfRequest(false); 120 backoff_->InformOfRequest(false);
121 failed_download_counter_++;
111 } 122 }
112 123
113 distilled_state_ = distilled_state; 124 distilled_state_ = distilled_state;
114 distilled_url_ = GURL(); 125 distilled_url_ = GURL();
115 } 126 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698