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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkUtils.java

Issue 1440623004: [Enhanced Bookmark]Rewrite initialization logic (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added another class: EBUIState. All EB will be remaned to B this month. Created 5 years 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/enhancedbookmarks/EnhancedBookmarkUtils.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkUtils.java
index 62873dfa598291b1aa9c4fbe5669534942a968bb..79dd3c13c932462def40fc51ffbc3251ce659486 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkUtils.java
@@ -10,11 +10,12 @@ import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.AsyncTask;
-import android.os.Bundle;
+import android.preference.PreferenceManager;
import android.provider.Browser;
import android.text.TextUtils;
import org.chromium.base.ApiCompatibilityUtils;
+import org.chromium.base.VisibleForTesting;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
@@ -22,7 +23,6 @@ import org.chromium.chrome.browser.ChromeBrowserProviderClient;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.bookmark.BookmarksBridge;
-import org.chromium.chrome.browser.bookmark.BookmarksBridge.BookmarkItem;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarksModel.AddBookmarkCallback;
import org.chromium.chrome.browser.favicon.FaviconHelper;
@@ -38,7 +38,6 @@ import org.chromium.chrome.browser.snackbar.SnackbarManager;
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.util.FeatureUtilities;
-import org.chromium.chrome.browser.util.MathUtils;
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.bookmarks.BookmarkType;
import org.chromium.content_public.browser.WebContents;
@@ -48,18 +47,7 @@ import org.chromium.ui.base.DeviceFormFactor;
* A class holding static util functions for enhanced bookmark.
*/
public class EnhancedBookmarkUtils {
-
- private static final String BOOKMARK_SAVE_NAME = "SaveBookmark";
- private static final int[] DEFAULT_BACKGROUND_COLORS = {
- 0xFFE64A19,
- 0xFFF09300,
- 0xFFAFB42B,
- 0xFF689F38,
- 0xFF0B8043,
- 0xFF0097A7,
- 0xFF7B1FA2,
- 0xFFC2185B
- };
+ private static final String PREF_LAST_USED_URL = "enhanced_bookmark_last_used_url";
/**
* @return True if enhanced bookmark feature is enabled.
@@ -258,6 +246,19 @@ public class EnhancedBookmarkUtils {
}
/**
+ * Gets whether bookmark manager should load offline page initially.
+ */
+ private static boolean shouldShowOfflinePageAtFirst(EnhancedBookmarksModel model,
+ Context context) {
+ OfflinePageBridge bridge = model.getOfflinePageBridge();
+ if (bridge == null || bridge.getAllPages().isEmpty()
+ || OfflinePageUtils.isConnected(context)) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
* Shows enhanced bookmark main UI, if it is turned on. Does nothing if it is turned off.
* @return True if enhanced bookmark is on, false otherwise.
*/
@@ -265,15 +266,57 @@ public class EnhancedBookmarkUtils {
if (!isEnhancedBookmarkEnabled()) {
return false;
}
+
+ String url = getFirstUrlToLoad(activity);
+
if (DeviceFormFactor.isTablet(activity)) {
- openUrl(activity, UrlConstants.BOOKMARKS_URL);
+ openUrl(activity, url);
} else {
- activity.startActivity(new Intent(activity, EnhancedBookmarkActivity.class));
+ Intent intent = new Intent(activity, EnhancedBookmarkActivity.class);
+ intent.setData(Uri.parse(url));
+ activity.startActivity(intent);
}
return true;
}
/**
+ * The initial url the bookmark manager shows depends on offline page status and some
+ * experiments we run.
+ */
+ private static String getFirstUrlToLoad(Activity activity) {
+ EnhancedBookmarksModel model = new EnhancedBookmarksModel();
+ try {
+ if (shouldShowOfflinePageAtFirst(model, activity)) {
+ return EnhancedBookmarkUIState.createFilterUrl(EnhancedBookmarkFilter.OFFLINE_PAGES,
+ false);
+ }
+ 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)}
+ */
+ static void setLastUsedUrl(Context context, String url) {
+ PreferenceManager.getDefaultSharedPreferences(context).edit()
+ .putString(PREF_LAST_USED_URL, url).apply();
+ }
+
+ /**
+ * Fetches url representing the user's state last time they close the bookmark manager.
+ */
+ @VisibleForTesting
+ static String getLastUsedUrl(Context context) {
+ return PreferenceManager.getDefaultSharedPreferences(context).getString(
+ PREF_LAST_USED_URL, UrlConstants.BOOKMARKS_URL);
+ }
+
+ /**
* Starts an {@link EnhancedBookmarkEditActivity} for the given {@link BookmarkId}.
*/
public static void startEditActivity(
@@ -292,37 +335,6 @@ public class EnhancedBookmarkUtils {
}
/**
- * Generate color based on bookmarked url's hash code. Same color will
- * always be returned given same bookmark item.
- *
- * @param item bookmark the color represents for
- * @return int for the generated color
- */
- public static int generateBackgroundColor(BookmarkItem item) {
- int normalizedIndex = MathUtils.positiveModulo(item.getUrl().hashCode(),
- DEFAULT_BACKGROUND_COLORS.length);
- return DEFAULT_BACKGROUND_COLORS[normalizedIndex];
- }
-
- /**
- * Save the bookmark in bundle to save state of a fragment/activity.
- * @param bundle Argument holder or savedInstanceState of the fragment/activity.
- * @param bookmark The bookmark to save.
- */
- public static void saveBookmarkIdToBundle(Bundle bundle, BookmarkId bookmark) {
- bundle.putString(BOOKMARK_SAVE_NAME, bookmark.toString());
- }
-
- /**
- * Retrieve the bookmark previously saved in the arguments bundle.
- * @param bundle Argument holder or savedInstanceState of the fragment/activity.
- * @return The ID of the bookmark to retrieve.
- */
- public static BookmarkId getBookmarkIdFromBundle(Bundle bundle) {
- return BookmarkId.getBookmarkIdFromString(bundle.getString(BOOKMARK_SAVE_NAME));
- }
-
- /**
* Opens a bookmark depending on connection status and reports UMA.
* @param model Enhanced bookmarks model to manage the bookmark.
* @param activity Activity requesting to open the bookmark.

Powered by Google App Engine
This is Rietveld 408576698