Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.cc

Issue 1247033009: Clean up Enhanced Bookmark's data acquiring logic (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@icon_eb
Patch Set: Add correct files to git commits Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h"
6
7 #include "base/android/jni_array.h"
8 #include "base/android/jni_string.h"
9 #include "base/prefs/pref_service.h"
10 #include "chrome/browser/enhanced_bookmarks/enhanced_bookmark_model_factory.h"
11 #include "chrome/browser/profiles/profile_android.h"
12 #include "chrome/common/chrome_version_info.h"
13 #include "chrome/common/pref_names.h"
14 #include "components/bookmarks/browser/bookmark_utils.h"
15 #include "components/bookmarks/common/android/bookmark_id.h"
16 #include "components/bookmarks/common/android/bookmark_type.h"
17 #include "content/public/browser/browser_thread.h"
18 #include "content/public/browser/web_contents.h"
19 #include "jni/EnhancedBookmarksBridge_jni.h"
20 #include "ui/gfx/android/java_bitmap.h"
21
22 using base::android::AttachCurrentThread;
23 using base::android::ScopedJavaGlobalRef;
24 using bookmarks::android::JavaBookmarkIdCreateBookmarkId;
25 using bookmarks::android::JavaBookmarkIdGetId;
26 using bookmarks::android::JavaBookmarkIdGetType;
27 using bookmarks::BookmarkNode;
28 using bookmarks::BookmarkType;
29 using content::WebContents;
30 using content::BrowserThread;
31
32 namespace enhanced_bookmarks {
33 namespace android {
34
35 EnhancedBookmarksBridge::EnhancedBookmarksBridge(JNIEnv* env,
36 jobject obj,
37 Profile* profile) : weak_java_ref_(env, obj) {
38 profile_ = profile;
39 enhanced_bookmark_model_ =
40 EnhancedBookmarkModelFactory::GetForBrowserContext(profile_);
41 enhanced_bookmark_model_->SetVersionSuffix(chrome::VersionInfo().OSType());
42 }
43
44 void EnhancedBookmarksBridge::Destroy(JNIEnv*, jobject) {
45 delete this;
46 }
47
48 ScopedJavaLocalRef<jobject> EnhancedBookmarksBridge::AddFolder(JNIEnv* env,
49 jobject obj,
50 jobject j_parent_id_obj,
51 jint index,
52 jstring j_title) {
53 DCHECK(enhanced_bookmark_model_->loaded());
54 long bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj);
55 const BookmarkNode* parent = bookmarks::GetBookmarkNodeByID(
56 enhanced_bookmark_model_->bookmark_model(),
57 static_cast<int64>(bookmark_id));
58 const BookmarkNode* new_node = enhanced_bookmark_model_->AddFolder(
59 parent, index, base::android::ConvertJavaStringToUTF16(env, j_title));
60 if (!new_node) {
61 NOTREACHED();
62 return ScopedJavaLocalRef<jobject>();
63 }
64 ScopedJavaLocalRef<jobject> new_java_obj = JavaBookmarkIdCreateBookmarkId(
65 env, new_node->id(), BookmarkType::BOOKMARK_TYPE_NORMAL);
66 return new_java_obj;
67 }
68
69 void EnhancedBookmarksBridge::MoveBookmark(JNIEnv* env,
70 jobject obj,
71 jobject j_bookmark_id_obj,
72 jobject j_parent_id_obj) {
73 DCHECK_CURRENTLY_ON(BrowserThread::UI);
74 DCHECK(enhanced_bookmark_model_->loaded());
75
76 long bookmark_id = JavaBookmarkIdGetId(env, j_bookmark_id_obj);
77 const BookmarkNode* node = bookmarks::GetBookmarkNodeByID(
78 enhanced_bookmark_model_->bookmark_model(),
79 static_cast<int64>(bookmark_id));
80 if (!IsEditable(node)) {
81 NOTREACHED();
82 return;
83 }
84 bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj);
85 const BookmarkNode* new_parent_node = bookmarks::GetBookmarkNodeByID(
86 enhanced_bookmark_model_->bookmark_model(),
87 static_cast<int64>(bookmark_id));
88 enhanced_bookmark_model_->Move(node, new_parent_node,
89 new_parent_node->child_count());
90 }
91
92 ScopedJavaLocalRef<jobject> EnhancedBookmarksBridge::AddBookmark(
93 JNIEnv* env,
94 jobject obj,
95 jobject j_parent_id_obj,
96 jint index,
97 jstring j_title,
98 jstring j_url) {
99 DCHECK(enhanced_bookmark_model_->loaded());
100 long bookmark_id = JavaBookmarkIdGetId(env, j_parent_id_obj);
101 const BookmarkNode* parent = bookmarks::GetBookmarkNodeByID(
102 enhanced_bookmark_model_->bookmark_model(),
103 static_cast<int64>(bookmark_id));
104
105 const BookmarkNode* new_node = enhanced_bookmark_model_->AddURL(
106 parent,
107 index,
108 base::android::ConvertJavaStringToUTF16(env, j_title),
109 GURL(base::android::ConvertJavaStringToUTF16(env, j_url)),
110 base::Time::Now());
111 if (!new_node) {
112 NOTREACHED();
113 return ScopedJavaLocalRef<jobject>();
114 }
115 ScopedJavaLocalRef<jobject> new_java_obj = JavaBookmarkIdCreateBookmarkId(
116 env, new_node->id(), BookmarkType::BOOKMARK_TYPE_NORMAL);
117 return new_java_obj;
118 }
119
120 bool EnhancedBookmarksBridge::IsEditable(const BookmarkNode* node) const {
121 if (!node || (node->type() != BookmarkNode::FOLDER &&
122 node->type() != BookmarkNode::URL)) {
123 return false;
124 }
125 return profile_->GetPrefs()->GetBoolean(
126 bookmarks::prefs::kEditBookmarksEnabled);
127 }
128
129 static jlong Init(JNIEnv* env, jobject obj, jobject j_profile) {
130 return reinterpret_cast<jlong>(new EnhancedBookmarksBridge(
131 env, obj, ProfileAndroid::FromProfileAndroid(j_profile)));
132 }
133
134 bool RegisterEnhancedBookmarksBridge(JNIEnv* env) {
135 return RegisterNativesImpl(env);
136 }
137
138 } // namespace android
139 } // namespace enhanced_bookmarks
OLDNEW
« no previous file with comments | « chrome/browser/enhanced_bookmarks/android/enhanced_bookmarks_bridge.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698