GoogleURLTrackerInfoBarDelegate: Initialize uninitialized member in constructor.
[chromium-blink-merge.git] / chrome / browser / android / bookmarks / bookmarks_bridge.h
blob311c5ae2127f54cbd6a67b4b03b5c933ed711b87
1 // Copyright 2013 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.
5 #ifndef CHROME_BROWSER_ANDROID_BOOKMARKS_BOOKMARKS_BRIDGE_H_
6 #define CHROME_BROWSER_ANDROID_BOOKMARKS_BOOKMARKS_BRIDGE_H_
8 #include <jni.h>
10 #include "base/android/jni_android.h"
11 #include "base/android/jni_weak_ref.h"
12 #include "base/basictypes.h"
13 #include "base/compiler_specific.h"
14 #include "chrome/browser/android/bookmarks/managed_bookmarks_shim.h"
15 #include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
16 #include "components/bookmarks/browser/base_bookmark_model_observer.h"
18 class Profile;
20 // The delegate to fetch bookmarks information for the Android native
21 // bookmark page. This fetches the bookmarks, title, urls, folder
22 // hierarchy.
23 class BookmarksBridge : public BaseBookmarkModelObserver,
24 public ManagedBookmarksShim::Observer,
25 public PartnerBookmarksShim::Observer {
26 public:
27 BookmarksBridge(JNIEnv* env, jobject obj, jobject j_profile);
28 void Destroy(JNIEnv*, jobject);
30 static bool RegisterBookmarksBridge(JNIEnv* env);
32 void GetBookmarksForFolder(JNIEnv* env,
33 jobject obj,
34 jobject j_folder_id_obj,
35 jobject j_callback_obj,
36 jobject j_result_obj);
38 void GetCurrentFolderHierarchy(JNIEnv* env,
39 jobject obj,
40 jobject j_folder_id_obj,
41 jobject j_callback_obj,
42 jobject j_result_obj);
44 void DeleteBookmark(JNIEnv* env,
45 jobject obj,
46 jobject j_bookmark_id_obj);
48 void MoveBookmark(JNIEnv* env,
49 jobject obj,
50 jobject j_bookmark_id_obj,
51 jobject j_parent_id_obj,
52 jint index);
54 private:
55 virtual ~BookmarksBridge();
57 base::android::ScopedJavaLocalRef<jobject> CreateJavaBookmark(
58 const BookmarkNode* node);
59 void ExtractBookmarkNodeInformation(
60 const BookmarkNode* node,
61 jobject j_result_obj);
62 const BookmarkNode* GetNodeByID(long node_id, int type);
63 const BookmarkNode* GetFolderWithFallback(long folder_id, int type);
64 // Returns true if |node| can be modified by the user.
65 bool IsEditable(const BookmarkNode* node) const;
66 const BookmarkNode* GetParentNode(const BookmarkNode* node);
67 int GetBookmarkType(const BookmarkNode* node);
68 base::string16 GetTitle(const BookmarkNode* node) const;
69 bool IsReachable(const BookmarkNode* node) const;
70 bool IsLoaded() const;
71 bool IsFolderAvailable(const BookmarkNode* folder) const;
72 void NotifyIfDoneLoading();
74 // Override BaseBookmarkModelObserver.
75 // Called when there are changes to the bookmark model that don't trigger
76 // any of the other callback methods. For example, this is called when
77 // managed or partner bookmarks change.
78 virtual void BookmarkModelChanged() OVERRIDE;
79 virtual void BookmarkModelLoaded(BookmarkModel* model,
80 bool ids_reassigned) OVERRIDE;
81 virtual void BookmarkModelBeingDeleted(BookmarkModel* model) OVERRIDE;
82 virtual void BookmarkNodeMoved(BookmarkModel* model,
83 const BookmarkNode* old_parent,
84 int old_index,
85 const BookmarkNode* new_parent,
86 int new_index) OVERRIDE;
87 virtual void BookmarkNodeAdded(BookmarkModel* model,
88 const BookmarkNode* parent,
89 int index) OVERRIDE;
90 virtual void BookmarkNodeRemoved(BookmarkModel* model,
91 const BookmarkNode* parent,
92 int old_index,
93 const BookmarkNode* node,
94 const std::set<GURL>& removed_urls) OVERRIDE;
95 virtual void BookmarkNodeChanged(BookmarkModel* model,
96 const BookmarkNode* node) OVERRIDE;
97 virtual void BookmarkNodeChildrenReordered(BookmarkModel* model,
98 const BookmarkNode* node) OVERRIDE;
99 virtual void ExtensiveBookmarkChangesBeginning(BookmarkModel* model) OVERRIDE;
100 virtual void ExtensiveBookmarkChangesEnded(BookmarkModel* model) OVERRIDE;
102 // Override ManagedBookmarksShim::Observer
103 virtual void OnManagedBookmarksChanged() OVERRIDE;
105 // Override PartnerBookmarksShim::Observer
106 virtual void PartnerShimChanged(PartnerBookmarksShim* shim) OVERRIDE;
107 virtual void PartnerShimLoaded(PartnerBookmarksShim* shim) OVERRIDE;
108 virtual void ShimBeingDeleted(PartnerBookmarksShim* shim) OVERRIDE;
110 Profile* profile_;
111 JavaObjectWeakGlobalRef weak_java_ref_;
112 BookmarkModel* bookmark_model_; // weak
114 scoped_ptr<ManagedBookmarksShim> managed_bookmarks_shim_;
116 // Information about the Partner bookmarks (must check for IsLoaded()).
117 // This is owned by profile.
118 PartnerBookmarksShim* partner_bookmarks_shim_;
120 DISALLOW_COPY_AND_ASSIGN(BookmarksBridge);
123 #endif // CHROME_BROWSER_ANDROID_BOOKMARKS_BOOKMARKS_BRIDGE_H_