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

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

Issue 1804813002: Delete ChromeBrowserProviderClient. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/provider/ProviderTestBase.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/provider/chrome_browser_provider.cc
diff --git a/chrome/browser/android/provider/chrome_browser_provider.cc b/chrome/browser/android/provider/chrome_browser_provider.cc
index e9a079e0b69848cbf42506872e5c22d0ae7fd8cf..32746fbcabe0d40d6a3e3d740c05da7db6651c09 100644
--- a/chrome/browser/android/provider/chrome_browser_provider.cc
+++ b/chrome/browser/android/provider/chrome_browser_provider.cc
@@ -87,9 +87,6 @@ using content::BrowserThread;
// All derived classes MUST ALWAYS call RequestCompleted when receiving the
// request response. These tasks cannot be invoked from the UI thread.
//
-// - FaviconServiceTask: base class for asynchronous requests that make use of
-// Chromium's favicon service. See AsyncServiceRequest for more details.
-//
// - HistoryProviderTask: base class for asynchronous requests that make use of
// AndroidHistoryProviderService. See AsyncServiceRequest for mode details.
//
@@ -104,29 +101,6 @@ const int64_t kInvalidBookmarkId = -1;
// ------------- Java-related utility methods ------------- //
-// Convert a BookmarkNode, |node|, to the java representation of a bookmark node
-// stored in |*jnode|. Parent node information is optional.
-void ConvertBookmarkNode(
- const BookmarkNode* node,
- const JavaRef<jobject>& parent_node,
- ScopedJavaGlobalRef<jobject>* jnode) {
- DCHECK(jnode);
- if (!node)
- return;
-
- JNIEnv* env = AttachCurrentThread();
- ScopedJavaLocalRef<jstring> url;
- if (node->is_url())
- url.Reset(ConvertUTF8ToJavaString(env, node->url().spec()));
- ScopedJavaLocalRef<jstring> title(
- ConvertUTF16ToJavaString(env, node->GetTitle()));
-
- jnode->Reset(
- Java_BookmarkNode_create(
- env, node->id(), (jint) node->type(), title.obj(), url.obj(),
- parent_node.obj()));
-}
-
jlong ConvertJLongObjectToPrimitive(JNIEnv* env, jobject long_obj) {
ScopedJavaLocalRef<jclass> jlong_clazz = GetClass(env, "java/lang/Long");
jmethodID long_value = MethodID::Get<MethodID::TYPE_INSTANCE>(
@@ -184,17 +158,6 @@ GURL ParseAndMaybeAppendScheme(const base::string16& url,
return gurl;
}
-const BookmarkNode* GetChildFolderByTitle(const BookmarkNode* parent,
- const base::string16& title) {
- for (int i = 0; i < parent->child_count(); ++i) {
- if (parent->GetChild(i)->is_folder() &&
- parent->GetChild(i)->GetTitle() == title) {
- return parent->GetChild(i);
- }
- }
- return NULL;
-}
-
// ------------- Synchronous task classes ------------- //
// Utility task to add a bookmark.
@@ -285,30 +248,6 @@ class RemoveBookmarkTask : public BookmarkModelObserverTask {
DISALLOW_COPY_AND_ASSIGN(RemoveBookmarkTask);
};
-// Utility method to remove all bookmarks that the user can edit.
-class RemoveAllUserBookmarksTask : public BookmarkModelObserverTask {
- public:
- explicit RemoveAllUserBookmarksTask(BookmarkModel* model)
- : BookmarkModelObserverTask(model) {}
-
- ~RemoveAllUserBookmarksTask() override {}
-
- void Run() {
- RunOnUIThreadBlocking::Run(
- base::Bind(&RemoveAllUserBookmarksTask::RunOnUIThread, model()));
- }
-
- static void RunOnUIThread(BookmarkModel* model) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- LOG(ERROR) << "begin model->RemoveAllUserBookmarks";
- model->RemoveAllUserBookmarks();
- LOG(ERROR) << "after model->RemoveAllUserBookmarks";
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(RemoveAllUserBookmarksTask);
-};
-
// Utility method to update a bookmark.
class UpdateBookmarkTask : public BookmarkModelObserverTask {
public:
@@ -371,33 +310,6 @@ class UpdateBookmarkTask : public BookmarkModelObserverTask {
DISALLOW_COPY_AND_ASSIGN(UpdateBookmarkTask);
};
-// Checks if a node exists in the bookmark model.
-class BookmarkNodeExistsTask : public BookmarkModelTask {
- public:
- explicit BookmarkNodeExistsTask(BookmarkModel* model)
- : BookmarkModelTask(model) {
- }
-
- bool Run(const int64_t id) {
- bool result = false;
- RunOnUIThreadBlocking::Run(
- base::Bind(&BookmarkNodeExistsTask::RunOnUIThread,
- model(), id, &result));
- return result;
- }
-
- static void RunOnUIThread(BookmarkModel* model,
- const int64_t id,
- bool* result) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- DCHECK(result);
- *result = bookmarks::GetBookmarkNodeByID(model, id) != NULL;
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(BookmarkNodeExistsTask);
-};
-
// Checks if a node belongs to the Mobile Bookmarks hierarchy branch.
class IsInMobileBookmarksBranchTask : public BookmarkModelTask {
public:
@@ -429,206 +341,6 @@ class IsInMobileBookmarksBranchTask : public BookmarkModelTask {
DISALLOW_COPY_AND_ASSIGN(IsInMobileBookmarksBranchTask);
};
-// Creates folder or retrieves its id if already exists.
-// An invalid parent id is assumed to represent the Mobile Bookmarks folder.
-// Can only be used to create folders inside the Mobile Bookmarks branch.
-class CreateBookmarksFolderOnceTask : public BookmarkModelTask {
- public:
- explicit CreateBookmarksFolderOnceTask(BookmarkModel* model)
- : BookmarkModelTask(model) {}
-
- int64_t Run(const base::string16& title, const int64_t parent_id) {
- int64_t result = kInvalidBookmarkId;
- RunOnUIThreadBlocking::Run(
- base::Bind(&CreateBookmarksFolderOnceTask::RunOnUIThread,
- model(), title, parent_id, &result));
- return result;
- }
-
- static void RunOnUIThread(BookmarkModel* model,
- const base::string16& title,
- const int64_t parent_id,
- int64_t* result) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- DCHECK(result);
-
- // Invalid ids are assumed to refer to the Mobile Bookmarks folder.
- const BookmarkNode* parent =
- parent_id >= 0 ? bookmarks::GetBookmarkNodeByID(model, parent_id)
- : model->mobile_node();
- DCHECK(parent);
-
- bool in_mobile_bookmarks;
- IsInMobileBookmarksBranchTask::RunOnUIThread(model, parent->id(),
- &in_mobile_bookmarks);
- if (!in_mobile_bookmarks) {
- // The parent folder must be inside the Mobile Bookmarks folder.
- *result = kInvalidBookmarkId;
- return;
- }
-
- const BookmarkNode* node = GetChildFolderByTitle(parent, title);
- if (node) {
- *result = node->id();
- return;
- }
-
- AddBookmarkTask::RunOnUIThread(model, title, base::string16(), true,
- parent->id(), result);
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(CreateBookmarksFolderOnceTask);
-};
-
-// Creates a Java BookmarkNode object for a node given its id.
-class GetEditableBookmarkFoldersTask : public BookmarkModelTask {
- public:
- GetEditableBookmarkFoldersTask(
- ManagedBookmarkService* managed_bookmark_service,
- BookmarkModel* model)
- : BookmarkModelTask(model),
- managed_bookmark_service_(managed_bookmark_service) {}
-
- void Run(ScopedJavaGlobalRef<jobject>* jroot) {
- RunOnUIThreadBlocking::Run(
- base::Bind(&GetEditableBookmarkFoldersTask::RunOnUIThread,
- managed_bookmark_service_, model(), jroot));
- }
-
- static void RunOnUIThread(ManagedBookmarkService* managed,
- BookmarkModel* model,
- ScopedJavaGlobalRef<jobject>* jroot) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- const BookmarkNode* root = model->root_node();
- if (!root || !root->is_folder())
- return;
-
- // The iterative approach is not possible because ScopedGlobalJavaRefs
- // cannot be copy-constructed, and therefore not used in STL containers.
- ConvertFolderSubtree(managed, AttachCurrentThread(), root,
- ScopedJavaLocalRef<jobject>(), jroot);
- }
-
- private:
- static void ConvertFolderSubtree(ManagedBookmarkService* managed,
- JNIEnv* env,
- const BookmarkNode* node,
- const JavaRef<jobject>& parent_folder,
- ScopedJavaGlobalRef<jobject>* jfolder) {
- DCHECK(node);
- DCHECK(node->is_folder());
- DCHECK(jfolder);
-
- // Global refs should be used here for thread-safety reasons as this task
- // might be invoked from a thread other than UI. All refs are scoped.
- ConvertBookmarkNode(node, parent_folder, jfolder);
-
- for (int i = 0; i < node->child_count(); ++i) {
- const BookmarkNode* child = node->GetChild(i);
- if (child->is_folder() && managed->CanBeEditedByUser(child)) {
- ScopedJavaGlobalRef<jobject> jchild;
- ConvertFolderSubtree(managed, env, child, *jfolder, &jchild);
-
- Java_BookmarkNode_addChild(env, jfolder->obj(), jchild.obj());
- if (ClearException(env)) {
- LOG(WARNING) << "Java exception while adding child node.";
- return;
- }
- }
- }
- }
-
- ManagedBookmarkService* managed_bookmark_service_;
-
- DISALLOW_COPY_AND_ASSIGN(GetEditableBookmarkFoldersTask);
-};
-
-// Creates a Java BookmarkNode object for a node given its id.
-class GetBookmarkNodeTask : public BookmarkModelTask {
- public:
- explicit GetBookmarkNodeTask(BookmarkModel* model)
- : BookmarkModelTask(model) {
- }
-
- void Run(const int64_t id,
- bool get_parent,
- bool get_children,
- ScopedJavaGlobalRef<jobject>* jnode) {
- return RunOnUIThreadBlocking::Run(
- base::Bind(&GetBookmarkNodeTask::RunOnUIThread,
- model(), id, get_parent, get_children, jnode));
- }
-
- static void RunOnUIThread(BookmarkModel* model,
- const int64_t id,
- bool get_parent,
- bool get_children,
- ScopedJavaGlobalRef<jobject>* jnode) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- const BookmarkNode* node = bookmarks::GetBookmarkNodeByID(model, id);
- if (!node || !jnode)
- return;
-
- ScopedJavaGlobalRef<jobject> jparent;
- if (get_parent) {
- ConvertBookmarkNode(node->parent(), ScopedJavaLocalRef<jobject>(),
- &jparent);
- }
-
- ConvertBookmarkNode(node, jparent, jnode);
-
- JNIEnv* env = AttachCurrentThread();
- if (!jparent.is_null()) {
- Java_BookmarkNode_addChild(env, jparent.obj(), jnode->obj());
- if (ClearException(env)) {
- LOG(WARNING) << "Java exception while adding child node.";
- return;
- }
- }
-
- if (get_children) {
- for (int i = 0; i < node->child_count(); ++i) {
- ScopedJavaGlobalRef<jobject> jchild;
- ConvertBookmarkNode(node->GetChild(i), *jnode, &jchild);
- Java_BookmarkNode_addChild(env, jnode->obj(), jchild.obj());
- if (ClearException(env)) {
- LOG(WARNING) << "Java exception while adding child node.";
- return;
- }
- }
- }
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(GetBookmarkNodeTask);
-};
-
-// Gets the Mobile Bookmarks node. Using this task ensures the correct
-// initialization of the bookmark model.
-class GetMobileBookmarksNodeTask : public BookmarkModelTask {
- public:
- explicit GetMobileBookmarksNodeTask(BookmarkModel* model)
- : BookmarkModelTask(model) {}
-
- const BookmarkNode* Run() {
- const BookmarkNode* result = NULL;
- RunOnUIThreadBlocking::Run(
- base::Bind(&GetMobileBookmarksNodeTask::RunOnUIThread,
- model(), &result));
- return result;
- }
-
- static void RunOnUIThread(BookmarkModel* model, const BookmarkNode** result) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- DCHECK(result);
- *result = model->mobile_node();
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(GetMobileBookmarksNodeTask);
-};
-
// ------------- Aynchronous requests classes ------------- //
// Base class for asynchronous blocking requests to Chromium services.
@@ -653,62 +365,6 @@ class AsyncServiceRequest : protected BlockingUIThreadAsyncRequest {
DISALLOW_COPY_AND_ASSIGN(AsyncServiceRequest);
};
-// Base class for all asynchronous blocking tasks that use the favicon service.
-class FaviconServiceTask : public AsyncServiceRequest<favicon::FaviconService> {
- public:
- FaviconServiceTask(base::CancelableTaskTracker* cancelable_tracker,
- Profile* profile,
- favicon::FaviconService* favicon_service)
- : AsyncServiceRequest<favicon::FaviconService>(favicon_service,
- cancelable_tracker),
- profile_(profile) {}
-
- Profile* profile() const { return profile_; }
-
- private:
- Profile* profile_;
-
- DISALLOW_COPY_AND_ASSIGN(FaviconServiceTask);
-};
-
-// Retrieves the favicon or touch icon for a URL from the FaviconService.
-class BookmarkIconFetchTask : public FaviconServiceTask {
- public:
- BookmarkIconFetchTask(base::CancelableTaskTracker* cancelable_tracker,
- Profile* profile,
- favicon::FaviconService* favicon_service)
- : FaviconServiceTask(cancelable_tracker, profile, favicon_service) {}
-
- favicon_base::FaviconRawBitmapResult Run(const GURL& url) {
- float max_scale = ui::GetScaleForScaleFactor(
- ResourceBundle::GetSharedInstance().GetMaxScaleFactor());
- int desired_size_in_pixel = std::ceil(gfx::kFaviconSize * max_scale);
-
- if (service() == NULL)
- return favicon_base::FaviconRawBitmapResult();
-
- RunAsyncRequestOnUIThreadBlocking(base::Bind(
- &favicon::FaviconService::GetRawFaviconForPageURL,
- base::Unretained(service()), url,
- favicon_base::FAVICON | favicon_base::TOUCH_ICON, desired_size_in_pixel,
- base::Bind(&BookmarkIconFetchTask::OnFaviconRetrieved,
- base::Unretained(this)),
- cancelable_tracker()));
- return result_;
- }
-
- private:
- void OnFaviconRetrieved(
- const favicon_base::FaviconRawBitmapResult& bitmap_result) {
- result_ = bitmap_result;
- RequestCompleted();
- }
-
- favicon_base::FaviconRawBitmapResult result_;
-
- DISALLOW_COPY_AND_ASSIGN(BookmarkIconFetchTask);
-};
-
// Base class for all asynchronous blocking tasks that use the Android history
// provider service.
class HistoryProviderTask
@@ -1497,119 +1153,6 @@ jint ChromeBrowserProvider::RemoveSearchTermFromAPI(
return task.Run(where_clause, where_args);
}
-// ------------- Provider custom APIs ------------- //
-
-jboolean ChromeBrowserProvider::BookmarkNodeExists(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- jlong id) {
- BookmarkNodeExistsTask task(bookmark_model_);
- return task.Run(id);
-}
-
-jlong ChromeBrowserProvider::CreateBookmarksFolderOnce(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jstring>& jtitle,
- jlong parent_id) {
- base::string16 title = ConvertJavaStringToUTF16(env, jtitle);
- if (title.empty())
- return kInvalidBookmarkId;
-
- CreateBookmarksFolderOnceTask task(bookmark_model_);
- return task.Run(title, parent_id);
-}
-
-ScopedJavaLocalRef<jobject> ChromeBrowserProvider::GetEditableBookmarkFolders(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj) {
- ScopedJavaGlobalRef<jobject> jroot;
- ManagedBookmarkService* managed =
- ManagedBookmarkServiceFactory::GetForProfile(profile_);
- BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile_);
- GetEditableBookmarkFoldersTask task(managed, model);
- task.Run(&jroot);
- return ScopedJavaLocalRef<jobject>(jroot);
-}
-
-void ChromeBrowserProvider::RemoveAllUserBookmarks(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj) {
- LOG(ERROR) << "begin ChromeBrowserProvider::RemoveAllUserBookmarks";
- RemoveAllUserBookmarksTask task(bookmark_model_);
- task.Run();
- LOG(ERROR) << "end ChromeBrowserProvider::RemoveAllUserBookmarks";
-}
-
-ScopedJavaLocalRef<jobject> ChromeBrowserProvider::GetBookmarkNode(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- jlong id,
- jboolean get_parent,
- jboolean get_children) {
- ScopedJavaGlobalRef<jobject> jnode;
- GetBookmarkNodeTask task(bookmark_model_);
- task.Run(id, get_parent, get_children, &jnode);
- return ScopedJavaLocalRef<jobject>(jnode);
-}
-
-ScopedJavaLocalRef<jobject> ChromeBrowserProvider::GetMobileBookmarksFolder(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj) {
- ScopedJavaGlobalRef<jobject> jnode;
- GetMobileBookmarksNodeTask task(bookmark_model_);
- ConvertBookmarkNode(task.Run(), ScopedJavaLocalRef<jobject>(), &jnode);
- return ScopedJavaLocalRef<jobject>(jnode);
-}
-
-jboolean ChromeBrowserProvider::IsBookmarkInMobileBookmarksBranch(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- jlong id) {
- IsInMobileBookmarksBranchTask task(bookmark_model_);
- return task.Run(id);
-}
-
-ScopedJavaLocalRef<jbyteArray> ChromeBrowserProvider::GetFaviconOrTouchIcon(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jstring>& jurl) {
- if (!jurl)
- return ScopedJavaLocalRef<jbyteArray>();
-
- GURL url = GURL(ConvertJavaStringToUTF16(env, jurl));
- BookmarkIconFetchTask favicon_task(&cancelable_task_tracker_, profile_,
- favicon_service_);
- favicon_base::FaviconRawBitmapResult bitmap_result = favicon_task.Run(url);
-
- if (!bitmap_result.is_valid() || !bitmap_result.bitmap_data.get())
- return ScopedJavaLocalRef<jbyteArray>();
-
- return base::android::ToJavaByteArray(env, bitmap_result.bitmap_data->front(),
- bitmap_result.bitmap_data->size());
-}
-
-ScopedJavaLocalRef<jbyteArray> ChromeBrowserProvider::GetThumbnail(
- JNIEnv* env,
- const JavaParamRef<jobject>& obj,
- const JavaParamRef<jstring>& jurl) {
- if (!jurl)
- return ScopedJavaLocalRef<jbyteArray>();
- GURL url = GURL(ConvertJavaStringToUTF16(env, jurl));
-
- // GetPageThumbnail is synchronous and can be called from any thread.
- scoped_refptr<base::RefCountedMemory> thumbnail;
- if (top_sites_)
- top_sites_->GetPageThumbnail(url, false, &thumbnail);
-
- if (!thumbnail.get() || !thumbnail->front()) {
- return ScopedJavaLocalRef<jbyteArray>();
- }
-
- return base::android::ToJavaByteArray(env, thumbnail->front(),
- thumbnail->size());
-}
-
// ------------- Observer-related methods ------------- //
void ChromeBrowserProvider::ExtensiveBookmarkChangesBeginning(
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/provider/ProviderTestBase.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698