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

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: Created 4 years, 10 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 faee49c00b0b27efecfd9f59f13d0d17521ab54d..c67e4d536973ab0b47339d6c0b8c14c6044e1404 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
@@ -267,49 +267,77 @@ public class BookmarkUtils {
@Override
public void onAction(Object actionData) {
RecordUserAction.record("OfflinePages.SaveStatusSnackbar.FreeUpSpaceButtonClicked");
- OfflinePageStorageSpacePolicy policy =
- new OfflinePageStorageSpacePolicy(bookmarkModel.getOfflinePageBridge());
- if (policy.hasPagesToCleanUp()) {
- OfflinePageFreeUpSpaceCallback callback = new OfflinePageFreeUpSpaceCallback() {
- @Override
- public void onFreeUpSpaceDone() {
- snackbarManager.showSnackbar(
- OfflinePageFreeUpSpaceDialog.createStorageClearedSnackbar(
- activity));
- bookmarkModel.destroy();
- }
- @Override
- public void onFreeUpSpaceCancelled() {
- bookmarkModel.destroy();
- }
- };
- OfflinePageFreeUpSpaceDialog dialog = OfflinePageFreeUpSpaceDialog.newInstance(
- bookmarkModel.getOfflinePageBridge(), callback);
- dialog.show(activity.getFragmentManager(), null);
- } else {
- OfflinePageOpenStorageSettingsDialog.showDialog(activity);
- }
+ OfflinePageStorageSpacePolicy.create(bookmarkModel.getOfflinePageBridge(),
+ new OfflinePageStorageSpacePolicy.CreateCallback() {
+ @Override
+ public void onCreateDone(OfflinePageStorageSpacePolicy policy) {
+ if (policy.hasPagesToCleanUp()) {
+ OfflinePageFreeUpSpaceCallback callback =
fgorski 2016/02/26 21:31:10 extract callback creation from here. As in earlier
dewittj 2016/03/01 22:28:52 Done.
+ new OfflinePageFreeUpSpaceCallback() {
+ @Override
+ public void onFreeUpSpaceDone() {
+ snackbarManager.showSnackbar(
+ OfflinePageFreeUpSpaceDialog
+ .createStorageClearedSnackbar(
+ activity));
+ bookmarkModel.destroy();
+ }
+ @Override
+ public void onFreeUpSpaceCancelled() {
+ bookmarkModel.destroy();
+ }
+ };
+ OfflinePageFreeUpSpaceDialog dialog =
+ OfflinePageFreeUpSpaceDialog.newInstance(
+ bookmarkModel.getOfflinePageBridge(), callback);
+ dialog.show(activity.getFragmentManager(), null);
+ } else {
+ OfflinePageOpenStorageSettingsDialog.showDialog(activity);
+ }
+ }
+ });
}
};
}
/**
- * 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(BookmarkModel model) {
+ public static void showBookmarkManager(final Activity activity) {
+ String lastUsedUrl = getLastUsedUrl(activity);
+ final String defaultUrl =
+ TextUtils.isEmpty(lastUsedUrl) ? UrlConstants.BOOKMARKS_URL : lastUsedUrl;
+
+ final BookmarkModel model = new BookmarkModel();
OfflinePageBridge bridge = model.getOfflinePageBridge();
- if (bridge == null || bridge.getAllPages().isEmpty() || OfflinePageUtils.isConnected()) {
- return false;
+
+ // If we are connected show the default URL.
+ if (bridge == null || OfflinePageUtils.isConnected()) {
+ openUrlOrStartActivityWithUrl(activity, defaultUrl);
+ model.destroy();
+ 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 onHasPagesDone(boolean hasPages) {
+ String url = defaultUrl;
+ if (hasPages) {
+ url = BookmarkUIState.createFilterUrl(BookmarkFilter.OFFLINE_PAGES, false)
+ .toString();
+ }
+ openUrlOrStartActivityWithUrl(activity, url);
+ model.destroy();
+ }
+ });
+ }
+ private static void openUrlOrStartActivityWithUrl(Activity activity, String url) {
if (DeviceFormFactor.isTablet(activity)) {
openUrl(activity, url);
} else {
@@ -320,25 +348,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();
- try {
- if (shouldShowOfflinePageAtFirst(model)) {
- 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