Index: ios/chrome/browser/reading_list/reading_list_model.h |
diff --git a/ios/chrome/browser/reading_list/reading_list_model.h b/ios/chrome/browser/reading_list/reading_list_model.h |
index 417237ee14fb7e38650d725f781229ebc4b9b542..245512cccb8f3487e17e13a63263062c2beacb6f 100644 |
--- a/ios/chrome/browser/reading_list/reading_list_model.h |
+++ b/ios/chrome/browser/reading_list/reading_list_model.h |
@@ -15,19 +15,29 @@ |
#include "ios/chrome/browser/reading_list/reading_list_model_observer.h" |
class GURL; |
+class ReadingListEntry; |
class ReadingListModel; |
+class ReadingListStore; |
+class ScopedReadingListBatchUpdate; |
+ |
+using ReadingListEntries = std::vector<ReadingListEntry>; |
pavely
2016/11/14 07:45:33
reading_list_model.h, reading_list_store_delegate.
Olivier
2016/11/14 11:36:48
Done.
|
namespace ios { |
class ChromeBrowserState; |
} |
+namespace syncer { |
+class ModelTypeSyncBridge; |
+} |
+ |
// The reading list model contains two list of entries: one of unread urls, the |
// other of read ones. This object should only be accessed from one thread |
// (Usually the main thread). The observers callbacks are also sent on the main |
// thread. |
-class ReadingListModel { |
+class ReadingListModel : public base::NonThreadSafe { |
pavely
2016/11/14 07:45:33
You need to include non_thread_safe.h.
Olivier
2016/11/14 11:36:48
Done.
|
public: |
class ScopedReadingListBatchUpdate; |
+ |
// Returns true if the model finished loading. Until this returns true the |
// reading list is not ready for use. |
virtual bool loaded() const = 0; |
@@ -35,6 +45,9 @@ class ReadingListModel { |
// Returns true if the model is performing batch updates right now. |
bool IsPerformingBatchUpdates() const; |
+ // Returns the ModelTypeSyncBridge responsible for handling sync message. |
+ virtual syncer::ModelTypeSyncBridge* GetModelTypeSyncBridge() = 0; |
+ |
// Tells model to prepare for batch updates. |
// This method is reentrant, i.e. several batch updates may take place at the |
// same time. |
@@ -43,6 +56,9 @@ class ReadingListModel { |
// the batch update has completed. |
std::unique_ptr<ScopedReadingListBatchUpdate> BeginBatchUpdates(); |
+ // Creates a batch token that will freeze the model while in scope. |
+ virtual std::unique_ptr<ScopedReadingListBatchUpdate> CreateBatchToken(); |
+ |
// Returns the size of read and unread entries. |
virtual size_t unread_size() const = 0; |
virtual size_t read_size() const = 0; |
@@ -59,7 +75,10 @@ class ReadingListModel { |
virtual const ReadingListEntry& GetReadEntryAtIndex(size_t index) const = 0; |
// Returns a specific entry. Returns null if the entry does not exist. |
- virtual const ReadingListEntry* GetEntryFromURL(const GURL& gurl) const = 0; |
+ // If |read| is not null and the entry is found, |*read| is the read status |
+ // of the entry. |
+ virtual const ReadingListEntry* GetEntryFromURL(const GURL& gurl, |
+ bool* read) const = 0; |
// Synchronously calls the |callback| with entry associated with this |url|. |
// Does nothing if there is no entry associated. |
@@ -112,7 +131,7 @@ class ReadingListModel { |
explicit ScopedReadingListBatchUpdate(ReadingListModel* model) |
: model_(model) {} |
- ~ScopedReadingListBatchUpdate() { model_->EndBatchUpdates(); } |
+ virtual ~ScopedReadingListBatchUpdate(); |
private: |
ReadingListModel* model_; |
@@ -131,6 +150,12 @@ class ReadingListModel { |
// ReadingListBatchUpdateToken dtor. |
virtual void EndBatchUpdates(); |
+ // Called when model is entering batch update mode. |
+ virtual void EnteringBatchUpdates(); |
+ |
+ // Called when model is leaving batch update mode. |
+ virtual void LeavingBatchUpdates(); |
+ |
private: |
unsigned int current_batch_updates_count_; |