diff options
author | kkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-14 20:59:22 +0000 |
---|---|---|
committer | kkimlabs@chromium.org <kkimlabs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-14 21:01:04 +0000 |
commit | f3266cc3604c956eed772815aa40dd3af8c708c4 (patch) | |
tree | 5c5121960a002df88d19990b9baba81585df8bf7 /components/enhanced_bookmarks | |
parent | 4a9056a40a64ba10bff569512360ccfffaf6a775 (diff) | |
download | chromium_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')
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); +} |