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..59e85a9fb3d27d732533d05f240668cccaf87b93 100644 |
--- a/ios/chrome/browser/reading_list/reading_list_entry.h |
+++ b/ios/chrome/browser/reading_list/reading_list_entry.h |
@@ -6,11 +6,22 @@ |
#define IOS_CHROME_BROWSER_READING_LIST_READING_LIST_ENTRY_H_ |
#include <string> |
+#include <vector> |
pavely
2016/11/14 07:45:33
Do you need vector header?
Olivier
2016/11/14 11:36:48
Done.
|
#include "base/macros.h" |
+#include "base/time/default_tick_clock.h" |
pavely
2016/11/14 07:45:33
Same with default_tick_clock.h.
Olivier
2016/11/14 11:36:48
Done.
|
+#include "base/time/time.h" |
#include "net/base/backoff_entry.h" |
#include "url/gurl.h" |
+namespace reading_list { |
+class ReadingListLocal; |
+} |
+ |
+namespace sync_pb { |
+class ReadingListSpecifics; |
+} |
+ |
// 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. |
@@ -48,9 +59,48 @@ 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; |
+ |
+ // The creation update time of the entry. The value is in microseconds since |
+ // Jan 1st 1970. |
+ int64_t CreationTime() const; |
+ |
+ // Set the update time to now. |
+ void MarkEntryUpdated(); |
+ |
+ // Returns a protobuf encoding the content of this ReadingListEntry for local |
+ // storage. |
+ std::unique_ptr<reading_list::ReadingListLocal> AsReadingListLocal( |
+ bool read) const; |
+ |
+ // Returns a protobuf encoding the content of this ReadingListEntry for sync. |
+ std::unique_ptr<sync_pb::ReadingListSpecifics> AsReadingListSpecifics( |
+ bool read) const; |
+ |
+ // Created a ReadingListEntry from the protobuf format. |
+ static std::unique_ptr<ReadingListEntry> FromReadingListLocal( |
+ const reading_list::ReadingListLocal& pb_entry); |
+ |
+ // Created a ReadingListEntry from the protobuf format. |
+ static std::unique_ptr<ReadingListEntry> FromReadingListSpecifics( |
+ const sync_pb::ReadingListSpecifics& pb_entry); |
+ |
+ // Merge the local data from |other| to this. |
+ // The local fields (distilled_state_, distilled_url_, backoff_, |
+ // failed_download_counter_) of |other| are moved to |this| and must not be |
+ // used after this call. |
+ void MergeLocalStateFrom(ReadingListEntry& other); |
+ |
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 |
@@ -60,13 +110,28 @@ class ReadingListEntry { |
void SetDistilledState(DistillationState distilled_state); |
private: |
+ ReadingListEntry(const GURL& url, |
+ const std::string& title, |
+ int64_t creation_time, |
+ int64_t update_time, |
+ DistillationState distilled_state, |
+ const GURL& distilled_url, |
+ int failed_download_counter, |
+ std::unique_ptr<net::BackoffEntry> backoff); |
GURL url_; |
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); |
}; |