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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java

Issue 1739503002: Makes the OfflinePageBridge.getAllPages method asynchronous. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix broken test from rebase. Created 4 years, 9 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
index 5a6b260011939de8f8464e4d8a6d22da70d3acf5..bfde06491a4570dcf28632e5e8f7652ff7cf0b75 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
@@ -46,6 +46,9 @@ public class BookmarkUtils {
/**
* If the tab has already been bookmarked, start {@link BookmarkEditActivity} for the
* bookmark. If not, add the bookmark to bookmarkmodel, and show a snackbar notifying the user.
+ *
+ * Note: Takes ownership of bookmarkModel, and will call |destroy| on it when finished.
+ *
* @param idToAdd The bookmark ID if the tab has already been bookmarked.
* @param bookmarkModel The bookmark model.
* @param tab The tab to add or edit a bookmark.
@@ -61,6 +64,7 @@ public class BookmarkUtils {
if (idToAdd != Tab.INVALID_BOOKMARK_ID) {
startEditActivity(activity, new BookmarkId(idToAdd, BookmarkType.NORMAL),
webContentsToSave);
+ bookmarkModel.destroy();
return;
}
@@ -72,8 +76,9 @@ public class BookmarkUtils {
// The bookmark model will be destroyed in the created AddBookmarkCallback.
bookmarkModel.addBookmarkAsync(parent, bookmarkModel.getChildCount(parent), tab.getTitle(),
tab.getUrl(), webContentsToSave,
+ // bookmarkModel will be destroyed in the callback.
createAddBookmarkCallback(bookmarkModel, snackbarManager, activity,
- webContentsToSave));
+ webContentsToSave));
}
/**
@@ -224,21 +229,42 @@ public class BookmarkUtils {
}
/**
- * Gets whether bookmark manager should load offline page initially.
+ * Shows bookmark main UI.
+ *
+ * The initial url the bookmark manager shows depends on offline page status and some
+ * experiments we run.
*/
- private static boolean shouldShowOfflinePageAtFirst(OfflinePageBridge bridge) {
- if (bridge == null || bridge.getAllPages().isEmpty() || OfflinePageUtils.isConnected()) {
- return false;
+ public static void showBookmarkManager(final Activity activity) {
+ String lastUsedUrl = getLastUsedUrl(activity);
+ final String defaultUrl =
+ TextUtils.isEmpty(lastUsedUrl) ? UrlConstants.BOOKMARKS_URL : lastUsedUrl;
+
+ BookmarkModel bookmarkModel = new BookmarkModel();
+ OfflinePageBridge bridge = bookmarkModel.getOfflinePageBridge();
Ian Wen 2016/04/08 00:07:45 I am a bit wary here. Is it possible that we retai
dewittj 2016/04/08 18:06:58 I reorganized the patch so that the code is laid o
+ bookmarkModel.destroy();
+
+ // If we are connected show the default URL.
+ if (bridge == null || OfflinePageUtils.isConnected()) {
+ openUrlOrStartActivityWithUrl(activity, defaultUrl);
+ return;
}
- return true;
- }
- /**
- * Shows bookmark main UI.
- */
- public static void showBookmarkManager(Activity activity) {
- String url = getFirstUrlToLoad(activity);
+ // Otherwise we want to show offline pages. If there aren't any, just default to the
+ // regular list.
+ bridge.hasPages(new OfflinePageBridge.HasPagesCallback() {
+ @Override
+ public void onResult(boolean hasPages) {
+ String url = defaultUrl;
+ if (hasPages) {
+ url = BookmarkUIState.createFilterUrl(BookmarkFilter.OFFLINE_PAGES, false)
+ .toString();
+ }
+ openUrlOrStartActivityWithUrl(activity, url);
+ }
+ });
+ }
+ private static void openUrlOrStartActivityWithUrl(Activity activity, String url) {
if (DeviceFormFactor.isTablet(activity)) {
openUrl(activity, url);
} else {
@@ -249,26 +275,6 @@ public class BookmarkUtils {
}
/**
- * The initial url the bookmark manager shows depends on offline page status and some
- * experiments we run.
- */
- private static String getFirstUrlToLoad(Activity activity) {
- BookmarkModel model = new BookmarkModel();
- OfflinePageBridge bridge = model.getOfflinePageBridge();
- try {
- if (shouldShowOfflinePageAtFirst(bridge)) {
- return BookmarkUIState.createFilterUrl(BookmarkFilter.OFFLINE_PAGES,
- false).toString();
- }
- String lastUsedUrl = getLastUsedUrl(activity);
- if (!TextUtils.isEmpty(lastUsedUrl)) return lastUsedUrl;
- return UrlConstants.BOOKMARKS_URL;
- } finally {
- model.destroy();
- }
- }
-
- /**
* Saves the last used url to preference. The saved url will be later queried by
* {@link #getLastUsedUrl(Context)}
*/

Powered by Google App Engine
This is Rietveld 408576698