Index: chrome/android/java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java |
index e8155c5166fb14a0648726ff3502e192776d797a..e0ed430bcbe204a868e042bb1ade1639d7746a51 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java |
@@ -18,7 +18,6 @@ import android.database.MatrixCursor; |
import android.net.Uri; |
import android.os.Binder; |
import android.os.Build; |
-import android.os.Bundle; |
import android.os.Parcel; |
import android.os.Parcelable; |
import android.os.UserHandle; |
@@ -31,7 +30,6 @@ import android.util.LongSparseArray; |
import org.chromium.base.ThreadUtils; |
import org.chromium.base.VisibleForTesting; |
import org.chromium.base.annotations.CalledByNative; |
-import org.chromium.base.annotations.CalledByNativeUnchecked; |
import org.chromium.base.annotations.SuppressFBWarnings; |
import org.chromium.base.library_loader.LibraryProcessType; |
import org.chromium.base.library_loader.ProcessInitException; |
@@ -40,7 +38,6 @@ import org.chromium.chrome.browser.externalauth.ExternalAuthUtils; |
import org.chromium.chrome.browser.init.ChromeBrowserInitializer; |
import org.chromium.content.app.ContentApplication; |
import org.chromium.content.browser.BrowserStartupController; |
-import org.chromium.sync.AndroidSyncSettings; |
import java.util.ArrayList; |
import java.util.Arrays; |
@@ -78,21 +75,6 @@ public class ChromeBrowserProvider extends ContentProvider { |
// making changes to this permission, also update the permission in AndroidManifest.xml. |
private static final String PERMISSION_READ_WRITE_BOOKMARKS = "READ_WRITE_BOOKMARK_FOLDERS"; |
- // Defines the API methods that the Client can call by name. |
- static final String CLIENT_API_BOOKMARK_NODE_EXISTS = "BOOKMARK_NODE_EXISTS"; |
- static final String CLIENT_API_CREATE_BOOKMARKS_FOLDER_ONCE = "CREATE_BOOKMARKS_FOLDER_ONCE"; |
- static final String CLIENT_API_GET_EDITABLE_BOOKMARK_FOLDER_HIERARCHY = |
- "GET_EDITABLE_BOOKMARK_FOLDER_HIERARCHY"; |
- static final String CLIENT_API_GET_BOOKMARK_NODE = "GET_BOOKMARK_NODE"; |
- static final String CLIENT_API_GET_DEFAULT_BOOKMARK_FOLDER = "GET_DEFAULT_BOOKMARK_FOLDER"; |
- static final String CLIENT_API_GET_MOBILE_BOOKMARKS_FOLDER_ID = |
- "GET_MOBILE_BOOKMARKS_FOLDER_ID"; |
- static final String CLIENT_API_IS_BOOKMARK_IN_MOBILE_BOOKMARKS_BRANCH = |
- "IS_BOOKMARK_IN_MOBILE_BOOKMARKS_BRANCH"; |
- static final String CLIENT_API_DELETE_ALL_USER_BOOKMARKS = "DELETE_ALL_USER_BOOKMARKS"; |
- static final String CLIENT_API_RESULT_KEY = "result"; |
- |
- |
// Defines Chrome's API authority, so it can be run and tested |
// independently. |
private static final String API_AUTHORITY_SUFFIX = ".browser"; |
@@ -124,7 +106,6 @@ public class ChromeBrowserProvider extends ContentProvider { |
private static final String SEARCHES_PATH = "searches"; |
private static final String HISTORY_PATH = "history"; |
private static final String COMBINED_PATH = "combined"; |
- private static final String BOOKMARK_FOLDER_PATH = "hierarchy"; |
public static final Uri BROWSER_CONTRACTS_BOOKMAKRS_API_URI = buildContentUri( |
BROWSER_CONTRACT_API_AUTHORITY, BOOKMARKS_PATH); |
@@ -152,8 +133,7 @@ public class ChromeBrowserProvider extends ContentProvider { |
public static final long INVALID_CONTENT_PROVIDER_ID = 0; |
// ID used to indicate an invalid id for bookmark nodes. |
- // Client API queries should use ChromeBrowserProviderClient.INVALID_BOOKMARK_ID. |
- static final long INVALID_BOOKMARK_ID = -1; |
+ private static final long INVALID_BOOKMARK_ID = -1; |
private static final String LAST_MODIFIED_BOOKMARK_FOLDER_ID_KEY = "last_bookmark_folder_id"; |
@@ -624,24 +604,12 @@ public class ChromeBrowserProvider extends ContentProvider { |
.apply(); |
} |
+ @VisibleForTesting |
public static String getApiAuthority(Context context) { |
return context.getPackageName() + API_AUTHORITY_SUFFIX; |
} |
@VisibleForTesting |
- public static String getInternalAuthority(Context context) { |
- return context.getPackageName() + AUTHORITY_SUFFIX; |
- } |
- |
- public static Uri getBookmarksUri(Context context) { |
- return buildContentUri(getInternalAuthority(context), BOOKMARKS_PATH); |
- } |
- |
- public static Uri getBookmarkFolderUri(Context context) { |
- return buildContentUri(getInternalAuthority(context), BOOKMARK_FOLDER_PATH); |
- } |
- |
- @VisibleForTesting |
public static Uri getBookmarksApiUri(Context context) { |
return buildContentUri(getApiAuthority(context), BOOKMARKS_PATH); |
} |
@@ -651,133 +619,6 @@ public class ChromeBrowserProvider extends ContentProvider { |
return buildContentUri(getApiAuthority(context), SEARCHES_PATH); |
} |
- private boolean bookmarkNodeExists(long nodeId) { |
- if (nodeId < 0) return false; |
- return nativeBookmarkNodeExists(mNativeChromeBrowserProvider, nodeId); |
- } |
- |
- private long createBookmarksFolderOnce(String title, long parentId) { |
- return nativeCreateBookmarksFolderOnce(mNativeChromeBrowserProvider, title, parentId); |
- } |
- |
- private BookmarkNode getEditableBookmarkFolderHierarchy() { |
- return nativeGetEditableBookmarkFolders(mNativeChromeBrowserProvider); |
- } |
- |
- private BookmarkNode getBookmarkNode(long nodeId, boolean getParent, boolean getChildren, |
- boolean getFavicons, boolean getThumbnails) { |
- // Don't allow going up the hierarchy if sync is disabled and the requested node |
- // is the Mobile Bookmarks folder. |
- if (getParent && nodeId == getMobileBookmarksFolderId() |
- && !AndroidSyncSettings.isSyncEnabled(getContext())) { |
- getParent = false; |
- } |
- |
- BookmarkNode node = nativeGetBookmarkNode(mNativeChromeBrowserProvider, nodeId, getParent, |
- getChildren); |
- if (!getFavicons && !getThumbnails) return node; |
- |
- // Favicons and thumbnails need to be populated separately as they are provided |
- // asynchronously by Chromium services other than the bookmark model. |
- if (node.parent() != null) populateNodeImages(node.parent(), getFavicons, getThumbnails); |
- for (BookmarkNode child : node.children()) { |
- populateNodeImages(child, getFavicons, getThumbnails); |
- } |
- |
- return node; |
- } |
- |
- private BookmarkNode getDefaultBookmarkFolder() { |
- // Try to access the bookmark folder last modified by us. If it doesn't exist anymore |
- // then use the synced node (Mobile Bookmarks). |
- BookmarkNode lastModified = getBookmarkNode(getLastModifiedBookmarkFolderId(), false, false, |
- false, false); |
- if (lastModified == null || lastModified.isUrl()) { |
- lastModified = getMobileBookmarksFolder(); |
- mLastModifiedBookmarkFolderId = lastModified != null ? lastModified.id() : |
- INVALID_BOOKMARK_ID; |
- } |
- return lastModified; |
- } |
- |
- private void populateNodeImages(BookmarkNode node, boolean favicon, boolean thumbnail) { |
- if (node == null || node.type() != Type.URL) return; |
- |
- if (favicon) { |
- node.setFavicon(nativeGetFaviconOrTouchIcon(mNativeChromeBrowserProvider, node.url())); |
- } |
- |
- if (thumbnail) { |
- node.setThumbnail(nativeGetThumbnail(mNativeChromeBrowserProvider, node.url())); |
- } |
- } |
- |
- private BookmarkNode getMobileBookmarksFolder() { |
- if (mMobileBookmarksFolder == null) { |
- mMobileBookmarksFolder = nativeGetMobileBookmarksFolder(mNativeChromeBrowserProvider); |
- } |
- return mMobileBookmarksFolder; |
- } |
- |
- private long getMobileBookmarksFolderId() { |
- BookmarkNode mobileBookmarks = getMobileBookmarksFolder(); |
- return mobileBookmarks != null ? mobileBookmarks.id() : INVALID_BOOKMARK_ID; |
- } |
- |
- private boolean isBookmarkInMobileBookmarksBranch(long nodeId) { |
- if (nodeId <= 0) return false; |
- return nativeIsBookmarkInMobileBookmarksBranch(mNativeChromeBrowserProvider, nodeId); |
- } |
- |
- static String argKey(int i) { |
- return "arg" + i; |
- } |
- |
- @Override |
- public Bundle call(String method, String arg, Bundle extras) { |
- // TODO(shashishekhar): Refactor this code into a separate class. |
- // Caller must have the READ_WRITE_BOOKMARK_FOLDERS permission. |
- getContext().enforcePermission(getReadWritePermissionNameForBookmarkFolders(), |
- Binder.getCallingPid(), Binder.getCallingUid(), TAG); |
- if (!canHandleContentProviderApiCall()) return null; |
- if (method == null || extras == null) return null; |
- |
- Bundle result = new Bundle(); |
- if (CLIENT_API_BOOKMARK_NODE_EXISTS.equals(method)) { |
- result.putBoolean(CLIENT_API_RESULT_KEY, |
- bookmarkNodeExists(extras.getLong(argKey(0)))); |
- } else if (CLIENT_API_CREATE_BOOKMARKS_FOLDER_ONCE.equals(method)) { |
- result.putLong(CLIENT_API_RESULT_KEY, |
- createBookmarksFolderOnce(extras.getString(argKey(0)), |
- extras.getLong(argKey(1)))); |
- } else if (CLIENT_API_GET_EDITABLE_BOOKMARK_FOLDER_HIERARCHY.equals(method)) { |
- result.putParcelable(CLIENT_API_RESULT_KEY, getEditableBookmarkFolderHierarchy()); |
- } else if (CLIENT_API_GET_BOOKMARK_NODE.equals(method)) { |
- result.putParcelable(CLIENT_API_RESULT_KEY, |
- getBookmarkNode(extras.getLong(argKey(0)), |
- extras.getBoolean(argKey(1)), |
- extras.getBoolean(argKey(2)), |
- extras.getBoolean(argKey(3)), |
- extras.getBoolean(argKey(4)))); |
- } else if (CLIENT_API_GET_DEFAULT_BOOKMARK_FOLDER.equals(method)) { |
- result.putParcelable(CLIENT_API_RESULT_KEY, getDefaultBookmarkFolder()); |
- } else if (method.equals(CLIENT_API_GET_MOBILE_BOOKMARKS_FOLDER_ID)) { |
- result.putLong(CLIENT_API_RESULT_KEY, getMobileBookmarksFolderId()); |
- } else if (CLIENT_API_IS_BOOKMARK_IN_MOBILE_BOOKMARKS_BRANCH.equals(method)) { |
- result.putBoolean(CLIENT_API_RESULT_KEY, |
- isBookmarkInMobileBookmarksBranch(extras.getLong(argKey(0)))); |
- } else if (CLIENT_API_DELETE_ALL_USER_BOOKMARKS.equals(method)) { |
- android.util.Log.i(TAG, "before nativeRemoveAllUserBookmarks"); |
- nativeRemoveAllUserBookmarks(mNativeChromeBrowserProvider); |
- android.util.Log.i(TAG, "after nativeRemoveAllUserBookmarks"); |
- } else { |
- Log.w(TAG, "Received invalid method " + method); |
- return null; |
- } |
- |
- return result; |
- } |
- |
/** |
* Checks whether Chrome is sufficiently initialized to handle a call to the |
* ChromeBrowserProvider. |
@@ -915,7 +756,6 @@ public class ChromeBrowserProvider extends ContentProvider { |
* Used solely by the native code. |
*/ |
@VisibleForTesting |
- @CalledByNativeUnchecked("BookmarkNode") |
public void addChild(BookmarkNode child) { |
mChildren.add(child); |
} |
@@ -959,12 +799,6 @@ public class ChromeBrowserProvider extends ContentProvider { |
return Arrays.equals(byte1, byte2); |
} |
- @CalledByNative("BookmarkNode") |
- private static BookmarkNode create( |
- long id, int type, String name, String url, BookmarkNode parent) { |
- return new BookmarkNode(id, Type.values()[type], name, url, parent); |
- } |
- |
@VisibleForTesting |
@SuppressFBWarnings("EI_EXPOSE_REP2") |
public void setFavicon(byte[] favicon) { |
@@ -1413,26 +1247,4 @@ public class ChromeBrowserProvider extends ContentProvider { |
private native int nativeRemoveSearchTermFromAPI(long nativeChromeBrowserProvider, |
String selection, String[] selectionArgs); |
- |
- // Client API native methods. |
- private native boolean nativeBookmarkNodeExists(long nativeChromeBrowserProvider, long id); |
- |
- private native long nativeCreateBookmarksFolderOnce(long nativeChromeBrowserProvider, |
- String title, long parentId); |
- |
- private native BookmarkNode nativeGetEditableBookmarkFolders(long nativeChromeBrowserProvider); |
- |
- private native void nativeRemoveAllUserBookmarks(long nativeChromeBrowserProvider); |
- |
- private native BookmarkNode nativeGetBookmarkNode(long nativeChromeBrowserProvider, |
- long id, boolean getParent, boolean getChildren); |
- |
- private native BookmarkNode nativeGetMobileBookmarksFolder(long nativeChromeBrowserProvider); |
- |
- private native boolean nativeIsBookmarkInMobileBookmarksBranch(long nativeChromeBrowserProvider, |
- long id); |
- |
- private native byte[] nativeGetFaviconOrTouchIcon(long nativeChromeBrowserProvider, String url); |
- |
- private native byte[] nativeGetThumbnail(long nativeChromeBrowserProvider, String url); |
} |