Chromium Code Reviews| 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 93f184e637623daceee6e11b2460daf7be6d95b9..d13ecd676f5d45943f5a04a1795eb69c1a03b5ca 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,7 +7,6 @@ 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; |
| @@ -16,11 +15,9 @@ import org.chromium.components.bookmarks.BookmarkId; |
| * states can be uniquely identified by a URL. |
| */ |
| class BookmarkUIState { |
| - static final String URI_PERSIST_QUERY_NAME = "persist"; |
| - |
| static final int STATE_LOADING = 1; |
| - static final int STATE_ALL_BOOKMARKS = 2; |
| - static final int STATE_FOLDER = 3; |
| + static final int STATE_FOLDER = 2; |
| + private static final int STATE_INVALID = 0; |
|
gone
2016/10/06 20:37:31
should this be above the other two?
|
| /** |
| * One of the STATE_* constants. |
| @@ -36,48 +33,48 @@ class BookmarkUIState { |
| return state; |
| } |
| - /** |
| - * Depending on experiments we run, "all bookmarks" might be redirected to the default folder. |
| - */ |
| - static BookmarkUIState createAllBookmarksState(BookmarkModel 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) |
| + */ |
| + static BookmarkUIState createStateFromUrl(String url, BookmarkModel bookmarkModel) { |
| + return createStateFromUrl(Uri.parse(url), bookmarkModel); |
| } |
| /** |
| - * Parses the url and generates the corresponding state. |
| + * @return A state corresponding to the URI object. If the URI is not valid, |
| + * return all_bookmarks. |
| */ |
| - static BookmarkUIState createStateFromUrl(String url, BookmarkModel bookmarkModel) { |
| - 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()); |
| + 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)) { |
| + return createFolderState(bookmarkModel.getDefaultFolder(), bookmarkModel); |
| + } else if (state.mUrl.startsWith(UrlConstants.BOOKMARKS_FOLDER_URL)) { |
| + String path = uri.getLastPathSegment(); |
| if (!path.isEmpty()) { |
| - BookmarkId folder = BookmarkId.getBookmarkIdFromString(path); |
| - return createFolderState(folder, bookmarkModel); |
| + state.mFolder = BookmarkId.getBookmarkIdFromString(path); |
| + state.mState = STATE_FOLDER; |
| } |
| } |
| - // If this line is reached, the url is not valid. Fall back to all bookmarks. |
| - return createAllBookmarksState(bookmarkModel); |
| + |
| + if (!state.isValid(bookmarkModel)) { |
| + state = createFolderState(bookmarkModel.getDefaultFolder(), bookmarkModel); |
| + } |
| + |
| + return state; |
| } |
| - @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(); |
| } |
| @@ -97,13 +94,16 @@ class BookmarkUIState { |
| } |
| /** |
| - * @return Whether this state is valid |
| + * @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 mUrl != null; |
| + |
| + return true; |
| } |
| } |