| Index: chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java
|
| index 973532320b771c715c11634c7a76b52310a3cfb7..06581d466a912fe3aeb9430dfb768daf9cee81a2 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java
|
| @@ -4,6 +4,7 @@
|
|
|
| package org.chromium.chrome.browser.bookmarks;
|
|
|
| +import org.chromium.base.Callback;
|
| import org.chromium.base.ObserverList;
|
| import org.chromium.base.VisibleForTesting;
|
| import org.chromium.base.metrics.RecordHistogram;
|
| @@ -282,30 +283,41 @@ public class BookmarkModel extends BookmarkBridge {
|
| }
|
|
|
| /**
|
| - * Gets a list of bookmark IDs of bookmarks that match a specified filter.
|
| + * Gets a list of bookmark IDs for all offline pages.
|
| *
|
| - * @param filter Filter to be applied to the bookmarks.
|
| - * @return A list of bookmark IDs of bookmarks matching the filter.
|
| + * @return A list of bookmark IDs of bookmarks matching the offline pages filter.
|
| */
|
| - public List<BookmarkId> getBookmarkIDsByFilter(BookmarkFilter filter) {
|
| + public void getBookmarkIDsByFilter(
|
| + BookmarkFilter filter, final Callback<List<BookmarkId>> callback) {
|
| assert filter == BookmarkFilter.OFFLINE_PAGES;
|
| assert mOfflinePageBridge != null;
|
|
|
| - List<OfflinePageItem> offlinePages = mOfflinePageBridge.getAllPages();
|
| + mOfflinePageBridge.getAllPages(new OfflinePageBridge.MultipleOfflinePageItemCallback() {
|
| + @Override
|
| + public void onResult(List<OfflinePageItem> offlinePages) {
|
| + callback.onResult(filterBookmarkIdsByOfflinePages(offlinePages));
|
| + }
|
| + });
|
| + }
|
| +
|
| + /**
|
| + * Gets all bookmarks that correspond to the given list of offline pages, in MRU order.
|
| + * @see http://crbug.com/537806
|
| + */
|
| + private List<BookmarkId> filterBookmarkIdsByOfflinePages(List<OfflinePageItem> offlinePages) {
|
| Collections.sort(offlinePages, sOfflinePageComparator);
|
|
|
| - // We are going to filter out all of the offline pages without a matching bookmark.
|
| - // http://crbug.com/537806
|
| HashSet<BookmarkId> existingBookmarks =
|
| - new HashSet<BookmarkId>(getAllBookmarkIDsOrderedByCreationDate());
|
| + new HashSet<>(getAllBookmarkIDsOrderedByCreationDate());
|
|
|
| - List<BookmarkId> bookmarkIds = new ArrayList<BookmarkId>();
|
| + List<BookmarkId> bookmarkIds = new ArrayList<>();
|
| for (OfflinePageItem offlinePage : offlinePages) {
|
| BookmarkId bookmarkId = getBookmarkIdForOfflineClientId(offlinePage.getClientId());
|
| if (existingBookmarks.contains(bookmarkId)) {
|
| bookmarkIds.add(bookmarkId);
|
| }
|
| }
|
| +
|
| return bookmarkIds;
|
| }
|
|
|
|
|