diff options
author | ianwen <ianwen@chromium.org> | 2015-07-27 10:16:51 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-27 17:17:43 +0000 |
commit | ee37b0dffaa16a90f199a0e539c9382e0d0da3e6 (patch) | |
tree | f010afe4b249f7f3c759d0585205a5060635c703 | |
parent | 83487b6773bbda6a46191dede6010ec90e5a9ae8 (diff) | |
download | chromium_src-ee37b0dffaa16a90f199a0e539c9382e0d0da3e6.zip chromium_src-ee37b0dffaa16a90f199a0e539c9382e0d0da3e6.tar.gz chromium_src-ee37b0dffaa16a90f199a0e539c9382e0d0da3e6.tar.bz2 |
Clean up Enhanced Bookmark's data acquiring logic
This CL:
1. makes EnhancedBookmarkModel a subclass of
EnhancedBookmarksBridge, which frees us from boilerplating. Also
EnhancedBookmarksBridge is removed, both for java and native.
2. removes enhanced_bookmarks java package and all class are
unified in enhancedbookmarks package.
3. adds ianwen@ to enhancedbookmark folder's owner list.
BUG=513509
Review URL: https://codereview.chromium.org/1247033009
Cr-Commit-Position: refs/heads/master@{#340491}
26 files changed, 179 insertions, 633 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BookmarksBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/BookmarksBridge.java index c6df9d9..c73bd45 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/BookmarksBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/BookmarksBridge.java @@ -488,7 +488,6 @@ public class BookmarksBridge { * @return Id of the added node. If adding failed (index is invalid, string is null, parent is * not editable), returns null. */ - @VisibleForTesting public BookmarkId addFolder(BookmarkId parent, int index, String title) { assert parent.getType() == BookmarkType.NORMAL; assert index >= 0; @@ -509,7 +508,6 @@ public class BookmarksBridge { * @return Id of the added node. If adding failed (index is invalid, string is null, parent is * not editable), returns null. */ - @VisibleForTesting public BookmarkId addBookmark(BookmarkId parent, int index, String title, String url) { assert parent.getType() == BookmarkType.NORMAL; assert index >= 0; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java index 166d31d..e3015cd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java @@ -72,8 +72,8 @@ import org.chromium.chrome.browser.device.DeviceClassManager; import org.chromium.chrome.browser.dom_distiller.DistilledPagePrefsView; import org.chromium.chrome.browser.dom_distiller.ReaderModeActivityDelegate; import org.chromium.chrome.browser.dom_distiller.ReaderModeManager; -import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel; import org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkUtils; +import org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarksModel; import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager; import org.chromium.chrome.browser.gsa.ContextReporter; import org.chromium.chrome.browser.gsa.GSAServiceClient; @@ -943,14 +943,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity EnhancedBookmarkUtils.startEditActivity(ChromeActivity.this, new BookmarkId(bookmarkId, BookmarkType.NORMAL)); } - bookmarkModel.removeModelObserver(this); + bookmarkModel.removeObserver(this); } }; if (bookmarkModel.isBookmarkModelLoaded()) { modelObserver.bookmarkModelLoaded(); } else { - bookmarkModel.addModelObserver(modelObserver); + bookmarkModel.addObserver(modelObserver); } } else { Intent intent = new Intent(this, ManageBookmarkActivity.class); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhanced_bookmarks/EnhancedBookmarksBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/enhanced_bookmarks/EnhancedBookmarksBridge.java deleted file mode 100644 index e0e2762..0000000 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhanced_bookmarks/EnhancedBookmarksBridge.java +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.chrome.browser.enhanced_bookmarks; - -import org.chromium.base.JNINamespace; -import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.components.bookmarks.BookmarkId; - -/** - * Access gate to C++ side enhanced bookmarks functionalities. - */ -@JNINamespace("enhanced_bookmarks::android") -public final class EnhancedBookmarksBridge { - // TODO(ianwen): remove this bridge. - private long mNativeEnhancedBookmarksBridge; - - /** - * Creates a new enhanced bridge using the given profile. - */ - public EnhancedBookmarksBridge(Profile profile) { - mNativeEnhancedBookmarksBridge = nativeInit(profile); - } - - public void destroy() { - assert mNativeEnhancedBookmarksBridge != 0; - nativeDestroy(mNativeEnhancedBookmarksBridge); - mNativeEnhancedBookmarksBridge = 0; - } - - /** - * Adds a folder to the EnhancedBookmarkModel - * @param parent The parent of this folder - * @param index The position this folder should appear within the parent - * @param title The title of the bookmark - * @return The ID of the newly created folder. - */ - public BookmarkId addFolder(BookmarkId parent, int index, String title) { - return nativeAddFolder(mNativeEnhancedBookmarksBridge, parent, index, title); - } - - /** - * Adds a Bookmark to the EnhancedBookmarkModel - * @param parent The parent of this bookmark - * @param index The position this bookmark should appear within the parent - * @param title The title of the bookmark - * @param url URL of the bookmark - * @return The ID of the newly created bookmark - */ - public BookmarkId addBookmark(BookmarkId parent, int index, String title, String url) { - return nativeAddBookmark(mNativeEnhancedBookmarksBridge, parent, index, title, url); - } - - /** - * Moves a bookmark to another folder, and append it at the end of the list of all children. - * @param bookmarkId The item to be be moved - * @param newParentId The new parent of the item - */ - public void moveBookmark(BookmarkId bookmarkId, BookmarkId newParentId) { - nativeMoveBookmark(mNativeEnhancedBookmarksBridge, bookmarkId, newParentId); - } - - private native long nativeInit(Profile profile); - private native void nativeDestroy(long nativeEnhancedBookmarksBridge); - private native BookmarkId nativeAddFolder(long nativeEnhancedBookmarksBridge, BookmarkId parent, - int index, String title); - private native void nativeMoveBookmark(long nativeEnhancedBookmarksBridge, - BookmarkId bookmarkId, BookmarkId newParentId); - private native BookmarkId nativeAddBookmark(long nativeEnhancedBookmarksBridge, - BookmarkId parent, int index, String title, String url); -} diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhanced_bookmarks/EnhancedBookmarksModel.java b/chrome/android/java/src/org/chromium/chrome/browser/enhanced_bookmarks/EnhancedBookmarksModel.java deleted file mode 100644 index 1750af7..0000000 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhanced_bookmarks/EnhancedBookmarksModel.java +++ /dev/null @@ -1,315 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.chrome.browser.enhanced_bookmarks; - -import org.chromium.base.ObserverList; -import org.chromium.base.VisibleForTesting; -import org.chromium.chrome.browser.BookmarksBridge; -import org.chromium.chrome.browser.BookmarksBridge.BookmarkItem; -import org.chromium.chrome.browser.BookmarksBridge.BookmarkModelObserver; -import org.chromium.chrome.browser.favicon.LargeIconBridge; -import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback; -import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.components.bookmarks.BookmarkId; -import org.chromium.components.bookmarks.BookmarkType; -import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; - -import java.util.List; - -/** - * A class that encapsulates all the (enhanced) bookmark model related logic. Essentially, this is a - * collection of all the bookmark bridges with helper functions. It is recommended to create a new - * instance of this class, instead of passing it around. However, be sure to call - * {@link EnhancedBookmarksModel#destroy()} once you are done with it. - */ -public class EnhancedBookmarksModel { - // TODO(ianwen): make this class a subclass of BookmarksBridge. - /** - * Observer that listens to delete event. This interface is used by undo controllers to know - * which bookmarks were deleted. Note this observer only listens to events that go through - * enhanced bookmark model. - */ - public interface EnhancedBookmarkDeleteObserver { - - /** - * Callback being triggered immediately before bookmarks are deleted. - * @param titles All titles of the bookmarks to be deleted. - * @param isUndoable Whether the deletion is undoable. - */ - void onDeleteBookmarks(String[] titles, boolean isUndoable); - } - - private final BookmarksBridge mBookmarksBridge; - private final EnhancedBookmarksBridge mEnhancedBookmarksBridge; - private LargeIconBridge mLargeIconBridge; - private ObserverList<EnhancedBookmarkDeleteObserver> mDeleteObservers = new ObserverList<>(); - - /** - * Initialize enhanced bookmark model for last used non-incognito profile with a java-side image - * cache that has the given size. - */ - public EnhancedBookmarksModel() { - this(Profile.getLastUsedProfile().getOriginalProfile()); - } - - @VisibleForTesting - public EnhancedBookmarksModel(Profile profile) { - mBookmarksBridge = new BookmarksBridge(profile); - mEnhancedBookmarksBridge = new EnhancedBookmarksBridge(profile); - mLargeIconBridge = new LargeIconBridge(); - } - - /** - * Clean up all the bridges. This must be called after done using this class. - */ - public void destroy() { - mBookmarksBridge.destroy(); - mEnhancedBookmarksBridge.destroy(); - mLargeIconBridge.destroy(); - } - - /** - * @see BookmarksBridge#addObserver(BookmarkModelObserver) - */ - public void addModelObserver(BookmarkModelObserver observer) { - mBookmarksBridge.addObserver(observer); - } - - /** - * @see BookmarksBridge#removeObserver(BookmarkModelObserver) - */ - public void removeModelObserver(BookmarkModelObserver observer) { - mBookmarksBridge.removeObserver(observer); - } - - /** - * @see BookmarksBridge#isBookmarkModelLoaded() - */ - public boolean isBookmarkModelLoaded() { - return mBookmarksBridge.isBookmarkModelLoaded(); - } - - /** - * @see BookmarksBridge#getBookmarkById(BookmarkId) - */ - public BookmarkItem getBookmarkById(BookmarkId id) { - return mBookmarksBridge.getBookmarkById(id); - } - - /** - * Add an observer that listens to delete events that go through enhanced bookmark model. - * @param observer The observer to add. - */ - public void addDeleteObserver(EnhancedBookmarkDeleteObserver observer) { - mDeleteObservers.addObserver(observer); - } - - /** - * Remove the observer from listening to bookmark deleting events. - * @param observer The observer to remove. - */ - public void removeDeleteObserver(EnhancedBookmarkDeleteObserver observer) { - mDeleteObservers.removeObserver(observer); - } - - /** - * Delete one or multiple bookmarks from model. If more than one bookmarks are passed here, this - * method will group these delete operations into one undo bundle so that later if the user - * clicks undo, all bookmarks deleted here will be restored. - * @param bookmarks Bookmarks to delete. Note this array should not contain a folder and its - * children, because deleting folder will also remove all its children, and - * deleting children once more will cause errors. - */ - public void deleteBookmarks(BookmarkId... bookmarks) { - assert bookmarks != null && bookmarks.length > 0; - // Store all titles of bookmarks. - String[] titles = new String[bookmarks.length]; - boolean isUndoable = true; - for (int i = 0; i < bookmarks.length; i++) { - titles[i] = getBookmarkTitle(bookmarks[i]); - isUndoable &= (bookmarks[i].getType() == BookmarkType.NORMAL); - } - - if (bookmarks.length == 1) { - mBookmarksBridge.deleteBookmark(bookmarks[0]); - } else { - mBookmarksBridge.startGroupingUndos(); - for (BookmarkId bookmark : bookmarks) { - mBookmarksBridge.deleteBookmark(bookmark); - } - mBookmarksBridge.endGroupingUndos(); - } - - for (EnhancedBookmarkDeleteObserver observer : mDeleteObservers) { - observer.onDeleteBookmarks(titles, isUndoable); - } - } - - /** - * @see BookmarksBridge#getTopLevelFolderParentIDs() - */ - public List<BookmarkId> getTopLevelFolderParentIDs() { - return mBookmarksBridge.getTopLevelFolderParentIDs(); - } - - /** - * @see BookmarksBridge#getTopLevelFolderIDs(boolean, boolean) - */ - public List<BookmarkId> getTopLevelFolderIDs(boolean getSpecial, boolean getNormal) { - return mBookmarksBridge.getTopLevelFolderIDs(getSpecial, getNormal); - } - - /** - * @see BookmarksBridge#getAllFoldersWithDepths(List, List) - */ - public void getAllFoldersWithDepths(List<BookmarkId> bookmarkList, List<Integer> depthList) { - mBookmarksBridge.getAllFoldersWithDepths(bookmarkList, depthList); - } - - /** - * @see BookmarksBridge#getMoveDestinations(List, List, List) - */ - public void getMoveDestinations(List<BookmarkId> bookmarkList, List<Integer> depthList, - List<BookmarkId> bookmarksToMove) { - mBookmarksBridge.getMoveDestinations(bookmarkList, depthList, bookmarksToMove); - } - - /** - * @see BookmarksBridge#getRootFolderId() - */ - public BookmarkId getRootFolderId() { - return mBookmarksBridge.getRootFolderId(); - } - - /** - * @see BookmarksBridge#getOtherFolderId() - */ - public BookmarkId getOtherFolderId() { - return mBookmarksBridge.getOtherFolderId(); - } - - /** - * @see BookmarksBridge#getMobileFolderId() - */ - public BookmarkId getMobileFolderId() { - return mBookmarksBridge.getMobileFolderId(); - } - - /** - * @see BookmarksBridge#getDesktopFolderId() - */ - public BookmarkId getDesktopFolderId() { - return mBookmarksBridge.getDesktopFolderId(); - } - - /** - * @return The id of the default folder to add bookmarks/folders to. - */ - public BookmarkId getDefaultFolder() { - return mBookmarksBridge.getMobileFolderId(); - } - - /** - * @see BookmarksBridge#getChildIDs(BookmarkId, boolean, boolean) - */ - public List<BookmarkId> getChildIDs(BookmarkId id, boolean getFolders, boolean getBookmarks) { - return mBookmarksBridge.getChildIDs(id, getFolders, getBookmarks); - } - - public BookmarkId getChildAt(BookmarkId folderId, int index) { - return mBookmarksBridge.getChildAt(folderId, index); - } - - /** - * @see BookmarksBridge#getAllBookmarkIDsOrderedByCreationDate() - */ - public List<BookmarkId> getAllBookmarkIDsOrderedByCreationDate() { - return mBookmarksBridge.getAllBookmarkIDsOrderedByCreationDate(); - } - - /** - * @see BookmarksBridge#doesBookmarkExist(BookmarkId) - */ - public boolean doesBookmarkExist(BookmarkId id) { - return mBookmarksBridge.doesBookmarkExist(id); - } - - /** - * @see BookmarksBridge#setBookmarkTitle(BookmarkId, String) - */ - public void setBookmarkTitle(BookmarkId bookmark, String title) { - mBookmarksBridge.setBookmarkTitle(bookmark, title); - } - - /** - * @see BookmarksBridge#setBookmarkUrl(BookmarkId, String) - */ - public void setBookmarkUrl(BookmarkId bookmark, String url) { - mBookmarksBridge.setBookmarkUrl(bookmark, url); - } - - /** - * - * @see EnhancedBookmarksBridge#addFolder(BookmarkId, int, String) - */ - public BookmarkId addFolder(BookmarkId parent, int index, String title) { - return mEnhancedBookmarksBridge.addFolder(parent, index, title); - } - - /** - * @see EnhancedBookmarksBridge#addBookmark(BookmarkId, int, String, String) - */ - public BookmarkId addBookmark(BookmarkId parent, int index, String title, String url) { - url = DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(url); - return mEnhancedBookmarksBridge.addBookmark(parent, index, title, url); - } - - /** - * Calls {@link EnhancedBookmarksBridge#moveBookmark(BookmarkId, BookmarkId)} in a reversed - * order of the list, in order to let the last item appear at the top. - */ - public void moveBookmarks(List<BookmarkId> bookmarkIds, BookmarkId newParentId) { - for (int i = bookmarkIds.size() - 1; i >= 0; i--) { - mEnhancedBookmarksBridge.moveBookmark(bookmarkIds.get(i), newParentId); - } - } - - /** - * @see BookmarkItem#getTitle() - */ - public String getBookmarkTitle(BookmarkId bookmarkId) { - BookmarkItem item = mBookmarksBridge.getBookmarkById(bookmarkId); - return item.getTitle(); - } - - /** - * @see LargeIconBridge#getLargeIconForUrl(Profile, String, int, LargeIconCallback) - */ - public void getLargeIcon(String url, int minSize, LargeIconCallback callback) { - mLargeIconBridge.getLargeIconForUrl(Profile.getLastUsedProfile(), url, minSize, callback); - } - - /** - * @see BookmarksBridge#undo() - */ - public void undo() { - mBookmarksBridge.undo(); - } - - /** - * @see BookmarksBridge#loadEmptyPartnerBookmarkShimForTesting() - */ - @VisibleForTesting - public void loadEmptyPartnerBookmarkShimForTesting() { - mBookmarksBridge.loadEmptyPartnerBookmarkShimForTesting(); - } - - /** - * @see BookmarksBridge#isFolderVisible(BookmarkId) - */ - public boolean isFolderVisible(BookmarkId bookmarkId) { - return mBookmarksBridge.isFolderVisible(bookmarkId); - } -} diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhanced_bookmarks/OWNERS b/chrome/android/java/src/org/chromium/chrome/browser/enhanced_bookmarks/OWNERS deleted file mode 100644 index 6f497bd..0000000 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhanced_bookmarks/OWNERS +++ /dev/null @@ -1 +0,0 @@ -kkimlabs@chromium.org
\ No newline at end of file diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkActionBar.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkActionBar.java index 23da34a..c513686 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkActionBar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkActionBar.java @@ -18,7 +18,6 @@ import android.view.View.OnClickListener; import org.chromium.chrome.R; import org.chromium.chrome.browser.BookmarksBridge.BookmarkItem; import org.chromium.chrome.browser.BookmarksBridge.BookmarkModelObserver; -import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel; import org.chromium.chrome.browser.widget.NumberRollView; import org.chromium.components.bookmarks.BookmarkId; import org.chromium.components.bookmarks.BookmarkType; @@ -190,13 +189,13 @@ public class EnhancedBookmarkActionBar extends Toolbar implements EnhancedBookma public void onEnhancedBookmarkDelegateInitialized(EnhancedBookmarkDelegate delegate) { mDelegate = delegate; mDelegate.addUIObserver(this); - delegate.getModel().addModelObserver(mBookmarkModelObserver); + delegate.getModel().addObserver(mBookmarkModelObserver); } @Override public void onDestroy() { mDelegate.removeUIObserver(this); - mDelegate.getModel().removeModelObserver(mBookmarkModelObserver); + mDelegate.getModel().removeObserver(mBookmarkModelObserver); } @Override diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkAddEditFolderActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkAddEditFolderActivity.java index be1b5d4..d1169182 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkAddEditFolderActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkAddEditFolderActivity.java @@ -17,7 +17,6 @@ import android.widget.TextView; import org.chromium.chrome.R; import org.chromium.chrome.browser.BookmarksBridge.BookmarkItem; import org.chromium.chrome.browser.BookmarksBridge.BookmarkModelObserver; -import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel; import org.chromium.chrome.browser.widget.EmptyAlertEditText; import org.chromium.chrome.browser.widget.TintedDrawable; import org.chromium.components.bookmarks.BookmarkId; @@ -116,7 +115,7 @@ public class EnhancedBookmarkAddEditFolderActivity extends EnhancedBookmarkActiv EnhancedBookmarkUtils.setTaskDescriptionInDocumentMode(this, getString(R.string.enhanced_bookmark_action_bar_edit_folder)); mModel = new EnhancedBookmarksModel(); - mModel.addModelObserver(mBookmarkModelObserver); + mModel.addObserver(mBookmarkModelObserver); mIsAddMode = getIntent().getBooleanExtra(INTENT_IS_ADD_MODE, false); if (mIsAddMode) { List<String> stringList = getIntent().getStringArrayListExtra( @@ -226,7 +225,7 @@ public class EnhancedBookmarkAddEditFolderActivity extends EnhancedBookmarkActiv @Override protected void onDestroy() { super.onDestroy(); - mModel.removeModelObserver(mBookmarkModelObserver); + mModel.removeObserver(mBookmarkModelObserver); mModel.destroy(); mModel = null; } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkBookmarkRow.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkBookmarkRow.java index d0cc7c9..06afe7f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkBookmarkRow.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkBookmarkRow.java @@ -13,7 +13,6 @@ import android.util.AttributeSet; import org.chromium.chrome.R; import org.chromium.chrome.browser.BookmarksBridge.BookmarkItem; -import org.chromium.chrome.browser.enhanced_bookmarks.LaunchLocation; import org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkManager.UIState; import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback; import org.chromium.chrome.browser.widget.RoundedIconGenerator; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkDelegate.java index 60b1f68..7685645 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkDelegate.java @@ -6,8 +6,6 @@ package org.chromium.chrome.browser.enhancedbookmarks; import android.support.v4.widget.DrawerLayout; -import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel; -import org.chromium.chrome.browser.enhanced_bookmarks.LaunchLocation; import org.chromium.components.bookmarks.BookmarkId; import java.util.List; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkDrawerListView.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkDrawerListView.java index 16bc4eb..91f10f5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkDrawerListView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkDrawerListView.java @@ -72,14 +72,14 @@ class EnhancedBookmarkDrawerListView extends ListView implements EnhancedBookmar @Override public void onEnhancedBookmarkDelegateInitialized(EnhancedBookmarkDelegate delegate) { mDelegate = delegate; - delegate.getModel().addModelObserver(mBookmarkModelObserver); + delegate.getModel().addObserver(mBookmarkModelObserver); mAdapter.setEnhancedBookmarkUIDelegate(delegate); delegate.addUIObserver(this); } @Override public void onDestroy() { - mDelegate.getModel().removeModelObserver(mBookmarkModelObserver); + mDelegate.getModel().removeObserver(mBookmarkModelObserver); mDelegate.removeUIObserver(this); } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkEditActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkEditActivity.java index f1244d6..5b68ae1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkEditActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkEditActivity.java @@ -15,7 +15,6 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.BookmarksBridge.BookmarkItem; import org.chromium.chrome.browser.BookmarksBridge.BookmarkModelObserver; import org.chromium.chrome.browser.UrlUtilities; -import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel; import org.chromium.chrome.browser.widget.EmptyAlertEditText; import org.chromium.chrome.browser.widget.TintedDrawable; import org.chromium.components.bookmarks.BookmarkId; @@ -75,7 +74,7 @@ public class EnhancedBookmarkEditActivity extends EnhancedBookmarkActivityBase { mEnhancedBookmarksModel = new EnhancedBookmarksModel(); mBookmarkId = BookmarkId.getBookmarkIdFromString( getIntent().getStringExtra(INTENT_BOOKMARK_ID)); - mEnhancedBookmarksModel.addModelObserver(mBookmarkModelObserver); + mEnhancedBookmarksModel.addObserver(mBookmarkModelObserver); setContentView(R.layout.eb_edit); mTitleEditText = (EmptyAlertEditText) findViewById(R.id.title_text); @@ -143,7 +142,7 @@ public class EnhancedBookmarkEditActivity extends EnhancedBookmarkActivityBase { @Override protected void onDestroy() { - mEnhancedBookmarksModel.removeModelObserver(mBookmarkModelObserver); + mEnhancedBookmarksModel.removeObserver(mBookmarkModelObserver); mEnhancedBookmarksModel.destroy(); mEnhancedBookmarksModel = null; super.onDestroy(); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkFolderSelectActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkFolderSelectActivity.java index f61ff63..e6262ae 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkFolderSelectActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkFolderSelectActivity.java @@ -22,7 +22,6 @@ import org.chromium.base.ApiCompatibilityUtils; import org.chromium.chrome.R; import org.chromium.chrome.browser.BookmarksBridge.BookmarkItem; import org.chromium.chrome.browser.BookmarksBridge.BookmarkModelObserver; -import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel; import org.chromium.chrome.browser.widget.TintedDrawable; import org.chromium.components.bookmarks.BookmarkId; @@ -116,7 +115,7 @@ public class EnhancedBookmarkFolderSelectActivity extends EnhancedBookmarkActivi EnhancedBookmarkUtils.setTaskDescriptionInDocumentMode(this, getString(R.string.enhanced_bookmark_choose_folder)); mEnhancedBookmarksModel = new EnhancedBookmarksModel(); - mEnhancedBookmarksModel.addModelObserver(mBookmarkModelObserver); + mEnhancedBookmarksModel.addObserver(mBookmarkModelObserver); List<String> stringList = getIntent().getStringArrayListExtra(INTENT_BOOKMARKS_TO_MOVE); mBookmarksToMove = new ArrayList<>(stringList.size()); for (String string : stringList) { @@ -124,7 +123,7 @@ public class EnhancedBookmarkFolderSelectActivity extends EnhancedBookmarkActivi } mIsCreatingFolder = getIntent().getBooleanExtra(INTENT_IS_CREATING_FOLDER, false); if (mIsCreatingFolder) { - mParentId = mEnhancedBookmarksModel.getDefaultFolder(); + mParentId = mEnhancedBookmarksModel.getMobileFolderId(); } else { mParentId = mEnhancedBookmarksModel.getBookmarkById(mBookmarksToMove.get(0)) .getParentId(); @@ -180,7 +179,7 @@ public class EnhancedBookmarkFolderSelectActivity extends EnhancedBookmarkActivi @Override protected void onDestroy() { super.onDestroy(); - mEnhancedBookmarksModel.removeModelObserver(mBookmarkModelObserver); + mEnhancedBookmarksModel.removeObserver(mBookmarkModelObserver); mEnhancedBookmarksModel.destroy(); mEnhancedBookmarksModel = null; } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkItemsAdapter.java index 30c9e87..75822be 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkItemsAdapter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkItemsAdapter.java @@ -86,7 +86,7 @@ class EnhancedBookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.Vie private int toSectionPosition(int globalPosition) { int sectionPosition = globalPosition; - for (List section : mSections) { + for (List<?> section : mSections) { if (sectionPosition < section.size()) break; sectionPosition -= section.size(); } @@ -151,7 +151,7 @@ class EnhancedBookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.Vie } private void removeItem(int position) { - List section = getSection(position); + List<?> section = getSection(position); assert section == mFolderSection || section == mBookmarkSection; section.remove(toSectionPosition(position)); notifyItemRemoved(position); @@ -162,7 +162,7 @@ class EnhancedBookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.Vie @Override public int getItemCount() { int count = 0; - for (List section : mSections) { + for (List<?> section : mSections) { count += section.size(); } return count; @@ -170,7 +170,7 @@ class EnhancedBookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.Vie @Override public int getItemViewType(int position) { - List section = getSection(position); + List<?> section = getSection(position); if (section == mPromoHeaderSection) { return PROMO_HEADER_VIEW; @@ -247,7 +247,7 @@ class EnhancedBookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.Vie public void onEnhancedBookmarkDelegateInitialized(EnhancedBookmarkDelegate delegate) { mDelegate = delegate; mDelegate.addUIObserver(this); - mDelegate.getModel().addModelObserver(mBookmarkModelObserver); + mDelegate.getModel().addObserver(mBookmarkModelObserver); mPromoHeaderManager = new EnhancedBookmarkPromoHeader(mContext, this); if (mPromoHeaderManager.shouldShow()) mPromoHeaderSection.add(null); @@ -257,7 +257,7 @@ class EnhancedBookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.Vie @Override public void onDestroy() { mDelegate.removeUIObserver(this); - mDelegate.getModel().removeModelObserver(mBookmarkModelObserver); + mDelegate.getModel().removeObserver(mBookmarkModelObserver); mPromoHeaderManager.destroy(); } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkManager.java index 3d009d6..8d7a6cf 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkManager.java @@ -18,8 +18,6 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.BookmarksBridge.BookmarkItem; import org.chromium.chrome.browser.BookmarksBridge.BookmarkModelObserver; import org.chromium.chrome.browser.UrlConstants; -import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel; -import org.chromium.chrome.browser.enhanced_bookmarks.LaunchLocation; import org.chromium.chrome.browser.ntp.NewTabPageUma; import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim; import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable; @@ -109,7 +107,7 @@ public class EnhancedBookmarkManager implements EnhancedBookmarkDelegate { mContentView = (EnhancedBookmarkContentView) mMainView.findViewById(R.id.eb_content_view); mUndoController = new EnhancedBookmarkUndoController(activity, mEnhancedBookmarksModel, ((SnackbarManageable) activity).getSnackbarManager()); - mEnhancedBookmarksModel.addModelObserver(mBookmarkModelObserver); + mEnhancedBookmarksModel.addObserver(mBookmarkModelObserver); initializeIfBookmarkModelLoaded(); // Load partner bookmarks explicitly. We load partner bookmarks in the deferred startup @@ -131,7 +129,7 @@ public class EnhancedBookmarkManager implements EnhancedBookmarkDelegate { mUndoController.destroy(); mUndoController = null; } - mEnhancedBookmarksModel.removeModelObserver(mBookmarkModelObserver); + mEnhancedBookmarksModel.removeObserver(mBookmarkModelObserver); mEnhancedBookmarksModel.destroy(); mEnhancedBookmarksModel = null; } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkUndoController.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkUndoController.java index e8624d7..ed23428 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkUndoController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkUndoController.java @@ -9,8 +9,7 @@ import android.content.Context; import org.chromium.chrome.R; import org.chromium.chrome.browser.BookmarksBridge.BookmarkItem; import org.chromium.chrome.browser.BookmarksBridge.BookmarkModelObserver; -import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel; -import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel.EnhancedBookmarkDeleteObserver; +import org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarksModel.EnhancedBookmarkDeleteObserver; import org.chromium.chrome.browser.snackbar.Snackbar; import org.chromium.chrome.browser.snackbar.SnackbarManager; 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 4282fc1..d7f524c 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 @@ -21,7 +21,6 @@ import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.Tab; import org.chromium.chrome.browser.UrlConstants; import org.chromium.chrome.browser.document.ChromeLauncherActivity; -import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel; import org.chromium.chrome.browser.favicon.FaviconHelper; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.snackbar.Snackbar; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarksModel.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarksModel.java new file mode 100644 index 0000000..6399c43 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarksModel.java @@ -0,0 +1,150 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.enhancedbookmarks; + +import org.chromium.base.ObserverList; +import org.chromium.base.VisibleForTesting; +import org.chromium.chrome.browser.BookmarksBridge; +import org.chromium.chrome.browser.favicon.LargeIconBridge; +import org.chromium.chrome.browser.favicon.LargeIconBridge.LargeIconCallback; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.components.bookmarks.BookmarkId; +import org.chromium.components.bookmarks.BookmarkType; +import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; + +import java.util.List; + +/** + * A class that encapsulates {@link BookmarksBridge} and provides extra features such as undo, large + * icon fetching, reader mode url redirecting, etc. This class should serve as the single class for + * the UI to acquire data from the backend. + */ +public class EnhancedBookmarksModel extends BookmarksBridge { + /** + * Observer that listens to delete event. This interface is used by undo controllers to know + * which bookmarks were deleted. Note this observer only listens to events that go through + * enhanced bookmark model. + */ + public interface EnhancedBookmarkDeleteObserver { + + /** + * Callback being triggered immediately before bookmarks are deleted. + * @param titles All titles of the bookmarks to be deleted. + * @param isUndoable Whether the deletion is undoable. + */ + void onDeleteBookmarks(String[] titles, boolean isUndoable); + } + + private LargeIconBridge mLargeIconBridge; + private ObserverList<EnhancedBookmarkDeleteObserver> mDeleteObservers = new ObserverList<>(); + + /** + * Initialize enhanced bookmark model for last used non-incognito profile. + */ + public EnhancedBookmarksModel() { + this(Profile.getLastUsedProfile().getOriginalProfile()); + } + + @VisibleForTesting + public EnhancedBookmarksModel(Profile profile) { + super(profile); + mLargeIconBridge = new LargeIconBridge(); + } + + /** + * Clean up all the bridges. This must be called after done using this class. + */ + @Override + public void destroy() { + super.destroy(); + mLargeIconBridge.destroy(); + } + + /** + * Add an observer that listens to delete events that go through enhanced bookmark model. + * @param observer The observer to add. + */ + public void addDeleteObserver(EnhancedBookmarkDeleteObserver observer) { + mDeleteObservers.addObserver(observer); + } + + /** + * Remove the observer from listening to bookmark deleting events. + * @param observer The observer to remove. + */ + public void removeDeleteObserver(EnhancedBookmarkDeleteObserver observer) { + mDeleteObservers.removeObserver(observer); + } + + /** + * Delete one or multiple bookmarks from model. If more than one bookmarks are passed here, this + * method will group these delete operations into one undo bundle so that later if the user + * clicks undo, all bookmarks deleted here will be restored. + * @param bookmarks Bookmarks to delete. Note this array should not contain a folder and its + * children, because deleting folder will also remove all its children, and + * deleting children once more will cause errors. + */ + public void deleteBookmarks(BookmarkId... bookmarks) { + assert bookmarks != null && bookmarks.length > 0; + // Store all titles of bookmarks. + String[] titles = new String[bookmarks.length]; + boolean isUndoable = true; + for (int i = 0; i < bookmarks.length; i++) { + titles[i] = getBookmarkTitle(bookmarks[i]); + isUndoable &= (bookmarks[i].getType() == BookmarkType.NORMAL); + } + + if (bookmarks.length == 1) { + deleteBookmark(bookmarks[0]); + } else { + startGroupingUndos(); + for (BookmarkId bookmark : bookmarks) { + deleteBookmark(bookmark); + } + endGroupingUndos(); + } + + for (EnhancedBookmarkDeleteObserver observer : mDeleteObservers) { + observer.onDeleteBookmarks(titles, isUndoable); + } + } + + /** + * Calls {@link BookmarksBridge#moveBookmark(BookmarkId, BookmarkId, int)} in a reversed + * order of the list, in order to let the last item appear at the top. + */ + public void moveBookmarks(List<BookmarkId> bookmarkIds, BookmarkId newParentId) { + for (int i = bookmarkIds.size() - 1; i >= 0; i--) { + moveBookmark(bookmarkIds.get(i), newParentId, 0); + } + } + + @Override + public BookmarkId addBookmark(BookmarkId parent, int index, String title, String url) { + url = DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(url); + return super.addBookmark(parent, index, title, url); + } + + /** + * @see org.chromium.chrome.browser.BookmarksBridge.BookmarkItem#getTitle() + */ + public String getBookmarkTitle(BookmarkId bookmarkId) { + return getBookmarkById(bookmarkId).getTitle(); + } + + /** + * @see LargeIconBridge#getLargeIconForUrl(Profile, String, int, LargeIconCallback) + */ + public void getLargeIcon(String url, int minSize, LargeIconCallback callback) { + mLargeIconBridge.getLargeIconForUrl(Profile.getLastUsedProfile(), url, minSize, callback); + } + + /** + * @return The id of the default folder to add bookmarks/folders to. + */ + public BookmarkId getDefaultFolder() { + return getMobileFolderId(); + } +} diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/OWNERS b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/OWNERS index e368087..8646c78 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/OWNERS +++ b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/OWNERS @@ -1 +1,2 @@ kkimlabs@chromium.org +ianwen@chromium.org
\ No newline at end of file diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkTest.java index 318cd95..2b83654 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkTest.java @@ -18,7 +18,6 @@ import org.chromium.chrome.browser.BookmarksBridge.BookmarkModelObserver; import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.UrlConstants; -import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel; import org.chromium.chrome.test.ChromeActivityTestCaseBase; import org.chromium.chrome.test.util.ActivityUtils; import org.chromium.chrome.test.util.BookmarkTestUtils; @@ -71,14 +70,14 @@ public class EnhancedBookmarkTest extends ChromeActivityTestCaseBase<ChromeActiv public void run() { if (mBookmarkModel.isBookmarkModelLoaded()) loadedCallback.notifyCalled(); else { - mBookmarkModel.addModelObserver(new BookmarkModelObserver() { + mBookmarkModel.addObserver(new BookmarkModelObserver() { @Override public void bookmarkModelChanged() {} @Override public void bookmarkModelLoaded() { loadedCallback.notifyCalled(); - mBookmarkModel.removeModelObserver(this); + mBookmarkModel.removeObserver(this); } }); } diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/enhanced_bookmarks/EnhancedBookmarksModelTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarksModelTest.java index 27e1184..74c8475 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/enhanced_bookmarks/EnhancedBookmarksModelTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarksModelTest.java @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package org.chromium.chrome.browser.enhanced_bookmarks; +package org.chromium.chrome.browser.enhancedbookmarks; import android.test.UiThreadTest; import android.test.suitebuilder.annotation.SmallTest; diff --git a/chrome/browser/android/chrome_jni_registrar.cc b/chrome/browser/android/chrome_jni_registrar.cc index a541fc9..3dad11a 100644 --- a/chrome/browser/android/chrome_jni_registrar.cc +++ b/chrome/browser/android/chrome_jni_registrar.cc @@ -76,7 +76,6 @@ #include "chrome/browser/autofill/android/personal_data_manager_android.h" #include "chrome/browser/dom_distiller/dom_distiller_service_factory_android.h" #include "chrome/browser/dom_distiller/tab_utils_android.h" -#include "chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h" #include "chrome/browser/history/android/sqlite_cursor.h" #include "chrome/browser/invalidation/invalidation_service_factory_android.h" #include "chrome/browser/lifetime/application_lifetime_android.h" @@ -215,8 +214,6 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = { {"DownloadOverwriteInfoBarDelegate", RegisterDownloadOverwriteInfoBarDelegate}, {"EditBookmarkHelper", RegisterEditBookmarkHelper}, - {"EnhancedBookmarksBridge", - enhanced_bookmarks::android::RegisterEnhancedBookmarksBridge}, {"ExternalPrerenderRequestHandler", prerender::ExternalPrerenderHandlerAndroid:: RegisterExternalPrerenderHandlerAndroid}, diff --git a/chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc b/chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc deleted file mode 100644 index 856af20..0000000 --- a/chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h" - -#include "base/android/jni_array.h" -#include "base/android/jni_string.h" -#include "base/prefs/pref_service.h" -#include "chrome/browser/enhanced_bookmarks/enhanced_bookmark_model_factory.h" -#include "chrome/browser/profiles/profile_android.h" -#include "chrome/common/chrome_version_info.h" -#include "chrome/common/pref_names.h" -#include "components/bookmarks/browser/bookmark_utils.h" -#include "components/bookmarks/common/android/bookmark_id.h" -#include "components/bookmarks/common/android/bookmark_type.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/web_contents.h" -#include "jni/EnhancedBookmarksBridge_jni.h" -#include "ui/gfx/android/java_bitmap.h" - -using base::android::AttachCurrentThread; -using base::android::ScopedJavaGlobalRef; -using bookmarks::android::JavaBookmarkIdCreateBookmarkId; -using bookmarks::android::JavaBookmarkIdGetId; -using bookmarks::android::JavaBookmarkIdGetType; -using bookmarks::BookmarkNode; -using bookmarks::BookmarkType; -using content::WebContents; -using content::BrowserThread; - -namespace enhanced_bookmarks { -namespace android { - -EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env, - jobject obj, - Profile* profile) : weak_java_ref_(env, obj) { - profile_ = profile; - enhanced_bookmark_model_ = - EnhancedBookmarkModelFactory::GetForBrowserContext(profile_); - enhanced_bookmark_model_->SetVersionSuffix(chrome::VersionInfo().OSType()); -} - -void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) { - delete this; -} - -ScopedJavaLocalRef<jobject> EnhancedBookmarksBridge::AddFolder(JNIEnv* env, - jobject obj, - jobject j_parent_id_obj, - jint index, - jstring j_title) { - DCHECK(enhanced_bookmark_model_->loaded()); - long bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj); - const BookmarkNode* parent = bookmarks::GetBookmarkNodeByID( - enhanced_bookmark_model_->bookmark_model(), - static_cast<int64>(bookmark_id)); - const BookmarkNode* new_node = enhanced_bookmark_model_->AddFolder( - parent, index, base::android::ConvertJavaStringToUTF16(env, j_title)); - if (!new_node) { - NOTREACHED(); - return ScopedJavaLocalRef<jobject>(); - } - ScopedJavaLocalRef<jobject> new_java_obj = JavaBookmarkIdCreateBookmarkId( - env, new_node->id(), BookmarkType::BOOKMARK_TYPE_NORMAL); - return new_java_obj; -} - -void EnhancedBookmarksBridge::MoveBookmark(JNIEnv* env, - jobject obj, - jobject j_bookmark_id_obj, - jobject j_parent_id_obj) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - DCHECK(enhanced_bookmark_model_->loaded()); - - long bookmark_id = JavaBookmarkIdGetId(env, j_bookmark_id_obj); - const BookmarkNode* node = bookmarks::GetBookmarkNodeByID( - enhanced_bookmark_model_->bookmark_model(), - static_cast<int64>(bookmark_id)); - if (!IsEditable(node)) { - NOTREACHED(); - return; - } - bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj); - const BookmarkNode* new_parent_node = bookmarks::GetBookmarkNodeByID( - enhanced_bookmark_model_->bookmark_model(), - static_cast<int64>(bookmark_id)); - enhanced_bookmark_model_->Move(node, new_parent_node, - new_parent_node->child_count()); -} - -ScopedJavaLocalRef<jobject> EnhancedBookmarksBridge::AddBookmark( - JNIEnv* env, - jobject obj, - jobject j_parent_id_obj, - jint index, - jstring j_title, - jstring j_url) { - DCHECK(enhanced_bookmark_model_->loaded()); - long bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj); - const BookmarkNode* parent = bookmarks::GetBookmarkNodeByID( - enhanced_bookmark_model_->bookmark_model(), - static_cast<int64>(bookmark_id)); - - const BookmarkNode* new_node = enhanced_bookmark_model_->AddURL( - parent, - index, - base::android::ConvertJavaStringToUTF16(env, j_title), - GURL(base::android::ConvertJavaStringToUTF16(env, j_url)), - base::Time::Now()); - if (!new_node) { - NOTREACHED(); - return ScopedJavaLocalRef<jobject>(); - } - ScopedJavaLocalRef<jobject> new_java_obj = JavaBookmarkIdCreateBookmarkId( - env, new_node->id(), BookmarkType::BOOKMARK_TYPE_NORMAL); - return new_java_obj; -} - -bool EnhancedBookmarksBridge::IsEditable(const BookmarkNode* node) const { - if (!node || (node->type() != BookmarkNode::FOLDER && - node->type() != BookmarkNode::URL)) { - return false; - } - return profile_->GetPrefs()->GetBoolean( - bookmarks::prefs::kEditBookmarksEnabled); -} - -static jlong Init(JNIEnv* env, jobject obj, jobject j_profile) { - return reinterpret_cast<jlong>(new EnhancedBookmarksBridge( - env, obj, ProfileAndroid::FromProfileAndroid(j_profile))); -} - -bool RegisterEnhancedBookmarksBridge(JNIEnv* env) { - return RegisterNativesImpl(env); -} - -} // namespace android -} // namespace enhanced_bookmarks diff --git a/chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h b/chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h deleted file mode 100644 index 007fa56..0000000 --- a/chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_ENHANCED_BOOKMARKS_ANDROID_ENHANCED_BOOKMARKS_BRIDGE_H_ -#define CHROME_BROWSER_ENHANCED_BOOKMARKS_ANDROID_ENHANCED_BOOKMARKS_BRIDGE_H_ - -#include "base/android/jni_android.h" -#include "base/android/jni_weak_ref.h" -#include "chrome/browser/profiles/profile.h" -#include "components/bookmarks/browser/bookmark_model.h" -#include "components/enhanced_bookmarks/enhanced_bookmark_model.h" - -namespace enhanced_bookmarks { - -class BookmarkImageServiceAndroid; - -namespace android { - -class EnhancedBookmarksBridge { - public: - EnhancedBookmarksBridge(JNIEnv* env, jobject obj, Profile* profile); - void Destroy(JNIEnv*, jobject); - - base::android::ScopedJavaLocalRef<jobject> AddFolder(JNIEnv* env, - jobject obj, - jobject j_parent_id_obj, - jint index, - jstring j_title); - - void MoveBookmark(JNIEnv* env, - jobject obj, - jobject j_bookmark_id_obj, - jobject j_parent_id_obj); - - base::android::ScopedJavaLocalRef<jobject> AddBookmark( - JNIEnv* env, - jobject obj, - jobject j_parent_id_obj, - jint index, - jstring j_title, - jstring j_url); - - private: - bool IsEditable(const bookmarks::BookmarkNode* node) const; - - JavaObjectWeakGlobalRef weak_java_ref_; - EnhancedBookmarkModel* enhanced_bookmark_model_; // weak - Profile* profile_; // weak - DISALLOW_COPY_AND_ASSIGN(EnhancedBookmarksBridge); -}; - -bool RegisterEnhancedBookmarksBridge(JNIEnv* env); - -} // namespace android -} // namespace enhanced_bookmarks - -#endif // CHROME_BROWSER_ENHANCED_BOOKMARKS_ANDROID_ENHANCED_BOOKMARKS_BRIDGE_H_ diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index fe968b1..4ea733d 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1367,8 +1367,6 @@ 'browser/android/offline_pages/offline_page_mhtml_archiver.h', 'browser/android/offline_pages/offline_page_model_factory.cc', 'browser/android/offline_pages/offline_page_model_factory.h', - 'browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc', - 'browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h', ], 'chrome_browser_browser_process_sources': [ 'browser/browser_process.cc', @@ -1722,7 +1720,6 @@ 'android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerServiceFactory.java', 'android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerTabUtils.java', 'android/java/src/org/chromium/chrome/browser/download/ChromeDownloadDelegate.java', - 'android/java/src/org/chromium/chrome/browser/enhanced_bookmarks/EnhancedBookmarksBridge.java', 'android/java/src/org/chromium/chrome/browser/favicon/FaviconHelper.java', 'android/java/src/org/chromium/chrome/browser/favicon/LargeIconBridge.java', 'android/java/src/org/chromium/chrome/browser/feedback/ConnectivityChecker.java', diff --git a/components/enhanced_bookmarks/BUILD.gn b/components/enhanced_bookmarks/BUILD.gn index 7702fbd..4a5f0fa 100644 --- a/components/enhanced_bookmarks/BUILD.gn +++ b/components/enhanced_bookmarks/BUILD.gn @@ -63,7 +63,7 @@ if (is_android) { "enhanced_bookmark_utils.h", ] outputs = [ - "org/chromium/chrome/browser/enhanced_bookmarks/LaunchLocation.java", + "org/chromium/chrome/browser/enhancedbookmarks/LaunchLocation.java", ] } } diff --git a/components/enhanced_bookmarks/enhanced_bookmark_utils.h b/components/enhanced_bookmarks/enhanced_bookmark_utils.h index c66fa9a..33a872f 100644 --- a/components/enhanced_bookmarks/enhanced_bookmark_utils.h +++ b/components/enhanced_bookmarks/enhanced_bookmark_utils.h @@ -20,7 +20,7 @@ namespace enhanced_bookmarks { // Please sync with the corresponding histograms.xml. // // A Java counterpart will be generated for this enum. -// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.enhanced_bookmarks +// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.enhancedbookmarks enum LaunchLocation { ALL_ITEMS = 0, UNCATEGORIZED = 1, // Deprecated. |