Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / android / enhanced_bookmarks / enhanced_bookmarks_bridge.h
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 #ifndef CHROME_BROWSER_ANDROID_ENHANCED_BOOKMARKS_ENHANCED_BOOKMARKS_BRIDGE_H_
6 #define CHROME_BROWSER_ANDROID_ENHANCED_BOOKMARKS_ENHANCED_BOOKMARKS_BRIDGE_H_
7
8 #include "base/android/jni_android.h"
9 #include "base/android/jni_weak_ref.h"
10 #include "chrome/browser/profiles/profile.h"
11 #include "components/bookmarks/browser/bookmark_model.h"
12 #include "components/enhanced_bookmarks/bookmark_server_search_service.h"
13 #include "components/enhanced_bookmarks/bookmark_server_service.h"
14
15 namespace enhanced_bookmarks {
16
17 class BookmarkServerClusterService;
18
19 namespace android {
20
21 class EnhancedBookmarksBridge : public BookmarkServerServiceObserver {
22  public:
23   EnhancedBookmarksBridge(JNIEnv* env, jobject obj, Profile* profile);
24   virtual ~EnhancedBookmarksBridge();
25   void Destroy(JNIEnv*, jobject);
26
27   base::android::ScopedJavaLocalRef<jstring> GetBookmarkDescription(
28       JNIEnv* env,
29       jobject obj,
30       jlong id,
31       jint type);
32   void SetBookmarkDescription(JNIEnv* env,
33                               jobject obj,
34                               jlong id,
35                               jint type,
36                               jstring description);
37
38   base::android::ScopedJavaLocalRef<jobjectArray> GetFiltersForBookmark(
39       JNIEnv* env,
40       jobject obj,
41       jlong id,
42       jint type);
43   void GetBookmarksForFilter(JNIEnv* env,
44                              jobject obj,
45                              jstring filter,
46                              jobject j_result_obj);
47   base::android::ScopedJavaLocalRef<jobjectArray> GetFilters(JNIEnv* env,
48                                                              jobject obj);
49
50   base::android::ScopedJavaLocalRef<jobject> AddFolder(JNIEnv* env,
51                                                        jobject obj,
52                                                        jobject j_parent_id_obj,
53                                                        jint index,
54                                                        jstring j_title);
55
56   void MoveBookmark(JNIEnv* env,
57                     jobject obj,
58                     jobject j_bookmark_id_obj,
59                     jobject j_parent_id_obj,
60                     jint index);
61
62   base::android::ScopedJavaLocalRef<jobject> AddBookmark(
63       JNIEnv* env,
64       jobject obj,
65       jobject j_parent_id_obj,
66       jint index,
67       jstring j_title,
68       jstring j_url);
69   void SendSearchRequest(JNIEnv* env, jobject obj, jstring j_query);
70
71   base::android::ScopedJavaLocalRef<jobject> GetSearchResults(JNIEnv* env,
72                                                               jobject obj,
73                                                               jstring j_query);
74
75   // BookmarkServerServiceObserver
76   // Called on changes to cluster data or search results are returned.
77   virtual void OnChange(BookmarkServerService* service) override;
78
79  private:
80   bool IsEditable(const BookmarkNode* node) const;
81
82   JavaObjectWeakGlobalRef weak_java_ref_;
83   EnhancedBookmarkModel* enhanced_bookmark_model_; // weak
84   BookmarkServerClusterService* cluster_service_;  // weak
85   scoped_ptr<BookmarkServerSearchService> search_service_;
86   Profile* profile_;                       // weak
87   DISALLOW_COPY_AND_ASSIGN(EnhancedBookmarksBridge);
88 };
89
90 bool RegisterEnhancedBookmarksBridge(JNIEnv* env);
91
92 }  // namespace android
93 }  // namespace enhanced_bookmarks
94
95 #endif  // CHROME_BROWSER_ANDROID_ENHANCED_BOOKMARKS_ENHANCED_BOOKMARKS_BRIDGE_H_