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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIState.java

Issue 2394273002: [Android] Permanently disable "All bookmarks" and remove its experiment (Closed)
Patch Set: Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.bookmarks; 5 package org.chromium.chrome.browser.bookmarks;
6 6
7 import android.net.Uri; 7 import android.net.Uri;
8 import android.text.TextUtils; 8 import android.text.TextUtils;
9 9
10 import org.chromium.base.VisibleForTesting;
11 import org.chromium.chrome.browser.UrlConstants; 10 import org.chromium.chrome.browser.UrlConstants;
12 import org.chromium.components.bookmarks.BookmarkId; 11 import org.chromium.components.bookmarks.BookmarkId;
13 12
14 /** 13 /**
15 * A class representing the UI state of the {@link BookmarkManager}. All 14 * A class representing the UI state of the {@link BookmarkManager}. All
16 * states can be uniquely identified by a URL. 15 * states can be uniquely identified by a URL.
17 */ 16 */
18 class BookmarkUIState { 17 class BookmarkUIState {
19 static final String URI_PERSIST_QUERY_NAME = "persist";
20
21 static final int STATE_LOADING = 1; 18 static final int STATE_LOADING = 1;
22 static final int STATE_ALL_BOOKMARKS = 2; 19 static final int STATE_FOLDER = 2;
23 static final int STATE_FOLDER = 3; 20 private static final int STATE_INVALID = 0;
24 21
25 /** 22 /**
26 * One of the STATE_* constants. 23 * One of the STATE_* constants.
27 */ 24 */
28 int mState; 25 int mState;
29 String mUrl; 26 String mUrl;
30 BookmarkId mFolder; 27 BookmarkId mFolder;
31 28
32 static BookmarkUIState createLoadingState() { 29 static BookmarkUIState createLoadingState() {
33 BookmarkUIState state = new BookmarkUIState(); 30 BookmarkUIState state = new BookmarkUIState();
34 state.mState = STATE_LOADING; 31 state.mState = STATE_LOADING;
35 state.mUrl = ""; 32 state.mUrl = "";
36 return state; 33 return state;
37 } 34 }
38 35
36 static BookmarkUIState createFolderState(BookmarkId folder,
37 BookmarkModel bookmarkModel) {
38 return createStateFromUrl(createFolderUrl(folder), bookmarkModel);
39 }
40
39 /** 41 /**
40 * Depending on experiments we run, "all bookmarks" might be redirected to t he default folder. 42 * @see #createStateFromUrl(Uri, BookmarkModel)
41 */ 43 */
42 static BookmarkUIState createAllBookmarksState(BookmarkModel bookmarkModel) { 44 static BookmarkUIState createStateFromUrl(String url, BookmarkModel bookmark Model) {
43 if (!BookmarkUtils.isAllBookmarksViewEnabled()) { 45 return createStateFromUrl(Uri.parse(url), bookmarkModel);
44 return createFolderState(bookmarkModel.getDefaultFolder(), null); 46 }
47
48 /**
49 * @return A state corresponding to the URI object. If the URI is not valid,
50 * return all_bookmarks.
51 */
52 static BookmarkUIState createStateFromUrl(Uri uri, BookmarkModel bookmarkMod el) {
53 BookmarkUIState state = new BookmarkUIState();
54 state.mState = STATE_INVALID;
55 state.mUrl = uri.toString();
56
57 if (state.mUrl.equals(UrlConstants.BOOKMARKS_URL)) {
58 return createFolderState(bookmarkModel.getDefaultFolder(), bookmarkM odel);
59 } else if (state.mUrl.startsWith(UrlConstants.BOOKMARKS_FOLDER_URL)) {
60 String path = uri.getLastPathSegment();
61 if (!path.isEmpty()) {
62 state.mFolder = BookmarkId.getBookmarkIdFromString(path);
63 state.mState = STATE_FOLDER;
64 }
45 } 65 }
46 BookmarkUIState state = new BookmarkUIState(); 66
47 state.mState = STATE_ALL_BOOKMARKS; 67 if (!state.isValid(bookmarkModel)) {
48 state.mUrl = UrlConstants.BOOKMARKS_URL; 68 state = createFolderState(bookmarkModel.getDefaultFolder(), bookmark Model);
69 }
70
49 return state; 71 return state;
50 } 72 }
51 73
52 static BookmarkUIState createFolderState(BookmarkId folder, BookmarkModel bo okmarkModel) {
53 if (folder == null) return createAllBookmarksState(bookmarkModel);
54 BookmarkUIState state = new BookmarkUIState();
55 state.mState = STATE_FOLDER;
56 state.mUrl = UrlConstants.BOOKMARKS_FOLDER_URL + folder.toString();
57 state.mFolder = folder;
58 return state;
59 }
60
61 /**
62 * Parses the url and generates the corresponding state.
63 */
64 static BookmarkUIState createStateFromUrl(String url, BookmarkModel bookmark Model) {
65 if (url.equals(UrlConstants.BOOKMARKS_URL)) {
66 return createAllBookmarksState(bookmarkModel);
67 } else if (url.startsWith(UrlConstants.BOOKMARKS_FOLDER_URL)) {
68 String path = url.substring(UrlConstants.BOOKMARKS_FOLDER_URL.length ());
69 if (!path.isEmpty()) {
70 BookmarkId folder = BookmarkId.getBookmarkIdFromString(path);
71 return createFolderState(folder, bookmarkModel);
72 }
73 }
74 // If this line is reached, the url is not valid. Fall back to all bookm arks.
75 return createAllBookmarksState(bookmarkModel);
76 }
77
78 @VisibleForTesting
79 static Uri createFolderUrl(BookmarkId folderId) { 74 static Uri createFolderUrl(BookmarkId folderId) {
80 Uri.Builder builder = Uri.parse(UrlConstants.BOOKMARKS_FOLDER_URL).build Upon(); 75 Uri.Builder builder = Uri.parse(UrlConstants.BOOKMARKS_FOLDER_URL).build Upon();
76 // Encodes the path and appends it to the base url. A simple appending
77 // does not work because there might be spaces in suffix.
81 builder.appendPath(folderId.toString()); 78 builder.appendPath(folderId.toString());
82 return builder.build(); 79 return builder.build();
83 } 80 }
84 81
85 private BookmarkUIState() {} 82 private BookmarkUIState() {}
86 83
87 @Override 84 @Override
88 public int hashCode() { 85 public int hashCode() {
89 return 31 * mUrl.hashCode() + mState; 86 return 31 * mUrl.hashCode() + mState;
90 } 87 }
91 88
92 @Override 89 @Override
93 public boolean equals(Object obj) { 90 public boolean equals(Object obj) {
94 if (!(obj instanceof BookmarkUIState)) return false; 91 if (!(obj instanceof BookmarkUIState)) return false;
95 BookmarkUIState other = (BookmarkUIState) obj; 92 BookmarkUIState other = (BookmarkUIState) obj;
96 return mState == other.mState && TextUtils.equals(mUrl, other.mUrl); 93 return mState == other.mState && TextUtils.equals(mUrl, other.mUrl);
97 } 94 }
98 95
99 /** 96 /**
100 * @return Whether this state is valid 97 * @return Whether this state is valid.
101 */ 98 */
102 boolean isValid(BookmarkModel bookmarkModel) { 99 boolean isValid(BookmarkModel bookmarkModel) {
100 if (mUrl == null || mState == STATE_INVALID) return false;
101
103 if (mState == STATE_FOLDER) { 102 if (mState == STATE_FOLDER) {
104 return mFolder != null && bookmarkModel.doesBookmarkExist(mFolder) 103 return mFolder != null && bookmarkModel.doesBookmarkExist(mFolder)
105 && !mFolder.equals(bookmarkModel.getRootFolderId()); 104 && !mFolder.equals(bookmarkModel.getRootFolderId());
106 } 105 }
107 return mUrl != null; 106
107 return true;
108 } 108 }
109 } 109 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698