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 28a8fe7a03f76c727c799647e2145091e759bf94..3b9bc28a9383248624ac7c5ca3e85dada6cadc83 100644 |
--- a/ios/chrome/browser/reading_list/reading_list_model.h |
+++ b/ios/chrome/browser/reading_list/reading_list_model.h |
@@ -11,23 +11,32 @@ |
#include "base/callback.h" |
#include "base/observer_list.h" |
+#include "base/threading/non_thread_safe.h" |
#include "ios/chrome/browser/reading_list/reading_list_entry.h" |
#include "ios/chrome/browser/reading_list/reading_list_model_observer.h" |
class GURL; |
+class ReadingListEntry; |
class ReadingListModel; |
+class ReadingListStore; |
+class ScopedReadingListBatchUpdate; |
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 { |
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 +44,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 +55,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 +74,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. |
@@ -109,7 +127,7 @@ class ReadingListModel { |
explicit ScopedReadingListBatchUpdate(ReadingListModel* model) |
: model_(model) {} |
- ~ScopedReadingListBatchUpdate() { model_->EndBatchUpdates(); } |
+ virtual ~ScopedReadingListBatchUpdate(); |
private: |
ReadingListModel* model_; |
@@ -128,6 +146,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_; |