Chromium Code Reviews| Index: ios/chrome/browser/reading_list/reading_list_model_impl.cc |
| diff --git a/ios/chrome/browser/reading_list/reading_list_model_impl.cc b/ios/chrome/browser/reading_list/reading_list_model_impl.cc |
| index c3e068d65f0249a30a6ce1c36dbd381cdf56d260..a9d29cc59c014fb4b71034ed81194b2506d81abc 100644 |
| --- a/ios/chrome/browser/reading_list/reading_list_model_impl.cc |
| +++ b/ios/chrome/browser/reading_list/reading_list_model_impl.cc |
| @@ -54,17 +54,35 @@ void ReadingListModelImpl::ResetUnseenEntries() { |
| storageLayer_->SavePersistentHasUnseen(false); |
| } |
| -// Returns a specific entry. |
| -const ReadingListEntry& ReadingListModelImpl::GetUnreadEntryAtIndex( |
| +const ReadingListEntry* ReadingListModelImpl::GetUnreadEntryAtIndex( |
| size_t index) const { |
| DCHECK(loaded()); |
| - return unread_[index]; |
| + if (index >= unread_.size()) |
| + return nullptr; |
| + return &unread_[index]; |
| } |
| -const ReadingListEntry& ReadingListModelImpl::GetReadEntryAtIndex( |
| +const ReadingListEntry* ReadingListModelImpl::GetReadEntryAtIndex( |
| size_t index) const { |
| DCHECK(loaded()); |
| - return read_[index]; |
| + if (index >= read_.size()) |
| + return nullptr; |
| + return &read_[index]; |
| +} |
| + |
| +const ReadingListEntry* ReadingListModelImpl::GetEntryFromURL( |
| + const GURL& gurl) const { |
| + auto it = std::find_if( |
|
gambard
2016/10/03 09:04:45
Use std::find with a entry created for the find.
|
| + read_.begin(), read_.end(), |
| + [&gurl](const ReadingListEntry& entry) { return gurl == entry.URL(); }); |
| + if (it == read_.end()) { |
| + it = std::find_if( |
| + unread_.begin(), unread_.end(), |
| + [&gurl](const ReadingListEntry& entry) { return gurl == entry.URL(); }); |
| + if (it == unread_.end()) |
| + return nullptr; |
| + } |
| + return &(*it); |
| } |
| bool ReadingListModelImpl::CallbackEntryURL( |