summaryrefslogtreecommitdiffstats
path: root/components/enhanced_bookmarks
diff options
context:
space:
mode:
authorkkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-14 20:59:22 +0000
committerkkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-14 21:01:04 +0000
commitf3266cc3604c956eed772815aa40dd3af8c708c4 (patch)
tree5c5121960a002df88d19990b9baba81585df8bf7 /components/enhanced_bookmarks
parent4a9056a40a64ba10bff569512360ccfffaf6a775 (diff)
downloadchromium_src-f3266cc3604c956eed772815aa40dd3af8c708c4.zip
chromium_src-f3266cc3604c956eed772815aa40dd3af8c708c4.tar.gz
chromium_src-f3266cc3604c956eed772815aa40dd3af8c708c4.tar.bz2
[Android] EnhancedBookmarksBridge for bookmark description read&write.
Also moved BookmarksBridge#BookmarkItem to bookmarks component. BUG=386785 Review URL: https://codereview.chromium.org/459973004 Cr-Commit-Position: refs/heads/master@{#289695} git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289695 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'components/enhanced_bookmarks')
-rw-r--r--components/enhanced_bookmarks/DEPS1
-rw-r--r--components/enhanced_bookmarks/android/OWNERS3
-rw-r--r--components/enhanced_bookmarks/android/component_jni_registrar.cc29
-rw-r--r--components/enhanced_bookmarks/android/component_jni_registrar.h18
-rw-r--r--components/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc69
-rw-r--r--components/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h43
-rw-r--r--components/enhanced_bookmarks/android/java/src/org/chromium/components/enhancedbookmarks/EnhancedBookmarksBridge.java45
7 files changed, 208 insertions, 0 deletions
diff --git a/components/enhanced_bookmarks/DEPS b/components/enhanced_bookmarks/DEPS
index b3cce48..de785ae 100644
--- a/components/enhanced_bookmarks/DEPS
+++ b/components/enhanced_bookmarks/DEPS
@@ -1,5 +1,6 @@
include_rules = [
"+components/bookmarks",
+ "+jni",
"+sql",
"+ui",
]
diff --git a/components/enhanced_bookmarks/android/OWNERS b/components/enhanced_bookmarks/android/OWNERS
new file mode 100644
index 0000000..3df886e
--- /dev/null
+++ b/components/enhanced_bookmarks/android/OWNERS
@@ -0,0 +1,3 @@
+yfriedman@chromium.org
+tedchoc@chromium.org
+kkimlabs@chromium.org
diff --git a/components/enhanced_bookmarks/android/component_jni_registrar.cc b/components/enhanced_bookmarks/android/component_jni_registrar.cc
new file mode 100644
index 0000000..ab4440d
--- /dev/null
+++ b/components/enhanced_bookmarks/android/component_jni_registrar.cc
@@ -0,0 +1,29 @@
+// 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 "components/enhanced_bookmarks/android/component_jni_registrar.h"
+
+#include "base/android/jni_android.h"
+#include "base/android/jni_registrar.h"
+#include "base/basictypes.h"
+#include "components/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h"
+
+using base::android::RegistrationMethod;
+
+namespace enhanced_bookmarks {
+namespace android {
+
+static RegistrationMethod kEnhancedBookmarksRegisteredMethods[] = {
+ {"EnhancedBookmarksBridge", RegisterEnhancedBookmarksBridge},
+};
+
+bool RegisterEnhancedBookmarks(JNIEnv* env) {
+ return base::android::RegisterNativeMethods(
+ env,
+ kEnhancedBookmarksRegisteredMethods,
+ arraysize(kEnhancedBookmarksRegisteredMethods));
+}
+
+} // namespace android
+} // namespace enhanced_bookmarks
diff --git a/components/enhanced_bookmarks/android/component_jni_registrar.h b/components/enhanced_bookmarks/android/component_jni_registrar.h
new file mode 100644
index 0000000..d02d626
--- /dev/null
+++ b/components/enhanced_bookmarks/android/component_jni_registrar.h
@@ -0,0 +1,18 @@
+// 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 COMPONENTS_ENHANCED_BOOKMARKS_ANDROID_COMPONENT_JNI_REGISTRAR_H_
+#define COMPONENTS_ENHANCED_BOOKMARKS_ANDROID_COMPONENT_JNI_REGISTRAR_H_
+
+#include <jni.h>
+
+namespace enhanced_bookmarks {
+namespace android {
+
+bool RegisterEnhancedBookmarks(JNIEnv* env);
+
+} // namespace android
+} // namespace enhanced_bookmarks
+
+#endif // COMPONENTS_ENHANCED_BOOKMARKS_ANDROID_COMPONENT_JNI_REGISTRAR_H_
diff --git a/components/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc b/components/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc
new file mode 100644
index 0000000..445f746
--- /dev/null
+++ b/components/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc
@@ -0,0 +1,69 @@
+// 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 "components/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h"
+
+#include "base/android/jni_string.h"
+#include "components/bookmarks/browser/bookmark_model.h"
+#include "components/bookmarks/browser/bookmark_utils.h"
+#include "components/bookmarks/common/android/bookmark_type.h"
+#include "components/enhanced_bookmarks/metadata_accessor.h"
+#include "jni/EnhancedBookmarksBridge_jni.h"
+
+using bookmarks::BookmarkType;
+
+namespace enhanced_bookmarks {
+namespace android {
+
+EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env,
+ jobject obj,
+ jlong bookmark_model_ptr) {
+ bookmark_model_ = reinterpret_cast<BookmarkModel*>(bookmark_model_ptr);
+}
+
+void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) {
+ delete this;
+}
+
+ScopedJavaLocalRef<jstring> EnhancedBookmarksBridge::GetBookmarkDescription(
+ JNIEnv* env, jobject obj, jlong id, jint type) {
+ DCHECK(bookmark_model_->loaded());
+ DCHECK_EQ(type, BookmarkType::NORMAL);
+
+ const BookmarkNode* node = bookmarks::GetBookmarkNodeByID(
+ bookmark_model_, static_cast<int64>(id));
+
+ return node ?
+ base::android::ConvertUTF8ToJavaString(
+ env, enhanced_bookmarks::DescriptionFromBookmark(node)) :
+ ScopedJavaLocalRef<jstring>();
+}
+
+void EnhancedBookmarksBridge::SetBookmarkDescription(JNIEnv* env,
+ jobject obj,
+ jlong id,
+ jint type,
+ jstring description) {
+ DCHECK(bookmark_model_->loaded());
+ DCHECK_EQ(type, BookmarkType::NORMAL);
+
+ const BookmarkNode* node = bookmarks::GetBookmarkNodeByID(
+ bookmark_model_, static_cast<int64>(id));
+
+ enhanced_bookmarks::SetDescriptionForBookmark(
+ bookmark_model_, node,
+ base::android::ConvertJavaStringToUTF8(env, description));
+}
+
+static jlong Init(JNIEnv* env, jobject obj, jlong bookmark_model_ptr) {
+ return reinterpret_cast<jlong>(
+ new EnhancedBookmarksBridge(env, obj, bookmark_model_ptr));
+}
+
+bool RegisterEnhancedBookmarksBridge(JNIEnv* env) {
+ return RegisterNativesImpl(env);
+}
+
+} // namespace android
+} // namespace enhanced_bookmarks
diff --git a/components/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h b/components/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h
new file mode 100644
index 0000000..13196869
--- /dev/null
+++ b/components/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h
@@ -0,0 +1,43 @@
+// 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 COMPONENTS_ENHANCED_BOOKMARKS_ANDROID_ENHANCED_BOOKMARKS_BRIDGE_H_
+#define COMPONENTS_ENHANCED_BOOKMARKS_ANDROID_ENHANCED_BOOKMARKS_BRIDGE_H_
+
+#include "base/android/jni_android.h"
+
+class BookmarkModel;
+
+namespace enhanced_bookmarks {
+namespace android {
+
+class EnhancedBookmarksBridge {
+ public:
+ EnhancedBookmarksBridge(JNIEnv* env, jobject obj, jlong bookmark_model_ptr);
+ void Destroy(JNIEnv*, jobject);
+
+ base::android::ScopedJavaLocalRef<jstring> GetBookmarkDescription(
+ JNIEnv* env,
+ jobject obj,
+ jlong id,
+ jint type);
+
+ void SetBookmarkDescription(JNIEnv* env,
+ jobject obj,
+ jlong id,
+ jint type,
+ jstring description);
+
+ private:
+ BookmarkModel* bookmark_model_; // weak
+
+ DISALLOW_COPY_AND_ASSIGN(EnhancedBookmarksBridge);
+};
+
+bool RegisterEnhancedBookmarksBridge(JNIEnv* env);
+
+} // namespace android
+} // namespace enhanced_bookmarks
+
+#endif // COMPONENTS_ENHANCED_BOOKMARKS_ANDROID_ENHANCED_BOOKMARKS_BRIDGE_H_
diff --git a/components/enhanced_bookmarks/android/java/src/org/chromium/components/enhancedbookmarks/EnhancedBookmarksBridge.java b/components/enhanced_bookmarks/android/java/src/org/chromium/components/enhancedbookmarks/EnhancedBookmarksBridge.java
new file mode 100644
index 0000000..c244cb5
--- /dev/null
+++ b/components/enhanced_bookmarks/android/java/src/org/chromium/components/enhancedbookmarks/EnhancedBookmarksBridge.java
@@ -0,0 +1,45 @@
+// 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.components.enhancedbookmarks;
+
+import org.chromium.base.JNINamespace;
+import org.chromium.components.bookmarks.BookmarkId;
+
+/**
+ * Access gate to C++ side enhanced bookmarks functionalities.
+ */
+@JNINamespace("enhanced_bookmarks::android")
+public final class EnhancedBookmarksBridge {
+ private long mNativeEnhancedBookmarksBridge;
+
+ public EnhancedBookmarksBridge(long nativeBookmarkModel) {
+ mNativeEnhancedBookmarksBridge = nativeInit(nativeBookmarkModel);
+ }
+
+ public void destroy() {
+ assert mNativeEnhancedBookmarksBridge != 0;
+ nativeDestroy(mNativeEnhancedBookmarksBridge);
+ mNativeEnhancedBookmarksBridge = 0;
+ }
+
+ public String getBookmarkDescription(BookmarkId id) {
+ return nativeGetBookmarkDescription(mNativeEnhancedBookmarksBridge, id.getId(),
+ id.getType());
+ }
+
+ public void setBookmarkDescription(BookmarkId id, String description) {
+ nativeSetBookmarkDescription(mNativeEnhancedBookmarksBridge, id.getId(), id.getType(),
+ description);
+ }
+
+ private native long nativeInit(long bookmarkModelPointer);
+
+ private native void nativeDestroy(long nativeEnhancedBookmarksBridge);
+
+ private native String nativeGetBookmarkDescription(long nativeEnhancedBookmarksBridge, long id,
+ int type);
+ private native void nativeSetBookmarkDescription(long nativeEnhancedBookmarksBridge, long id,
+ int type, String description);
+}