| Index: ios/chrome/browser/reading_list/reading_list_entry.h
 | 
| diff --git a/ios/chrome/browser/reading_list/reading_list_entry.h b/ios/chrome/browser/reading_list/reading_list_entry.h
 | 
| index 3ed4903e8e6226a817acd367e997cb5fc1a8fa0b..a7f370666f6c978cfb4eccac5826a658c01f6e08 100644
 | 
| --- a/ios/chrome/browser/reading_list/reading_list_entry.h
 | 
| +++ b/ios/chrome/browser/reading_list/reading_list_entry.h
 | 
| @@ -6,28 +6,43 @@
 | 
|  #define IOS_CHROME_BROWSER_READING_LIST_READING_LIST_ENTRY_H_
 | 
|  
 | 
|  #include <string>
 | 
| +#include <vector>
 | 
|  
 | 
|  #include "base/macros.h"
 | 
| +#include "base/time/default_tick_clock.h"
 | 
| +#include "base/time/time.h"
 | 
|  #include "net/base/backoff_entry.h"
 | 
|  #include "url/gurl.h"
 | 
|  
 | 
| +namespace reading_list {
 | 
| +class ReadingListLocal;
 | 
| +}
 | 
| +
 | 
|  // An entry in the reading list. The URL is a unique identifier for an entry, as
 | 
|  // such it should not be empty and is the only thing considered when comparing
 | 
|  // entries.
 | 
|  class ReadingListEntry {
 | 
|   public:
 | 
| +  // Entries are created in WAITING state. At some point they will be PROCESSING
 | 
| +  // into one of the three state: PROCESSED, the only state a distilled URL
 | 
| +  // would be set, WILL_RETRY, similar to wait, but with exponential delays or
 | 
| +  // ERROR where the system will not retry at all.
 | 
| +  enum DistillationState { WAITING, PROCESSING, PROCESSED, WILL_RETRY, ERROR };
 | 
| +
 | 
|    ReadingListEntry(const GURL& url, const std::string& title);
 | 
|    ReadingListEntry(const GURL& url,
 | 
|                     const std::string& title,
 | 
|                     std::unique_ptr<net::BackoffEntry> backoff);
 | 
| +  ReadingListEntry(const GURL& url,
 | 
| +                   const std::string& title,
 | 
| +                   int64_t creation_time,
 | 
| +                   int64_t update_time,
 | 
| +                   DistillationState distilled_state,
 | 
| +                   const GURL& distilled_url,
 | 
| +                   std::unique_ptr<net::BackoffEntry> backoff);
 | 
|    ReadingListEntry(ReadingListEntry&& entry);
 | 
|    ~ReadingListEntry();
 | 
|  
 | 
| -  // Entries are created in WAITING state. At some point they will be PROCESSING
 | 
| -  // into one of the three state: PROCESSED, the only state a distilled URL
 | 
| -  // would be set, WILL_RETRY, similar to wait, but with exponential delays or
 | 
| -  // ERROR where the system will not retry at all.
 | 
| -  enum DistillationState { WAITING, PROCESSING, PROCESSED, WILL_RETRY, ERROR };
 | 
|  
 | 
|    static const net::BackoffEntry::Policy kBackoffPolicy;
 | 
|  
 | 
| @@ -48,9 +63,29 @@ class ReadingListEntry {
 | 
|    // non-error state.
 | 
|    int FailedDownloadCounter() const;
 | 
|  
 | 
| +  // The last update time of the entry. This value may be used to sort the
 | 
| +  // entries. The value is in microseconds since Jan 1st 1970.
 | 
| +  int64_t UpdateTime() const;
 | 
| +
 | 
| +  // Set the update time to now.
 | 
| +  void MarkEntryUpdated();
 | 
| +
 | 
| +  // Returns a protobuf encoding the content of this ReadingListEntry.
 | 
| +  std::unique_ptr<reading_list::ReadingListLocal> AsReadingListLocal(
 | 
| +      bool read) const;
 | 
| +
 | 
| +  // Created a ReadingListEntry from the protobuf format.
 | 
| +  static std::unique_ptr<ReadingListEntry> FromReadingListLocal(
 | 
| +      const reading_list::ReadingListLocal& pb_entry);
 | 
| +
 | 
|    ReadingListEntry& operator=(ReadingListEntry&& other);
 | 
| +
 | 
|    bool operator==(const ReadingListEntry& other) const;
 | 
|  
 | 
| +  // returns whether |lhs| is more recent than |rhs|.
 | 
| +  static bool CompareEntryUpdateTime(const ReadingListEntry& lhs,
 | 
| +                                     const ReadingListEntry& rhs);
 | 
| +
 | 
|    // Sets the title.
 | 
|    void SetTitle(const std::string& title);
 | 
|    // Sets the distilled URL and switch the state to PROCESSED and reset the time
 | 
| @@ -64,9 +99,16 @@ class ReadingListEntry {
 | 
|    std::string title_;
 | 
|    GURL distilled_url_;
 | 
|    DistillationState distilled_state_;
 | 
| +
 | 
|    std::unique_ptr<net::BackoffEntry> backoff_;
 | 
|    int failed_download_counter_;
 | 
|  
 | 
| +  // These value are in microseconds since Jan 1st 1970. They are used for
 | 
| +  // sorting the entries from the database. They are kept in int64_t to avoid
 | 
| +  // conversion on each save/read event.
 | 
| +  int64_t creation_time_us_;
 | 
| +  int64_t update_time_us_;
 | 
| +
 | 
|    DISALLOW_COPY_AND_ASSIGN(ReadingListEntry);
 | 
|  };
 | 
|  
 | 
| 
 |