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

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

Issue 2525663002: Refactor Reading List Model to use URL as key. (Closed)
Patch Set: feedback 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 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 #ifndef COMPONENTS_READING_LIST_IOS_READING_LIST_ENTRY_H_ 5 #ifndef COMPONENTS_READING_LIST_IOS_READING_LIST_ENTRY_H_
6 #define COMPONENTS_READING_LIST_IOS_READING_LIST_ENTRY_H_ 6 #define COMPONENTS_READING_LIST_IOS_READING_LIST_ENTRY_H_
7 7
8 #include <string> 8 #include <string>
9 #include <unordered_map>
9 10
10 #include "base/files/file_path.h" 11 #include "base/files/file_path.h"
11 #include "base/macros.h" 12 #include "base/macros.h"
12 #include "base/time/time.h" 13 #include "base/time/time.h"
13 #include "net/base/backoff_entry.h" 14 #include "net/base/backoff_entry.h"
14 #include "url/gurl.h" 15 #include "url/gurl.h"
15 16
16 namespace reading_list { 17 namespace reading_list {
17 class ReadingListLocal; 18 class ReadingListLocal;
18 } 19 }
19 20
20 namespace sync_pb { 21 namespace sync_pb {
21 class ReadingListSpecifics; 22 class ReadingListSpecifics;
22 } 23 }
23 24
25 // The hashing structure to create unorder_map<GURL, ReadingListEntry>.
26 struct GURLHasher {
27 std::size_t operator()(const GURL& k) const {
28 return std::hash<std::string>()(k.spec());
29 }
30 };
31
24 class ReadingListEntry; 32 class ReadingListEntry;
25 using ReadingListEntries = std::vector<ReadingListEntry>; 33
34 using ReadingListEntries =
35 std::unordered_map<GURL, ReadingListEntry, GURLHasher>;
noyau (Ping after 24h) 2016/11/28 15:29:31 Why is this here actually? It is not used in this
Olivier 2016/11/28 15:38:10 If I move it, I must move it in ReadingListModel,
Olivier 2016/11/30 09:15:22 Moved it (replaced by std::map as performances sho
26 36
27 // An entry in the reading list. The URL is a unique identifier for an entry, as 37 // An entry in the reading list. The URL is a unique identifier for an entry, as
28 // such it should not be empty and is the only thing considered when comparing 38 // such it should not be empty and is the only thing considered when comparing
29 // entries. 39 // entries.
30 class ReadingListEntry { 40 class ReadingListEntry {
31 public: 41 public:
32 ReadingListEntry(const GURL& url, const std::string& title); 42 ReadingListEntry(const GURL& url, const std::string& title);
33 ReadingListEntry(const GURL& url, 43 ReadingListEntry(const GURL& url,
34 const std::string& title, 44 const std::string& title,
35 std::unique_ptr<net::BackoffEntry> backoff); 45 std::unique_ptr<net::BackoffEntry> backoff);
(...skipping 17 matching lines...) Expand all
53 // The local file path for the distilled version of the page. This should only 63 // The local file path for the distilled version of the page. This should only
54 // be called if the state is "PROCESSED". 64 // be called if the state is "PROCESSED".
55 const base::FilePath& DistilledPath() const; 65 const base::FilePath& DistilledPath() const;
56 // The time before the next try. This is automatically increased when the 66 // The time before the next try. This is automatically increased when the
57 // state is set to WILL_RETRY or ERROR from a non-error state. 67 // state is set to WILL_RETRY or ERROR from a non-error state.
58 base::TimeDelta TimeUntilNextTry() const; 68 base::TimeDelta TimeUntilNextTry() const;
59 // The number of time chrome failed to download this entry. This is 69 // The number of time chrome failed to download this entry. This is
60 // automatically increased when the state is set to WILL_RETRY or ERROR from a 70 // automatically increased when the state is set to WILL_RETRY or ERROR from a
61 // non-error state. 71 // non-error state.
62 int FailedDownloadCounter() const; 72 int FailedDownloadCounter() const;
73 // The read status of the entry.
74 bool IsRead() const;
63 75
64 // The last update time of the entry. This value may be used to sort the 76 // The last update time of the entry. This value may be used to sort the
65 // entries. The value is in microseconds since Jan 1st 1970. 77 // entries. The value is in microseconds since Jan 1st 1970.
66 int64_t UpdateTime() const; 78 int64_t UpdateTime() const;
67 79
68 // The creation update time of the entry. The value is in microseconds since 80 // The creation update time of the entry. The value is in microseconds since
69 // Jan 1st 1970. 81 // Jan 1st 1970.
70 int64_t CreationTime() const; 82 int64_t CreationTime() const;
71 83
72 // Set the update time to now. 84 // Set the update time to now.
73 void MarkEntryUpdated(); 85 void MarkEntryUpdated();
74 86
75 // Returns a protobuf encoding the content of this ReadingListEntry for local 87 // Returns a protobuf encoding the content of this ReadingListEntry for local
76 // storage. 88 // storage.
77 std::unique_ptr<reading_list::ReadingListLocal> AsReadingListLocal( 89 std::unique_ptr<reading_list::ReadingListLocal> AsReadingListLocal() const;
78 bool read) const;
79 90
80 // Returns a protobuf encoding the content of this ReadingListEntry for sync. 91 // Returns a protobuf encoding the content of this ReadingListEntry for sync.
81 std::unique_ptr<sync_pb::ReadingListSpecifics> AsReadingListSpecifics( 92 std::unique_ptr<sync_pb::ReadingListSpecifics> AsReadingListSpecifics() const;
82 bool read) const;
83 93
84 // Created a ReadingListEntry from the protobuf format. 94 // Created a ReadingListEntry from the protobuf format.
85 static std::unique_ptr<ReadingListEntry> FromReadingListLocal( 95 static std::unique_ptr<ReadingListEntry> FromReadingListLocal(
86 const reading_list::ReadingListLocal& pb_entry); 96 const reading_list::ReadingListLocal& pb_entry);
87 97
88 // Created a ReadingListEntry from the protobuf format. 98 // Created a ReadingListEntry from the protobuf format.
89 static std::unique_ptr<ReadingListEntry> FromReadingListSpecifics( 99 static std::unique_ptr<ReadingListEntry> FromReadingListSpecifics(
90 const sync_pb::ReadingListSpecifics& pb_entry); 100 const sync_pb::ReadingListSpecifics& pb_entry);
91 101
92 // Merge the local data from |other| to this. 102 // Merge the local data from |other| to this.
(...skipping 10 matching lines...) Expand all
103 static bool CompareEntryUpdateTime(const ReadingListEntry& lhs, 113 static bool CompareEntryUpdateTime(const ReadingListEntry& lhs,
104 const ReadingListEntry& rhs); 114 const ReadingListEntry& rhs);
105 115
106 // Sets the title. 116 // Sets the title.
107 void SetTitle(const std::string& title); 117 void SetTitle(const std::string& title);
108 // Sets the distilled URL and switch the state to PROCESSED and reset the time 118 // Sets the distilled URL and switch the state to PROCESSED and reset the time
109 // until the next try. 119 // until the next try.
110 void SetDistilledPath(const base::FilePath& path); 120 void SetDistilledPath(const base::FilePath& path);
111 // Sets the state to one of PROCESSING, WILL_RETRY or ERROR. 121 // Sets the state to one of PROCESSING, WILL_RETRY or ERROR.
112 void SetDistilledState(DistillationState distilled_state); 122 void SetDistilledState(DistillationState distilled_state);
123 // Sets the read stat of the entry. Will set the UpdateTime of the entry.
124 void SetRead(bool read);
113 125
114 private: 126 private:
115 ReadingListEntry(const GURL& url, 127 ReadingListEntry(const GURL& url,
116 const std::string& title, 128 const std::string& title,
129 bool read,
117 int64_t creation_time, 130 int64_t creation_time,
118 int64_t update_time, 131 int64_t update_time,
119 ReadingListEntry::DistillationState distilled_state, 132 ReadingListEntry::DistillationState distilled_state,
120 const base::FilePath& distilled_path, 133 const base::FilePath& distilled_path,
121 int failed_download_counter, 134 int failed_download_counter,
122 std::unique_ptr<net::BackoffEntry> backoff); 135 std::unique_ptr<net::BackoffEntry> backoff);
123 GURL url_; 136 GURL url_;
124 std::string title_; 137 std::string title_;
138 bool read_;
125 base::FilePath distilled_path_; 139 base::FilePath distilled_path_;
126 DistillationState distilled_state_; 140 DistillationState distilled_state_;
127 141
128 std::unique_ptr<net::BackoffEntry> backoff_; 142 std::unique_ptr<net::BackoffEntry> backoff_;
129 int failed_download_counter_; 143 int failed_download_counter_;
130 144
131 // These value are in microseconds since Jan 1st 1970. They are used for 145 // These value are in microseconds since Jan 1st 1970. They are used for
132 // sorting the entries from the database. They are kept in int64_t to avoid 146 // sorting the entries from the database. They are kept in int64_t to avoid
133 // conversion on each save/read event. 147 // conversion on each save/read event.
134 int64_t creation_time_us_; 148 int64_t creation_time_us_;
135 int64_t update_time_us_; 149 int64_t update_time_us_;
136 150
137 DISALLOW_COPY_AND_ASSIGN(ReadingListEntry); 151 DISALLOW_COPY_AND_ASSIGN(ReadingListEntry);
138 }; 152 };
139 153
140 #endif // COMPONENTS_READING_LIST_IOS_READING_LIST_ENTRY_H_ 154 #endif // COMPONENTS_READING_LIST_IOS_READING_LIST_ENTRY_H_
OLDNEW
« no previous file with comments | « no previous file | components/reading_list/ios/reading_list_entry.cc » ('j') | components/reading_list/ios/reading_list_model.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698