summaryrefslogtreecommitdiffstats
path: root/chrome/browser/android/bookmarks
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/android/bookmarks')
-rw-r--r--chrome/browser/android/bookmarks/bookmarks_bridge.cc28
-rw-r--r--chrome/browser/android/bookmarks/bookmarks_bridge.h11
2 files changed, 39 insertions, 0 deletions
diff --git a/chrome/browser/android/bookmarks/bookmarks_bridge.cc b/chrome/browser/android/bookmarks/bookmarks_bridge.cc
index fe7c99b..6dcb559 100644
--- a/chrome/browser/android/bookmarks/bookmarks_bridge.cc
+++ b/chrome/browser/android/bookmarks/bookmarks_bridge.cc
@@ -16,9 +16,13 @@
#include "chrome/browser/profiles/profile_android.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/signin/signin_manager_factory.h"
+#include "chrome/browser/undo/bookmark_undo_service.h"
+#include "chrome/browser/undo/bookmark_undo_service_factory.h"
+#include "chrome/browser/undo/undo_manager.h"
#include "chrome/common/pref_names.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/browser/bookmark_utils.h"
+#include "components/bookmarks/browser/scoped_group_bookmark_actions.h"
#include "components/bookmarks/common/android/bookmark_type.h"
#include "components/signin/core/browser/signin_manager.h"
#include "content/public/browser/browser_thread.h"
@@ -669,6 +673,30 @@ ScopedJavaLocalRef<jobject> BookmarksBridge::AddBookmark(
return new_java_obj;
}
+void BookmarksBridge::Undo(JNIEnv* env, jobject obj) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK(IsLoaded());
+ BookmarkUndoService* undo_service =
+ BookmarkUndoServiceFactory::GetForProfile(profile_);
+ UndoManager* undo_manager = undo_service->undo_manager();
+ undo_manager->Undo();
+}
+
+void BookmarksBridge::StartGroupingUndos(JNIEnv* env, jobject obj) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK(IsLoaded());
+ DCHECK(!grouped_bookmark_actions_.get()); // shouldn't have started already
+ grouped_bookmark_actions_.reset(
+ new bookmarks::ScopedGroupBookmarkActions(bookmark_model_));
+}
+
+void BookmarksBridge::EndGroupingUndos(JNIEnv* env, jobject obj) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK(IsLoaded());
+ DCHECK(grouped_bookmark_actions_.get()); // should only call after start
+ grouped_bookmark_actions_.reset();
+}
+
ScopedJavaLocalRef<jobject> BookmarksBridge::CreateJavaBookmark(
const BookmarkNode* node) {
JNIEnv* env = AttachCurrentThread();
diff --git a/chrome/browser/android/bookmarks/bookmarks_bridge.h b/chrome/browser/android/bookmarks/bookmarks_bridge.h
index 91fc2f0..8a14d63 100644
--- a/chrome/browser/android/bookmarks/bookmarks_bridge.h
+++ b/chrome/browser/android/bookmarks/bookmarks_bridge.h
@@ -16,6 +16,10 @@
#include "components/bookmarks/browser/base_bookmark_model_observer.h"
#include "components/bookmarks/common/android/bookmark_id.h"
+namespace bookmarks {
+class ScopedGroupBookmarkActions;
+}
+
class Profile;
// The delegate to fetch bookmarks information for the Android native
@@ -130,6 +134,12 @@ class BookmarksBridge : public BaseBookmarkModelObserver,
jstring j_title,
jstring j_url);
+ void Undo(JNIEnv* env, jobject obj);
+
+ void StartGroupingUndos(JNIEnv* env, jobject obj);
+
+ void EndGroupingUndos(JNIEnv* env, jobject obj);
+
private:
virtual ~BookmarksBridge();
@@ -189,6 +199,7 @@ class BookmarksBridge : public BaseBookmarkModelObserver,
JavaObjectWeakGlobalRef weak_java_ref_;
BookmarkModel* bookmark_model_; // weak
ChromeBookmarkClient* client_; // weak
+ scoped_ptr<bookmarks::ScopedGroupBookmarkActions> grouped_bookmark_actions_;
// Information about the Partner bookmarks (must check for IsLoaded()).
// This is owned by profile.