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

Unified Diff: chrome/browser/android/provider/chrome_browser_provider.h

Issue 10912172: [Android] Upstream ChromeBrowserProvider, the Android port ContentProvider implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: temporarily removing tests until we can compile and run them (soon) Created 8 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/provider/chrome_browser_provider.h
diff --git a/chrome/browser/android/provider/chrome_browser_provider.h b/chrome/browser/android/provider/chrome_browser_provider.h
new file mode 100644
index 0000000000000000000000000000000000000000..ef83655b612432118b375517e2fcd1fb6e7bedb0
--- /dev/null
+++ b/chrome/browser/android/provider/chrome_browser_provider.h
@@ -0,0 +1,208 @@
+// Copyright (c) 2012 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 CHROME_BROWSER_ANDROID_PROVIDER_CHROME_BROWSER_PROVIDER_H_
+#define CHROME_BROWSER_ANDROID_PROVIDER_CHROME_BROWSER_PROVIDER_H_
+
+#include "base/android/jni_helper.h"
+#include "base/android/scoped_java_ref.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/synchronization/waitable_event.h"
+#include "chrome/browser/bookmarks/base_bookmark_model_observer.h"
+#include "chrome/browser/cancelable_request.h"
+#include "chrome/browser/history/android/android_history_types.h"
+#include "content/public/browser/notification_observer.h"
+#include "content/public/browser/notification_registrar.h"
+
+class AndroidHistoryProviderService;
+class FaviconService;
+class Profile;
+
+namespace history {
+class TopSites;
+}
+
+namespace sql {
+class Statement;
+}
+
+// This class implements the native methods of ChromeBrowserProvider.java
+class ChromeBrowserProvider : public BaseBookmarkModelObserver,
+ public content::NotificationObserver {
+ public:
+ ChromeBrowserProvider(JNIEnv* env, jobject obj);
+ void Destroy(JNIEnv*, jobject);
+
+ // JNI registration.
+ static bool RegisterChromeBrowserProvider(JNIEnv* env);
+
+ // Adds either a new bookmark or bookmark folder based on |is_folder|. The
+ // bookmark is added to the beginning of the specified parent and if the
+ // parent ID is not valid (i.e. < 0) then it will be added to the bookmark
+ // bar.
+ jlong AddBookmark(JNIEnv* env, jobject,
+ jstring jurl,
+ jstring jtitle,
+ jboolean is_folder,
+ jlong parent_id);
+
+ // Removes a bookmark (or folder) with the specified ID.
+ jint RemoveBookmark(JNIEnv*, jobject, jlong id);
+
+ // Updates a bookmark (or folder) with the the new title and new URL.
+ // The |url| field will be ignored if the bookmark node is a folder.
+ // If a valid |parent_id| (>= 0) different from the currently specified
+ // parent is given, the node will be moved to that folder as the first
+ // child.
+ jint UpdateBookmark(JNIEnv* env,
+ jobject,
+ jlong id,
+ jstring url,
+ jstring title,
+ jlong parent_id);
+
+ // The below are methods to support Android public API.
+ // Bookmark and history APIs. -----------------------------------------------
+ jlong AddBookmarkFromAPI(JNIEnv* env,
+ jobject obj,
+ jstring url,
+ jobject created,
+ jobject isBookmark,
+ jobject date,
+ jbyteArray favicon,
+ jstring title,
+ jobject visits,
+ jlong parent_id);
+
+ base::android::ScopedJavaLocalRef<jobject> QueryBookmarkFromAPI(
+ JNIEnv* env,
+ jobject obj,
+ jobjectArray projection,
+ jstring selections,
+ jobjectArray selection_args,
+ jstring sort_order);
+
+ jint UpdateBookmarkFromAPI(JNIEnv* env,
+ jobject obj,
+ jstring url,
+ jobject created,
+ jobject isBookmark,
+ jobject date,
+ jbyteArray favicon,
+ jstring title,
+ jobject visits,
+ jlong parent_id,
+ jstring selections,
+ jobjectArray selection_args);
+
+ jint RemoveBookmarkFromAPI(JNIEnv* env,
+ jobject obj,
+ jstring selections,
+ jobjectArray selection_args);
+
+ jint RemoveHistoryFromAPI(JNIEnv* env,
+ jobject obj,
+ jstring selections,
+ jobjectArray selection_args);
+
+ jlong AddSearchTermFromAPI(JNIEnv* env,
+ jobject obj,
+ jstring search_term,
+ jobject date);
+
+ base::android::ScopedJavaLocalRef<jobject> QuerySearchTermFromAPI(
+ JNIEnv* env,
+ jobject obj,
+ jobjectArray projection,
+ jstring selections,
+ jobjectArray selection_args,
+ jstring sort_order);
+
+ jint RemoveSearchTermFromAPI(JNIEnv* env,
+ jobject obj,
+ jstring selections,
+ jobjectArray selection_args);
+
+ jint UpdateSearchTermFromAPI(JNIEnv* env,
+ jobject obj,
+ jstring search_term,
+ jobject date,
+ jstring selections,
+ jobjectArray selection_args);
+
+ // Custom provider API methods. ---------------------------------------------
+ jlong CreateBookmarksFolderOnce(JNIEnv* env,
+ jobject obj,
+ jstring title,
+ jlong parent_id);
+
+ base::android::ScopedJavaLocalRef<jobject> GetAllBookmarkFolders(JNIEnv* env,
+ jobject obj);
+
+ base::android::ScopedJavaLocalRef<jobject> GetBookmarkNode(
+ JNIEnv* env,
+ jobject obj,
+ jlong id,
+ jboolean get_parent,
+ jboolean get_children);
+
+ base::android::ScopedJavaLocalRef<jobject> GetMobileBookmarksFolder(
+ JNIEnv* env,
+ jobject obj);
+
+ jboolean IsBookmarkInMobileBookmarksBranch(JNIEnv* env,
+ jobject obj,
+ jlong id);
+
+ jboolean BookmarkNodeExists(JNIEnv* env,
+ jobject obj,
+ jlong id);
+
+ base::android::ScopedJavaLocalRef<jbyteArray> GetFaviconOrTouchIcon(
+ JNIEnv* env,
+ jobject obj,
+ jstring url);
+
+ base::android::ScopedJavaLocalRef<jbyteArray> GetThumbnail(JNIEnv* env,
+ jobject obj,
+ jstring url);
+
+ private:
+ virtual ~ChromeBrowserProvider();
+
+ // Override BaseBookmarkModelObserver.
+ virtual void BookmarkModelChanged() OVERRIDE;
+
+ // Override NotificationObserver.
+ virtual void Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) OVERRIDE;
+
+ JavaObjectWeakGlobalRef weak_java_provider_;
+
+ Profile* profile_;
+ BookmarkModel* bookmark_model_;
+ history::TopSites* top_sites_;
+
+ scoped_ptr<AndroidHistoryProviderService> service_;
+ scoped_ptr<FaviconService> favicon_service_;
+
+ // Different cancelable request consumers must be used for each service.
+ // This because a synchronization issue that could lead to flaky assertion
+ // failures otherwise.
+ // TODO(leandrogracia): use a single consumer once http://crbug.com/85970
+ // is fixed.
+ CancelableRequestConsumer android_history_consumer_;
+ CancelableRequestConsumer favicon_consumer_;
+
+ // Used to register/unregister notification observer.
+ content::NotificationRegistrar notification_registrar_;
+
+ // Signaled if TemplateURLModel has been loaded.
+ base::WaitableEvent template_loaded_event_;
+
+ DISALLOW_COPY_AND_ASSIGN(ChromeBrowserProvider);
+};
+
+#endif // CHROME_BROWSER_ANDROID_PROVIDER_CHROME_BROWSER_PROVIDER_H_

Powered by Google App Engine
This is Rietveld 408576698