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

Side by Side Diff: chrome/browser/android/provider/chrome_browser_provider.cc

Issue 242823002: Extract GetNodeByID() method from BookmarkModel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: revert a change in bookmarks_helper.cc that colides with a wstring and cq does not like that Created 6 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/provider/chrome_browser_provider.h" 5 #include "chrome/browser/android/provider/chrome_browser_provider.h"
6 6
7 #include <list> 7 #include <list>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/android/jni_android.h" 10 #include "base/android/jni_android.h"
11 #include "base/android/jni_array.h" 11 #include "base/android/jni_array.h"
12 #include "base/android/jni_string.h" 12 #include "base/android/jni_string.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/memory/ref_counted_memory.h" 14 #include "base/memory/ref_counted_memory.h"
15 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
16 #include "base/task/cancelable_task_tracker.h" 16 #include "base/task/cancelable_task_tracker.h"
17 #include "base/time/time.h" 17 #include "base/time/time.h"
18 #include "chrome/browser/android/provider/blocking_ui_thread_async_request.h" 18 #include "chrome/browser/android/provider/blocking_ui_thread_async_request.h"
19 #include "chrome/browser/android/provider/bookmark_model_observer_task.h" 19 #include "chrome/browser/android/provider/bookmark_model_observer_task.h"
20 #include "chrome/browser/android/provider/run_on_ui_thread_blocking.h" 20 #include "chrome/browser/android/provider/run_on_ui_thread_blocking.h"
21 #include "chrome/browser/bookmarks/bookmark_model.h" 21 #include "chrome/browser/bookmarks/bookmark_model.h"
22 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 22 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
23 #include "chrome/browser/bookmarks/bookmark_utils.h"
23 #include "chrome/browser/browser_process.h" 24 #include "chrome/browser/browser_process.h"
24 #include "chrome/browser/chrome_notification_types.h" 25 #include "chrome/browser/chrome_notification_types.h"
25 #include "chrome/browser/favicon/favicon_service.h" 26 #include "chrome/browser/favicon/favicon_service.h"
26 #include "chrome/browser/favicon/favicon_service_factory.h" 27 #include "chrome/browser/favicon/favicon_service_factory.h"
27 #include "chrome/browser/history/android/android_history_types.h" 28 #include "chrome/browser/history/android/android_history_types.h"
28 #include "chrome/browser/history/android/sqlite_cursor.h" 29 #include "chrome/browser/history/android/sqlite_cursor.h"
29 #include "chrome/browser/history/top_sites.h" 30 #include "chrome/browser/history/top_sites.h"
30 #include "chrome/browser/profiles/profile.h" 31 #include "chrome/browser/profiles/profile.h"
31 #include "chrome/browser/profiles/profile_manager.h" 32 #include "chrome/browser/profiles/profile_manager.h"
32 #include "chrome/browser/search_engines/template_url.h" 33 #include "chrome/browser/search_engines/template_url.h"
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 int64* result) { 214 int64* result) {
214 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 215 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
215 DCHECK(result); 216 DCHECK(result);
216 GURL gurl = ParseAndMaybeAppendScheme(url, kDefaultUrlScheme); 217 GURL gurl = ParseAndMaybeAppendScheme(url, kDefaultUrlScheme);
217 218
218 // Check if the bookmark already exists. 219 // Check if the bookmark already exists.
219 const BookmarkNode* node = model->GetMostRecentlyAddedNodeForURL(gurl); 220 const BookmarkNode* node = model->GetMostRecentlyAddedNodeForURL(gurl);
220 if (!node) { 221 if (!node) {
221 const BookmarkNode* parent_node = NULL; 222 const BookmarkNode* parent_node = NULL;
222 if (parent_id >= 0) 223 if (parent_id >= 0)
223 parent_node = model->GetNodeByID(parent_id); 224 parent_node = GetBookmarkNodeByID(model, parent_id);
224 if (!parent_node) 225 if (!parent_node)
225 parent_node = model->bookmark_bar_node(); 226 parent_node = model->bookmark_bar_node();
226 227
227 if (is_folder) 228 if (is_folder)
228 node = model->AddFolder(parent_node, parent_node->child_count(), title); 229 node = model->AddFolder(parent_node, parent_node->child_count(), title);
229 else 230 else
230 node = model->AddURL(parent_node, 0, title, gurl); 231 node = model->AddURL(parent_node, 0, title, gurl);
231 } 232 }
232 233
233 *result = node ? node ->id() : kInvalidBookmarkId; 234 *result = node ? node ->id() : kInvalidBookmarkId;
(...skipping 14 matching lines...) Expand all
248 249
249 int Run(const int64 id) { 250 int Run(const int64 id) {
250 id_to_delete_ = id; 251 id_to_delete_ = id;
251 RunOnUIThreadBlocking::Run( 252 RunOnUIThreadBlocking::Run(
252 base::Bind(&RemoveBookmarkTask::RunOnUIThread, model(), id)); 253 base::Bind(&RemoveBookmarkTask::RunOnUIThread, model(), id));
253 return deleted_; 254 return deleted_;
254 } 255 }
255 256
256 static void RunOnUIThread(BookmarkModel* model, const int64 id) { 257 static void RunOnUIThread(BookmarkModel* model, const int64 id) {
257 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 258 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
258 const BookmarkNode* node = model->GetNodeByID(id); 259 const BookmarkNode* node = GetBookmarkNodeByID(model, id);
259 if (node && node->parent()) { 260 if (node && node->parent()) {
260 const BookmarkNode* parent_node = node->parent(); 261 const BookmarkNode* parent_node = node->parent();
261 model->Remove(parent_node, parent_node->GetIndexOf(node)); 262 model->Remove(parent_node, parent_node->GetIndexOf(node));
262 } 263 }
263 } 264 }
264 265
265 // Verify that the bookmark was actually removed. Called synchronously. 266 // Verify that the bookmark was actually removed. Called synchronously.
266 virtual void BookmarkNodeRemoved(BookmarkModel* bookmark_model, 267 virtual void BookmarkNodeRemoved(BookmarkModel* bookmark_model,
267 const BookmarkNode* parent, 268 const BookmarkNode* parent,
268 int old_index, 269 int old_index,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 model(), id, title, url, parent_id)); 320 model(), id, title, url, parent_id));
320 return updated_; 321 return updated_;
321 } 322 }
322 323
323 static void RunOnUIThread(BookmarkModel* model, 324 static void RunOnUIThread(BookmarkModel* model,
324 const int64 id, 325 const int64 id,
325 const base::string16& title, 326 const base::string16& title,
326 const base::string16& url, 327 const base::string16& url,
327 const int64 parent_id) { 328 const int64 parent_id) {
328 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 329 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
329 const BookmarkNode* node = model->GetNodeByID(id); 330 const BookmarkNode* node = GetBookmarkNodeByID(model, id);
330 if (node) { 331 if (node) {
331 if (node->GetTitle() != title) 332 if (node->GetTitle() != title)
332 model->SetTitle(node, title); 333 model->SetTitle(node, title);
333 334
334 if (node->type() == BookmarkNode::URL) { 335 if (node->type() == BookmarkNode::URL) {
335 GURL bookmark_url = ParseAndMaybeAppendScheme(url, kDefaultUrlScheme); 336 GURL bookmark_url = ParseAndMaybeAppendScheme(url, kDefaultUrlScheme);
336 if (bookmark_url != node->url()) 337 if (bookmark_url != node->url())
337 model->SetURL(node, bookmark_url); 338 model->SetURL(node, bookmark_url);
338 } 339 }
339 340
340 if (parent_id >= 0 && 341 if (parent_id >= 0 &&
341 (!node->parent() || parent_id != node->parent()->id())) { 342 (!node->parent() || parent_id != node->parent()->id())) {
342 const BookmarkNode* new_parent = model->GetNodeByID(parent_id); 343 const BookmarkNode* new_parent = GetBookmarkNodeByID(model, parent_id);
343 344
344 if (new_parent) 345 if (new_parent)
345 model->Move(node, new_parent, 0); 346 model->Move(node, new_parent, 0);
346 } 347 }
347 } 348 }
348 } 349 }
349 350
350 // Verify that the bookmark was actually updated. Called synchronously. 351 // Verify that the bookmark was actually updated. Called synchronously.
351 virtual void BookmarkNodeChanged(BookmarkModel* bookmark_model, 352 virtual void BookmarkNodeChanged(BookmarkModel* bookmark_model,
352 const BookmarkNode* node) OVERRIDE { 353 const BookmarkNode* node) OVERRIDE {
(...skipping 21 matching lines...) Expand all
374 base::Bind(&BookmarkNodeExistsTask::RunOnUIThread, 375 base::Bind(&BookmarkNodeExistsTask::RunOnUIThread,
375 model(), id, &result)); 376 model(), id, &result));
376 return result; 377 return result;
377 } 378 }
378 379
379 static void RunOnUIThread(BookmarkModel* model, 380 static void RunOnUIThread(BookmarkModel* model,
380 const int64 id, 381 const int64 id,
381 bool* result) { 382 bool* result) {
382 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 383 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
383 DCHECK(result); 384 DCHECK(result);
384 *result = model->GetNodeByID(id) != NULL; 385 *result = GetBookmarkNodeByID(model, id) != NULL;
385 } 386 }
386 387
387 private: 388 private:
388 DISALLOW_COPY_AND_ASSIGN(BookmarkNodeExistsTask); 389 DISALLOW_COPY_AND_ASSIGN(BookmarkNodeExistsTask);
389 }; 390 };
390 391
391 // Checks if a node belongs to the Mobile Bookmarks hierarchy branch. 392 // Checks if a node belongs to the Mobile Bookmarks hierarchy branch.
392 class IsInMobileBookmarksBranchTask : public BookmarkModelTask { 393 class IsInMobileBookmarksBranchTask : public BookmarkModelTask {
393 public: 394 public:
394 explicit IsInMobileBookmarksBranchTask(BookmarkModel* model) 395 explicit IsInMobileBookmarksBranchTask(BookmarkModel* model)
395 : BookmarkModelTask(model) {} 396 : BookmarkModelTask(model) {}
396 397
397 bool Run(const int64 id) { 398 bool Run(const int64 id) {
398 bool result = false; 399 bool result = false;
399 RunOnUIThreadBlocking::Run( 400 RunOnUIThreadBlocking::Run(
400 base::Bind(&IsInMobileBookmarksBranchTask::RunOnUIThread, 401 base::Bind(&IsInMobileBookmarksBranchTask::RunOnUIThread,
401 model(), id, &result)); 402 model(), id, &result));
402 return result; 403 return result;
403 } 404 }
404 405
405 static void RunOnUIThread(BookmarkModel* model, 406 static void RunOnUIThread(BookmarkModel* model,
406 const int64 id, 407 const int64 id,
407 bool *result) { 408 bool *result) {
408 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 409 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
409 DCHECK(result); 410 DCHECK(result);
410 const BookmarkNode* node = model->GetNodeByID(id); 411 const BookmarkNode* node = GetBookmarkNodeByID(model, id);
411 const BookmarkNode* mobile_node = model->mobile_node(); 412 const BookmarkNode* mobile_node = model->mobile_node();
412 while (node && node != mobile_node) 413 while (node && node != mobile_node)
413 node = node->parent(); 414 node = node->parent();
414 415
415 *result = node == mobile_node; 416 *result = node == mobile_node;
416 } 417 }
417 418
418 private: 419 private:
419 DISALLOW_COPY_AND_ASSIGN(IsInMobileBookmarksBranchTask); 420 DISALLOW_COPY_AND_ASSIGN(IsInMobileBookmarksBranchTask);
420 }; 421 };
(...skipping 16 matching lines...) Expand all
437 438
438 static void RunOnUIThread(BookmarkModel* model, 439 static void RunOnUIThread(BookmarkModel* model,
439 const base::string16& title, 440 const base::string16& title,
440 const int64 parent_id, 441 const int64 parent_id,
441 int64* result) { 442 int64* result) {
442 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 443 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
443 DCHECK(result); 444 DCHECK(result);
444 445
445 // Invalid ids are assumed to refer to the Mobile Bookmarks folder. 446 // Invalid ids are assumed to refer to the Mobile Bookmarks folder.
446 const BookmarkNode* parent = parent_id >= 0 ? 447 const BookmarkNode* parent = parent_id >= 0 ?
447 model->GetNodeByID(parent_id) : model->mobile_node(); 448 GetBookmarkNodeByID(model, parent_id) : model->mobile_node();
448 DCHECK(parent); 449 DCHECK(parent);
449 450
450 bool in_mobile_bookmarks; 451 bool in_mobile_bookmarks;
451 IsInMobileBookmarksBranchTask::RunOnUIThread(model, parent->id(), 452 IsInMobileBookmarksBranchTask::RunOnUIThread(model, parent->id(),
452 &in_mobile_bookmarks); 453 &in_mobile_bookmarks);
453 if (!in_mobile_bookmarks) { 454 if (!in_mobile_bookmarks) {
454 // The parent folder must be inside the Mobile Bookmarks folder. 455 // The parent folder must be inside the Mobile Bookmarks folder.
455 *result = kInvalidBookmarkId; 456 *result = kInvalidBookmarkId;
456 return; 457 return;
457 } 458 }
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 base::Bind(&GetBookmarkNodeTask::RunOnUIThread, 542 base::Bind(&GetBookmarkNodeTask::RunOnUIThread,
542 model(), id, get_parent, get_children, jnode)); 543 model(), id, get_parent, get_children, jnode));
543 } 544 }
544 545
545 static void RunOnUIThread(BookmarkModel* model, 546 static void RunOnUIThread(BookmarkModel* model,
546 const int64 id, 547 const int64 id,
547 bool get_parent, 548 bool get_parent,
548 bool get_children, 549 bool get_children,
549 ScopedJavaGlobalRef<jobject>* jnode) { 550 ScopedJavaGlobalRef<jobject>* jnode) {
550 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 551 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
551 const BookmarkNode* node = model->GetNodeByID(id); 552 const BookmarkNode* node = GetBookmarkNodeByID(model, id);
552 if (!node || !jnode) 553 if (!node || !jnode)
553 return; 554 return;
554 555
555 ScopedJavaGlobalRef<jobject> jparent; 556 ScopedJavaGlobalRef<jobject> jparent;
556 if (get_parent) { 557 if (get_parent) {
557 ConvertBookmarkNode(node->parent(), ScopedJavaLocalRef<jobject>(), 558 ConvertBookmarkNode(node->parent(), ScopedJavaLocalRef<jobject>(),
558 &jparent); 559 &jparent);
559 } 560 }
560 561
561 ConvertBookmarkNode(node, jparent, jnode); 562 ConvertBookmarkNode(node, jparent, jnode);
(...skipping 1052 matching lines...) Expand 10 before | Expand all | Expand 10 after
1614 Java_ChromeBrowserProvider_onBookmarkChanged(env, obj.obj()); 1615 Java_ChromeBrowserProvider_onBookmarkChanged(env, obj.obj());
1615 } else if (type == 1616 } else if (type ==
1616 chrome::NOTIFICATION_HISTORY_KEYWORD_SEARCH_TERM_UPDATED) { 1617 chrome::NOTIFICATION_HISTORY_KEYWORD_SEARCH_TERM_UPDATED) {
1617 JNIEnv* env = AttachCurrentThread(); 1618 JNIEnv* env = AttachCurrentThread();
1618 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); 1619 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env);
1619 if (obj.is_null()) 1620 if (obj.is_null())
1620 return; 1621 return;
1621 Java_ChromeBrowserProvider_onSearchTermChanged(env, obj.obj()); 1622 Java_ChromeBrowserProvider_onSearchTermChanged(env, obj.obj());
1622 } 1623 }
1623 } 1624 }
OLDNEW
« no previous file with comments | « chrome/browser/android/bookmarks/bookmarks_bridge.cc ('k') | chrome/browser/bookmarks/bookmark_expanded_state_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698