| Index: chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIState.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIState.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIState.java
|
| index ec8851c19b9ae701bfe25f90413af925441e513d..27ef20018abb117406ac1268c329c3ff97c41beb 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIState.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIState.java
|
| @@ -7,6 +7,7 @@ package org.chromium.chrome.browser.bookmarks;
|
| import android.net.Uri;
|
| import android.text.TextUtils;
|
|
|
| +import org.chromium.base.VisibleForTesting;
|
| import org.chromium.chrome.browser.UrlConstants;
|
| import org.chromium.components.bookmarks.BookmarkId;
|
|
|
| @@ -20,7 +21,6 @@ class BookmarkUIState {
|
| static final int STATE_LOADING = 1;
|
| static final int STATE_ALL_BOOKMARKS = 2;
|
| static final int STATE_FOLDER = 3;
|
| - private static final int STATE_INVALID = 0;
|
|
|
| /**
|
| * One of the STATE_* constants.
|
| @@ -36,53 +36,48 @@ class BookmarkUIState {
|
| return state;
|
| }
|
|
|
| + /**
|
| + * Depending on experiments we run, "all bookmarks" might be redirected to the default folder.
|
| + */
|
| static BookmarkUIState createAllBookmarksState(BookmarkModel bookmarkModel) {
|
| - return createStateFromUrl(Uri.parse(UrlConstants.BOOKMARKS_URL), bookmarkModel);
|
| + if (!BookmarkUtils.isAllBookmarksViewEnabled()) {
|
| + return createFolderState(bookmarkModel.getDefaultFolder(), null);
|
| + }
|
| + BookmarkUIState state = new BookmarkUIState();
|
| + state.mState = STATE_ALL_BOOKMARKS;
|
| + state.mUrl = UrlConstants.BOOKMARKS_URL;
|
| + return state;
|
| }
|
|
|
| - static BookmarkUIState createFolderState(BookmarkId folder,
|
| - BookmarkModel bookmarkModel) {
|
| - return createStateFromUrl(createFolderUrl(folder), bookmarkModel);
|
| + static BookmarkUIState createFolderState(BookmarkId folder, BookmarkModel bookmarkModel) {
|
| + if (folder == null) return createAllBookmarksState(bookmarkModel);
|
| + BookmarkUIState state = new BookmarkUIState();
|
| + state.mState = STATE_FOLDER;
|
| + state.mUrl = UrlConstants.BOOKMARKS_FOLDER_URL + folder.toString();
|
| + state.mFolder = folder;
|
| + return state;
|
| }
|
|
|
| /**
|
| - * @see #createStateFromUrl(Uri, BookmarkModel)
|
| + * Parses the url and generates the corresponding state.
|
| */
|
| static BookmarkUIState createStateFromUrl(String url, BookmarkModel bookmarkModel) {
|
| - return createStateFromUrl(Uri.parse(url), bookmarkModel);
|
| - }
|
| -
|
| - /**
|
| - * @return A state corresponding to the URI object. If the URI is not valid,
|
| - * return all_bookmarks.
|
| - */
|
| - static BookmarkUIState createStateFromUrl(Uri uri, BookmarkModel bookmarkModel) {
|
| - BookmarkUIState state = new BookmarkUIState();
|
| - state.mState = STATE_INVALID;
|
| - state.mUrl = uri.toString();
|
| -
|
| - if (state.mUrl.equals(UrlConstants.BOOKMARKS_URL)) {
|
| - state.mState = STATE_ALL_BOOKMARKS;
|
| - } else if (state.mUrl.startsWith(UrlConstants.BOOKMARKS_FOLDER_URL)) {
|
| - String path = uri.getLastPathSegment();
|
| + if (url.equals(UrlConstants.BOOKMARKS_URL)) {
|
| + return createAllBookmarksState(bookmarkModel);
|
| + } else if (url.startsWith(UrlConstants.BOOKMARKS_FOLDER_URL)) {
|
| + String path = url.substring(UrlConstants.BOOKMARKS_FOLDER_URL.length());
|
| if (!path.isEmpty()) {
|
| - state.mFolder = BookmarkId.getBookmarkIdFromString(path);
|
| - state.mState = STATE_FOLDER;
|
| + BookmarkId folder = BookmarkId.getBookmarkIdFromString(path);
|
| + return createFolderState(folder, bookmarkModel);
|
| }
|
| }
|
| -
|
| - if (!state.isValid(bookmarkModel)) {
|
| - state.mState = STATE_ALL_BOOKMARKS;
|
| - state.mUrl = UrlConstants.BOOKMARKS_URL;
|
| - }
|
| -
|
| - return state;
|
| + // If this line is reached, the url is not valid. Fall back to all bookmarks.
|
| + return createAllBookmarksState(bookmarkModel);
|
| }
|
|
|
| + @VisibleForTesting
|
| static Uri createFolderUrl(BookmarkId folderId) {
|
| Uri.Builder builder = Uri.parse(UrlConstants.BOOKMARKS_FOLDER_URL).buildUpon();
|
| - // Encodes the path and appends it to the base url. A simple appending
|
| - // does not work because there might be spaces in suffix.
|
| builder.appendPath(folderId.toString());
|
| return builder.build();
|
| }
|
| @@ -100,18 +95,4 @@ class BookmarkUIState {
|
| BookmarkUIState other = (BookmarkUIState) obj;
|
| return mState == other.mState && TextUtils.equals(mUrl, other.mUrl);
|
| }
|
| -
|
| - /**
|
| - * @return Whether this state is valid.
|
| - */
|
| - boolean isValid(BookmarkModel bookmarkModel) {
|
| - if (mUrl == null || mState == STATE_INVALID) return false;
|
| -
|
| - if (mState == STATE_FOLDER) {
|
| - return mFolder != null && bookmarkModel.doesBookmarkExist(mFolder)
|
| - && !mFolder.equals(bookmarkModel.getRootFolderId());
|
| - }
|
| -
|
| - return true;
|
| - }
|
| }
|
|
|