Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 // The history system runs on a background thread so that potentially slow | 5 // The history system runs on a background thread so that potentially slow |
| 6 // database operations don't delay the browser. This backend processing is | 6 // database operations don't delay the browser. This backend processing is |
| 7 // represented by HistoryBackend. The HistoryService's job is to dispatch to | 7 // represented by HistoryBackend. The HistoryService's job is to dispatch to |
| 8 // that thread. | 8 // that thread. |
| 9 // | 9 // |
| 10 // Main thread History thread | 10 // Main thread History thread |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 248 | 248 |
| 249 bool HistoryService::BackendLoaded() { | 249 bool HistoryService::BackendLoaded() { |
| 250 DCHECK(thread_checker_.CalledOnValidThread()); | 250 DCHECK(thread_checker_.CalledOnValidThread()); |
| 251 return backend_loaded_; | 251 return backend_loaded_; |
| 252 } | 252 } |
| 253 | 253 |
| 254 void HistoryService::ClearCachedDataForContextID( | 254 void HistoryService::ClearCachedDataForContextID( |
| 255 history::ContextID context_id) { | 255 history::ContextID context_id) { |
| 256 DCHECK(thread_) << "History service being called after cleanup"; | 256 DCHECK(thread_) << "History service being called after cleanup"; |
| 257 DCHECK(thread_checker_.CalledOnValidThread()); | 257 DCHECK(thread_checker_.CalledOnValidThread()); |
| 258 ScheduleAndForget(PRIORITY_NORMAL, | 258 ScheduleTask(PRIORITY_NORMAL, |
| 259 &HistoryBackend::ClearCachedDataForContextID, context_id); | 259 base::Bind(&HistoryBackend::ClearCachedDataForContextID, |
| 260 history_backend_.get(), context_id)); | |
| 260 } | 261 } |
| 261 | 262 |
| 262 history::URLDatabase* HistoryService::InMemoryDatabase() { | 263 history::URLDatabase* HistoryService::InMemoryDatabase() { |
| 263 DCHECK(thread_checker_.CalledOnValidThread()); | 264 DCHECK(thread_checker_.CalledOnValidThread()); |
| 264 return in_memory_backend_ ? in_memory_backend_->db() : NULL; | 265 return in_memory_backend_ ? in_memory_backend_->db() : NULL; |
| 265 } | 266 } |
| 266 | 267 |
| 267 bool HistoryService::GetTypedCountForURL(const GURL& url, int* typed_count) { | 268 bool HistoryService::GetTypedCountForURL(const GURL& url, int* typed_count) { |
| 268 DCHECK(thread_checker_.CalledOnValidThread()); | 269 DCHECK(thread_checker_.CalledOnValidThread()); |
| 269 history::URLRow url_row; | 270 history::URLRow url_row; |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 300 void HistoryService::Shutdown() { | 301 void HistoryService::Shutdown() { |
| 301 DCHECK(thread_checker_.CalledOnValidThread()); | 302 DCHECK(thread_checker_.CalledOnValidThread()); |
| 302 Cleanup(); | 303 Cleanup(); |
| 303 } | 304 } |
| 304 | 305 |
| 305 void HistoryService::SetKeywordSearchTermsForURL(const GURL& url, | 306 void HistoryService::SetKeywordSearchTermsForURL(const GURL& url, |
| 306 KeywordID keyword_id, | 307 KeywordID keyword_id, |
| 307 const base::string16& term) { | 308 const base::string16& term) { |
| 308 DCHECK(thread_) << "History service being called after cleanup"; | 309 DCHECK(thread_) << "History service being called after cleanup"; |
| 309 DCHECK(thread_checker_.CalledOnValidThread()); | 310 DCHECK(thread_checker_.CalledOnValidThread()); |
| 310 ScheduleAndForget(PRIORITY_UI, | 311 ScheduleTask(PRIORITY_UI, |
| 311 &HistoryBackend::SetKeywordSearchTermsForURL, | 312 base::Bind(&HistoryBackend::SetKeywordSearchTermsForURL, |
| 312 url, keyword_id, term); | 313 history_backend_.get(), url, keyword_id, term)); |
| 313 } | 314 } |
| 314 | 315 |
| 315 void HistoryService::DeleteAllSearchTermsForKeyword(KeywordID keyword_id) { | 316 void HistoryService::DeleteAllSearchTermsForKeyword(KeywordID keyword_id) { |
| 316 DCHECK(thread_) << "History service being called after cleanup"; | 317 DCHECK(thread_) << "History service being called after cleanup"; |
| 317 DCHECK(thread_checker_.CalledOnValidThread()); | 318 DCHECK(thread_checker_.CalledOnValidThread()); |
| 318 | 319 |
| 319 if (in_memory_backend_) | 320 if (in_memory_backend_) |
| 320 in_memory_backend_->DeleteAllSearchTermsForKeyword(keyword_id); | 321 in_memory_backend_->DeleteAllSearchTermsForKeyword(keyword_id); |
| 321 | 322 |
| 322 ScheduleAndForget(PRIORITY_UI, | 323 ScheduleTask(PRIORITY_UI, |
| 323 &HistoryBackend::DeleteAllSearchTermsForKeyword, | 324 base::Bind(&HistoryBackend::DeleteAllSearchTermsForKeyword, |
| 324 keyword_id); | 325 history_backend_.get(), keyword_id)); |
| 325 } | 326 } |
| 326 | 327 |
| 327 void HistoryService::DeleteKeywordSearchTermForURL(const GURL& url) { | 328 void HistoryService::DeleteKeywordSearchTermForURL(const GURL& url) { |
| 328 DCHECK(thread_) << "History service being called after cleanup"; | 329 DCHECK(thread_) << "History service being called after cleanup"; |
| 329 DCHECK(thread_checker_.CalledOnValidThread()); | 330 DCHECK(thread_checker_.CalledOnValidThread()); |
| 330 ScheduleAndForget(PRIORITY_UI, &HistoryBackend::DeleteKeywordSearchTermForURL, | 331 ScheduleTask(PRIORITY_UI, |
| 331 url); | 332 base::Bind(&HistoryBackend::DeleteKeywordSearchTermForURL, |
| 333 history_backend_.get(), url)); | |
| 332 } | 334 } |
| 333 | 335 |
| 334 void HistoryService::DeleteMatchingURLsForKeyword(KeywordID keyword_id, | 336 void HistoryService::DeleteMatchingURLsForKeyword(KeywordID keyword_id, |
| 335 const base::string16& term) { | 337 const base::string16& term) { |
| 336 DCHECK(thread_) << "History service being called after cleanup"; | 338 DCHECK(thread_) << "History service being called after cleanup"; |
| 337 DCHECK(thread_checker_.CalledOnValidThread()); | 339 DCHECK(thread_checker_.CalledOnValidThread()); |
| 338 ScheduleAndForget(PRIORITY_UI, &HistoryBackend::DeleteMatchingURLsForKeyword, | 340 ScheduleTask(PRIORITY_UI, |
| 339 keyword_id, term); | 341 base::Bind(&HistoryBackend::DeleteMatchingURLsForKeyword, |
| 342 history_backend_.get(), keyword_id, term)); | |
| 340 } | 343 } |
| 341 | 344 |
| 342 void HistoryService::URLsNoLongerBookmarked(const std::set<GURL>& urls) { | 345 void HistoryService::URLsNoLongerBookmarked(const std::set<GURL>& urls) { |
| 343 DCHECK(thread_) << "History service being called after cleanup"; | 346 DCHECK(thread_) << "History service being called after cleanup"; |
| 344 DCHECK(thread_checker_.CalledOnValidThread()); | 347 DCHECK(thread_checker_.CalledOnValidThread()); |
| 345 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::URLsNoLongerBookmarked, | 348 ScheduleTask(PRIORITY_NORMAL, |
| 346 urls); | 349 base::Bind(&HistoryBackend::URLsNoLongerBookmarked, |
| 350 history_backend_.get(), urls)); | |
| 347 } | 351 } |
| 348 | 352 |
| 349 void HistoryService::AddObserver(history::HistoryServiceObserver* observer) { | 353 void HistoryService::AddObserver(history::HistoryServiceObserver* observer) { |
| 350 DCHECK(thread_checker_.CalledOnValidThread()); | 354 DCHECK(thread_checker_.CalledOnValidThread()); |
| 351 observers_.AddObserver(observer); | 355 observers_.AddObserver(observer); |
| 352 } | 356 } |
| 353 | 357 |
| 354 void HistoryService::RemoveObserver(history::HistoryServiceObserver* observer) { | 358 void HistoryService::RemoveObserver(history::HistoryServiceObserver* observer) { |
| 355 DCHECK(thread_checker_.CalledOnValidThread()); | 359 DCHECK(thread_checker_.CalledOnValidThread()); |
| 356 observers_.RemoveObserver(observer); | 360 observers_.RemoveObserver(observer); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 375 } | 379 } |
| 376 | 380 |
| 377 void HistoryService::FlushForTest(const base::Closure& flushed) { | 381 void HistoryService::FlushForTest(const base::Closure& flushed) { |
| 378 thread_->message_loop_proxy()->PostTaskAndReply( | 382 thread_->message_loop_proxy()->PostTaskAndReply( |
| 379 FROM_HERE, base::Bind(&base::DoNothing), flushed); | 383 FROM_HERE, base::Bind(&base::DoNothing), flushed); |
| 380 } | 384 } |
| 381 | 385 |
| 382 void HistoryService::SetOnBackendDestroyTask(const base::Closure& task) { | 386 void HistoryService::SetOnBackendDestroyTask(const base::Closure& task) { |
| 383 DCHECK(thread_) << "History service being called after cleanup"; | 387 DCHECK(thread_) << "History service being called after cleanup"; |
| 384 DCHECK(thread_checker_.CalledOnValidThread()); | 388 DCHECK(thread_checker_.CalledOnValidThread()); |
| 385 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::SetOnBackendDestroyTask, | 389 ScheduleTask( |
| 386 base::MessageLoop::current(), task); | 390 PRIORITY_NORMAL, |
| 391 base::Bind(&HistoryBackend::SetOnBackendDestroyTask, | |
| 392 history_backend_.get(), base::MessageLoop::current(), task)); | |
| 387 } | 393 } |
| 388 | 394 |
| 389 void HistoryService::AddPage(const GURL& url, | 395 void HistoryService::AddPage(const GURL& url, |
| 390 Time time, | 396 Time time, |
| 391 history::ContextID context_id, | 397 history::ContextID context_id, |
| 392 int nav_entry_id, | 398 int nav_entry_id, |
| 393 const GURL& referrer, | 399 const GURL& referrer, |
| 394 const history::RedirectList& redirects, | 400 const history::RedirectList& redirects, |
| 395 ui::PageTransition transition, | 401 ui::PageTransition transition, |
| 396 history::VisitSource visit_source, | 402 history::VisitSource visit_source, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 433 DCHECK_EQ(add_page_args.url, | 439 DCHECK_EQ(add_page_args.url, |
| 434 add_page_args.redirects[add_page_args.redirects.size() - 1]); | 440 add_page_args.redirects[add_page_args.redirects.size() - 1]); |
| 435 | 441 |
| 436 // We need the !redirects.empty() condition above since size_t is unsigned | 442 // We need the !redirects.empty() condition above since size_t is unsigned |
| 437 // and will wrap around when we subtract one from a 0 size. | 443 // and will wrap around when we subtract one from a 0 size. |
| 438 for (size_t i = 0; i < add_page_args.redirects.size() - 1; i++) | 444 for (size_t i = 0; i < add_page_args.redirects.size() - 1; i++) |
| 439 visitedlink_master_->AddURL(add_page_args.redirects[i]); | 445 visitedlink_master_->AddURL(add_page_args.redirects[i]); |
| 440 } | 446 } |
| 441 } | 447 } |
| 442 | 448 |
| 443 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::AddPage, add_page_args); | 449 ScheduleTask(PRIORITY_NORMAL, |
| 450 base::Bind(&HistoryBackend::AddPage, history_backend_.get(), | |
| 451 add_page_args)); | |
| 444 } | 452 } |
| 445 | 453 |
| 446 void HistoryService::AddPageNoVisitForBookmark(const GURL& url, | 454 void HistoryService::AddPageNoVisitForBookmark(const GURL& url, |
| 447 const base::string16& title) { | 455 const base::string16& title) { |
| 448 DCHECK(thread_) << "History service being called after cleanup"; | 456 DCHECK(thread_) << "History service being called after cleanup"; |
| 449 DCHECK(thread_checker_.CalledOnValidThread()); | 457 DCHECK(thread_checker_.CalledOnValidThread()); |
| 450 if (!CanAddURL(url)) | 458 if (!CanAddURL(url)) |
| 451 return; | 459 return; |
| 452 | 460 |
| 453 ScheduleAndForget(PRIORITY_NORMAL, | 461 ScheduleTask(PRIORITY_NORMAL, |
| 454 &HistoryBackend::AddPageNoVisitForBookmark, url, title); | 462 base::Bind(&HistoryBackend::AddPageNoVisitForBookmark, |
| 463 history_backend_.get(), url, title)); | |
| 455 } | 464 } |
| 456 | 465 |
| 457 void HistoryService::SetPageTitle(const GURL& url, | 466 void HistoryService::SetPageTitle(const GURL& url, |
| 458 const base::string16& title) { | 467 const base::string16& title) { |
| 459 DCHECK(thread_) << "History service being called after cleanup"; | 468 DCHECK(thread_) << "History service being called after cleanup"; |
| 460 DCHECK(thread_checker_.CalledOnValidThread()); | 469 DCHECK(thread_checker_.CalledOnValidThread()); |
| 461 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::SetPageTitle, url, title); | 470 ScheduleTask(PRIORITY_NORMAL, base::Bind(&HistoryBackend::SetPageTitle, |
| 471 history_backend_.get(), url, title)); | |
| 462 } | 472 } |
| 463 | 473 |
| 464 void HistoryService::UpdateWithPageEndTime(history::ContextID context_id, | 474 void HistoryService::UpdateWithPageEndTime(history::ContextID context_id, |
| 465 int nav_entry_id, | 475 int nav_entry_id, |
| 466 const GURL& url, | 476 const GURL& url, |
| 467 Time end_ts) { | 477 Time end_ts) { |
| 468 DCHECK(thread_) << "History service being called after cleanup"; | 478 DCHECK(thread_) << "History service being called after cleanup"; |
| 469 DCHECK(thread_checker_.CalledOnValidThread()); | 479 DCHECK(thread_checker_.CalledOnValidThread()); |
| 470 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::UpdateWithPageEndTime, | 480 ScheduleTask( |
| 471 context_id, nav_entry_id, url, end_ts); | 481 PRIORITY_NORMAL, |
| 482 base::Bind(&HistoryBackend::UpdateWithPageEndTime, history_backend_.get(), | |
| 483 context_id, nav_entry_id, url, end_ts)); | |
| 472 } | 484 } |
| 473 | 485 |
| 474 void HistoryService::AddPageWithDetails(const GURL& url, | 486 void HistoryService::AddPageWithDetails(const GURL& url, |
| 475 const base::string16& title, | 487 const base::string16& title, |
| 476 int visit_count, | 488 int visit_count, |
| 477 int typed_count, | 489 int typed_count, |
| 478 Time last_visit, | 490 Time last_visit, |
| 479 bool hidden, | 491 bool hidden, |
| 480 history::VisitSource visit_source) { | 492 history::VisitSource visit_source) { |
| 481 DCHECK(thread_) << "History service being called after cleanup"; | 493 DCHECK(thread_) << "History service being called after cleanup"; |
| 482 DCHECK(thread_checker_.CalledOnValidThread()); | 494 DCHECK(thread_checker_.CalledOnValidThread()); |
| 483 // Filter out unwanted URLs. | 495 // Filter out unwanted URLs. |
| 484 if (!CanAddURL(url)) | 496 if (!CanAddURL(url)) |
| 485 return; | 497 return; |
| 486 | 498 |
| 487 // Add to the visited links system. | 499 // Add to the visited links system. |
| 488 if (visitedlink_master_) | 500 if (visitedlink_master_) |
| 489 visitedlink_master_->AddURL(url); | 501 visitedlink_master_->AddURL(url); |
| 490 | 502 |
| 491 history::URLRow row(url); | 503 history::URLRow row(url); |
| 492 row.set_title(title); | 504 row.set_title(title); |
| 493 row.set_visit_count(visit_count); | 505 row.set_visit_count(visit_count); |
| 494 row.set_typed_count(typed_count); | 506 row.set_typed_count(typed_count); |
| 495 row.set_last_visit(last_visit); | 507 row.set_last_visit(last_visit); |
| 496 row.set_hidden(hidden); | 508 row.set_hidden(hidden); |
| 497 | 509 |
| 498 history::URLRows rows; | 510 history::URLRows rows; |
| 499 rows.push_back(row); | 511 rows.push_back(row); |
| 500 | 512 |
| 501 ScheduleAndForget(PRIORITY_NORMAL, | 513 ScheduleTask(PRIORITY_NORMAL, |
| 502 &HistoryBackend::AddPagesWithDetails, rows, visit_source); | 514 base::Bind(&HistoryBackend::AddPagesWithDetails, |
| 515 history_backend_.get(), rows, visit_source)); | |
| 503 } | 516 } |
| 504 | 517 |
| 505 void HistoryService::AddPagesWithDetails(const history::URLRows& info, | 518 void HistoryService::AddPagesWithDetails(const history::URLRows& info, |
| 506 history::VisitSource visit_source) { | 519 history::VisitSource visit_source) { |
| 507 DCHECK(thread_) << "History service being called after cleanup"; | 520 DCHECK(thread_) << "History service being called after cleanup"; |
| 508 DCHECK(thread_checker_.CalledOnValidThread()); | 521 DCHECK(thread_checker_.CalledOnValidThread()); |
| 509 // Add to the visited links system. | 522 // Add to the visited links system. |
| 510 if (visitedlink_master_) { | 523 if (visitedlink_master_) { |
| 511 std::vector<GURL> urls; | 524 std::vector<GURL> urls; |
| 512 urls.reserve(info.size()); | 525 urls.reserve(info.size()); |
| 513 for (history::URLRows::const_iterator i = info.begin(); i != info.end(); | 526 for (history::URLRows::const_iterator i = info.begin(); i != info.end(); |
| 514 ++i) | 527 ++i) |
| 515 urls.push_back(i->url()); | 528 urls.push_back(i->url()); |
| 516 | 529 |
| 517 visitedlink_master_->AddURLs(urls); | 530 visitedlink_master_->AddURLs(urls); |
| 518 } | 531 } |
| 519 | 532 |
| 520 ScheduleAndForget(PRIORITY_NORMAL, | 533 ScheduleTask(PRIORITY_NORMAL, |
| 521 &HistoryBackend::AddPagesWithDetails, info, visit_source); | 534 base::Bind(&HistoryBackend::AddPagesWithDetails, |
| 535 history_backend_.get(), info, visit_source)); | |
| 522 } | 536 } |
| 523 | 537 |
| 524 base::CancelableTaskTracker::TaskId HistoryService::GetFavicons( | 538 base::CancelableTaskTracker::TaskId HistoryService::GetFavicons( |
| 525 const std::vector<GURL>& icon_urls, | 539 const std::vector<GURL>& icon_urls, |
| 526 int icon_types, | 540 int icon_types, |
| 527 const std::vector<int>& desired_sizes, | 541 const std::vector<int>& desired_sizes, |
| 528 const favicon_base::FaviconResultsCallback& callback, | 542 const favicon_base::FaviconResultsCallback& callback, |
| 529 base::CancelableTaskTracker* tracker) { | 543 base::CancelableTaskTracker* tracker) { |
| 530 DCHECK(thread_) << "History service being called after cleanup"; | 544 DCHECK(thread_) << "History service being called after cleanup"; |
| 531 DCHECK(thread_checker_.CalledOnValidThread()); | 545 DCHECK(thread_checker_.CalledOnValidThread()); |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 636 const GURL& page_url, | 650 const GURL& page_url, |
| 637 const GURL& icon_url, | 651 const GURL& icon_url, |
| 638 favicon_base::IconType icon_type, | 652 favicon_base::IconType icon_type, |
| 639 scoped_refptr<base::RefCountedMemory> bitmap_data, | 653 scoped_refptr<base::RefCountedMemory> bitmap_data, |
| 640 const gfx::Size& pixel_size) { | 654 const gfx::Size& pixel_size) { |
| 641 DCHECK(thread_) << "History service being called after cleanup"; | 655 DCHECK(thread_) << "History service being called after cleanup"; |
| 642 DCHECK(thread_checker_.CalledOnValidThread()); | 656 DCHECK(thread_checker_.CalledOnValidThread()); |
| 643 if (!CanAddURL(page_url)) | 657 if (!CanAddURL(page_url)) |
| 644 return; | 658 return; |
| 645 | 659 |
| 646 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::MergeFavicon, page_url, | 660 ScheduleTask( |
| 647 icon_url, icon_type, bitmap_data, pixel_size); | 661 PRIORITY_NORMAL, |
| 662 base::Bind(&HistoryBackend::MergeFavicon, history_backend_.get(), | |
| 663 page_url, icon_url, icon_type, bitmap_data, pixel_size)); | |
| 648 } | 664 } |
| 649 | 665 |
| 650 void HistoryService::SetFavicons( | 666 void HistoryService::SetFavicons( |
| 651 const GURL& page_url, | 667 const GURL& page_url, |
| 652 favicon_base::IconType icon_type, | 668 favicon_base::IconType icon_type, |
| 653 const GURL& icon_url, | 669 const GURL& icon_url, |
| 654 const std::vector<SkBitmap>& bitmaps) { | 670 const std::vector<SkBitmap>& bitmaps) { |
| 655 DCHECK(thread_) << "History service being called after cleanup"; | 671 DCHECK(thread_) << "History service being called after cleanup"; |
| 656 DCHECK(thread_checker_.CalledOnValidThread()); | 672 DCHECK(thread_checker_.CalledOnValidThread()); |
| 657 if (!CanAddURL(page_url)) | 673 if (!CanAddURL(page_url)) |
| 658 return; | 674 return; |
| 659 | 675 |
| 660 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::SetFavicons, page_url, | 676 ScheduleTask(PRIORITY_NORMAL, |
| 661 icon_type, icon_url, bitmaps); | 677 base::Bind(&HistoryBackend::SetFavicons, history_backend_.get(), |
| 678 page_url, icon_type, icon_url, bitmaps)); | |
| 662 } | 679 } |
| 663 | 680 |
| 664 void HistoryService::SetFaviconsOutOfDateForPage(const GURL& page_url) { | 681 void HistoryService::SetFaviconsOutOfDateForPage(const GURL& page_url) { |
| 665 DCHECK(thread_) << "History service being called after cleanup"; | 682 DCHECK(thread_) << "History service being called after cleanup"; |
| 666 DCHECK(thread_checker_.CalledOnValidThread()); | 683 DCHECK(thread_checker_.CalledOnValidThread()); |
| 667 ScheduleAndForget(PRIORITY_NORMAL, | 684 ScheduleTask(PRIORITY_NORMAL, |
| 668 &HistoryBackend::SetFaviconsOutOfDateForPage, page_url); | 685 base::Bind(&HistoryBackend::SetFaviconsOutOfDateForPage, |
| 686 history_backend_.get(), page_url)); | |
| 669 } | 687 } |
| 670 | 688 |
| 671 void HistoryService::CloneFavicons(const GURL& old_page_url, | 689 void HistoryService::CloneFavicons(const GURL& old_page_url, |
| 672 const GURL& new_page_url) { | 690 const GURL& new_page_url) { |
| 673 DCHECK(thread_) << "History service being called after cleanup"; | 691 DCHECK(thread_) << "History service being called after cleanup"; |
| 674 DCHECK(thread_checker_.CalledOnValidThread()); | 692 DCHECK(thread_checker_.CalledOnValidThread()); |
| 675 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::CloneFavicons, | 693 ScheduleTask(PRIORITY_NORMAL, |
| 676 old_page_url, new_page_url); | 694 base::Bind(&HistoryBackend::CloneFavicons, |
| 695 history_backend_.get(), old_page_url, new_page_url)); | |
| 677 } | 696 } |
| 678 | 697 |
| 679 void HistoryService::SetImportedFavicons( | 698 void HistoryService::SetImportedFavicons( |
| 680 const std::vector<ImportedFaviconUsage>& favicon_usage) { | 699 const std::vector<ImportedFaviconUsage>& favicon_usage) { |
| 681 DCHECK(thread_) << "History service being called after cleanup"; | 700 DCHECK(thread_) << "History service being called after cleanup"; |
| 682 DCHECK(thread_checker_.CalledOnValidThread()); | 701 DCHECK(thread_checker_.CalledOnValidThread()); |
| 683 ScheduleAndForget(PRIORITY_NORMAL, | 702 ScheduleTask(PRIORITY_NORMAL, |
| 684 &HistoryBackend::SetImportedFavicons, favicon_usage); | 703 base::Bind(&HistoryBackend::SetImportedFavicons, |
| 704 history_backend_.get(), favicon_usage)); | |
| 685 } | 705 } |
| 686 | 706 |
| 687 base::CancelableTaskTracker::TaskId HistoryService::QueryURL( | 707 base::CancelableTaskTracker::TaskId HistoryService::QueryURL( |
| 688 const GURL& url, | 708 const GURL& url, |
| 689 bool want_visits, | 709 bool want_visits, |
| 690 const QueryURLCallback& callback, | 710 const QueryURLCallback& callback, |
| 691 base::CancelableTaskTracker* tracker) { | 711 base::CancelableTaskTracker* tracker) { |
| 692 DCHECK(thread_) << "History service being called after cleanup"; | 712 DCHECK(thread_) << "History service being called after cleanup"; |
| 693 DCHECK(thread_checker_.CalledOnValidThread()); | 713 DCHECK(thread_checker_.CalledOnValidThread()); |
| 694 history::QueryURLResult* query_url_result = new history::QueryURLResult(); | 714 history::QueryURLResult* query_url_result = new history::QueryURLResult(); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 749 FROM_HERE, | 769 FROM_HERE, |
| 750 base::Bind(&HistoryBackend::QueryDownloads, history_backend_.get(), rows), | 770 base::Bind(&HistoryBackend::QueryDownloads, history_backend_.get(), rows), |
| 751 base::Bind(callback, base::Passed(&scoped_rows))); | 771 base::Bind(callback, base::Passed(&scoped_rows))); |
| 752 } | 772 } |
| 753 | 773 |
| 754 // Handle updates for a particular download. This is a 'fire and forget' | 774 // Handle updates for a particular download. This is a 'fire and forget' |
| 755 // operation, so we don't need to be called back. | 775 // operation, so we don't need to be called back. |
| 756 void HistoryService::UpdateDownload(const history::DownloadRow& data) { | 776 void HistoryService::UpdateDownload(const history::DownloadRow& data) { |
| 757 DCHECK(thread_) << "History service being called after cleanup"; | 777 DCHECK(thread_) << "History service being called after cleanup"; |
| 758 DCHECK(thread_checker_.CalledOnValidThread()); | 778 DCHECK(thread_checker_.CalledOnValidThread()); |
| 759 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::UpdateDownload, data); | 779 ScheduleTask(PRIORITY_NORMAL, base::Bind(&HistoryBackend::UpdateDownload, |
| 780 history_backend_.get(), data)); | |
| 760 } | 781 } |
| 761 | 782 |
| 762 void HistoryService::RemoveDownloads(const std::set<uint32>& ids) { | 783 void HistoryService::RemoveDownloads(const std::set<uint32>& ids) { |
| 763 DCHECK(thread_) << "History service being called after cleanup"; | 784 DCHECK(thread_) << "History service being called after cleanup"; |
| 764 DCHECK(thread_checker_.CalledOnValidThread()); | 785 DCHECK(thread_checker_.CalledOnValidThread()); |
| 765 ScheduleAndForget(PRIORITY_NORMAL, | 786 ScheduleTask(PRIORITY_NORMAL, base::Bind(&HistoryBackend::RemoveDownloads, |
| 766 &HistoryBackend::RemoveDownloads, ids); | 787 history_backend_.get(), ids)); |
| 767 } | 788 } |
| 768 | 789 |
| 769 base::CancelableTaskTracker::TaskId HistoryService::QueryHistory( | 790 base::CancelableTaskTracker::TaskId HistoryService::QueryHistory( |
| 770 const base::string16& text_query, | 791 const base::string16& text_query, |
| 771 const history::QueryOptions& options, | 792 const history::QueryOptions& options, |
| 772 const QueryHistoryCallback& callback, | 793 const QueryHistoryCallback& callback, |
| 773 base::CancelableTaskTracker* tracker) { | 794 base::CancelableTaskTracker* tracker) { |
| 774 DCHECK(thread_) << "History service being called after cleanup"; | 795 DCHECK(thread_) << "History service being called after cleanup"; |
| 775 DCHECK(thread_checker_.CalledOnValidThread()); | 796 DCHECK(thread_checker_.CalledOnValidThread()); |
| 776 history::QueryResults* query_results = new history::QueryResults(); | 797 history::QueryResults* query_results = new history::QueryResults(); |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 934 // during shutdown, but this shouldn't happen. | 955 // during shutdown, but this shouldn't happen. |
| 935 base::Thread* thread = thread_; | 956 base::Thread* thread = thread_; |
| 936 thread_ = NULL; | 957 thread_ = NULL; |
| 937 delete thread; | 958 delete thread; |
| 938 } | 959 } |
| 939 | 960 |
| 940 void HistoryService::RebuildTable( | 961 void HistoryService::RebuildTable( |
| 941 const scoped_refptr<URLEnumerator>& enumerator) { | 962 const scoped_refptr<URLEnumerator>& enumerator) { |
| 942 DCHECK(thread_) << "History service being called after cleanup"; | 963 DCHECK(thread_) << "History service being called after cleanup"; |
| 943 DCHECK(thread_checker_.CalledOnValidThread()); | 964 DCHECK(thread_checker_.CalledOnValidThread()); |
| 944 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::IterateURLs, enumerator); | 965 ScheduleTask(PRIORITY_NORMAL, base::Bind(&HistoryBackend::IterateURLs, |
| 966 history_backend_.get(), enumerator)); | |
| 945 } | 967 } |
| 946 | 968 |
| 947 bool HistoryService::Init( | 969 bool HistoryService::Init( |
| 948 bool no_db, | 970 bool no_db, |
| 949 const history::HistoryDatabaseParams& history_database_params) { | 971 const history::HistoryDatabaseParams& history_database_params) { |
| 950 DCHECK(thread_) << "History service being called after cleanup"; | 972 DCHECK(thread_) << "History service being called after cleanup"; |
| 951 DCHECK(thread_checker_.CalledOnValidThread()); | 973 DCHECK(thread_checker_.CalledOnValidThread()); |
| 952 base::Thread::Options options; | 974 base::Thread::Options options; |
| 953 options.timer_slack = base::TIMER_SLACK_MAXIMUM; | 975 options.timer_slack = base::TIMER_SLACK_MAXIMUM; |
| 954 if (!thread_->StartWithOptions(options)) { | 976 if (!thread_->StartWithOptions(options)) { |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 974 history_client_)); | 996 history_client_)); |
| 975 history_backend_.swap(backend); | 997 history_backend_.swap(backend); |
| 976 | 998 |
| 977 // There may not be a profile when unit testing. | 999 // There may not be a profile when unit testing. |
| 978 std::string languages; | 1000 std::string languages; |
| 979 if (profile_) { | 1001 if (profile_) { |
| 980 PrefService* prefs = profile_->GetPrefs(); | 1002 PrefService* prefs = profile_->GetPrefs(); |
| 981 languages = prefs->GetString(prefs::kAcceptLanguages); | 1003 languages = prefs->GetString(prefs::kAcceptLanguages); |
| 982 } | 1004 } |
| 983 | 1005 |
| 984 ScheduleAndForget(PRIORITY_UI, &HistoryBackend::Init, languages, no_db_, | 1006 ScheduleTask(PRIORITY_UI, |
| 985 history_database_params); | 1007 base::Bind(&HistoryBackend::Init, history_backend_.get(), |
| 1008 languages, no_db_, history_database_params)); | |
| 986 | 1009 |
| 987 if (visitedlink_master_) { | 1010 if (visitedlink_master_) { |
| 988 bool result = visitedlink_master_->Init(); | 1011 bool result = visitedlink_master_->Init(); |
| 989 DCHECK(result); | 1012 DCHECK(result); |
| 990 } | 1013 } |
| 991 | 1014 |
| 992 return true; | 1015 return true; |
| 993 } | 1016 } |
| 994 | 1017 |
| 995 void HistoryService::ScheduleAutocomplete(const base::Callback< | 1018 void HistoryService::ScheduleAutocomplete(const base::Callback< |
| 996 void(history::HistoryBackend*, history::URLDatabase*)>& callback) { | 1019 void(history::HistoryBackend*, history::URLDatabase*)>& callback) { |
| 997 DCHECK(thread_checker_.CalledOnValidThread()); | 1020 DCHECK(thread_checker_.CalledOnValidThread()); |
| 998 ScheduleAndForget( | 1021 ScheduleTask(PRIORITY_UI, base::Bind(&HistoryBackend::ScheduleAutocomplete, |
| 999 PRIORITY_UI, &HistoryBackend::ScheduleAutocomplete, callback); | 1022 history_backend_.get(), callback)); |
| 1000 } | 1023 } |
| 1001 | 1024 |
| 1002 void HistoryService::ScheduleTask(SchedulePriority priority, | 1025 void HistoryService::ScheduleTask(SchedulePriority priority, |
| 1003 const base::Closure& task) { | 1026 const base::Closure& task) { |
| 1027 DCHECK(thread_) << "History service being called after cleanup"; | |
|
droger
2015/01/30 16:40:37
Not sure if this CHECK should be changed in DCHECK
sdefresne
2015/01/30 21:17:01
Changed back to CHECK, thank you.
| |
| 1004 DCHECK(thread_checker_.CalledOnValidThread()); | 1028 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1005 CHECK(thread_); | 1029 DCHECK(thread_->message_loop()); |
| 1006 CHECK(thread_->message_loop()); | |
| 1007 // TODO(brettw): Do prioritization. | 1030 // TODO(brettw): Do prioritization. |
| 1008 thread_->message_loop()->PostTask(FROM_HERE, task); | 1031 thread_->message_loop()->PostTask(FROM_HERE, task); |
| 1009 } | 1032 } |
| 1010 | 1033 |
| 1011 // static | 1034 // static |
| 1012 bool HistoryService::CanAddURL(const GURL& url) { | 1035 bool HistoryService::CanAddURL(const GURL& url) { |
| 1013 if (!url.is_valid()) | 1036 if (!url.is_valid()) |
| 1014 return false; | 1037 return false; |
| 1015 | 1038 |
| 1016 // TODO: We should allow kChromeUIScheme URLs if they have been explicitly | 1039 // TODO: We should allow kChromeUIScheme URLs if they have been explicitly |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1091 void HistoryService::NotifyProfileError(sql::InitStatus init_status) { | 1114 void HistoryService::NotifyProfileError(sql::InitStatus init_status) { |
| 1092 DCHECK(thread_checker_.CalledOnValidThread()); | 1115 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1093 if (history_client_) | 1116 if (history_client_) |
| 1094 history_client_->NotifyProfileError(init_status); | 1117 history_client_->NotifyProfileError(init_status); |
| 1095 } | 1118 } |
| 1096 | 1119 |
| 1097 void HistoryService::DeleteURL(const GURL& url) { | 1120 void HistoryService::DeleteURL(const GURL& url) { |
| 1098 DCHECK(thread_) << "History service being called after cleanup"; | 1121 DCHECK(thread_) << "History service being called after cleanup"; |
| 1099 DCHECK(thread_checker_.CalledOnValidThread()); | 1122 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1100 // We will update the visited links when we observe the delete notifications. | 1123 // We will update the visited links when we observe the delete notifications. |
| 1101 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::DeleteURL, url); | 1124 ScheduleTask(PRIORITY_NORMAL, base::Bind(&HistoryBackend::DeleteURL, |
| 1125 history_backend_.get(), url)); | |
| 1102 } | 1126 } |
| 1103 | 1127 |
| 1104 void HistoryService::DeleteURLsForTest(const std::vector<GURL>& urls) { | 1128 void HistoryService::DeleteURLsForTest(const std::vector<GURL>& urls) { |
| 1105 DCHECK(thread_) << "History service being called after cleanup"; | 1129 DCHECK(thread_) << "History service being called after cleanup"; |
| 1106 DCHECK(thread_checker_.CalledOnValidThread()); | 1130 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1107 // We will update the visited links when we observe the delete | 1131 // We will update the visited links when we observe the delete |
| 1108 // notifications. | 1132 // notifications. |
| 1109 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::DeleteURLs, urls); | 1133 ScheduleTask(PRIORITY_NORMAL, base::Bind(&HistoryBackend::DeleteURLs, |
| 1134 history_backend_.get(), urls)); | |
| 1110 } | 1135 } |
| 1111 | 1136 |
| 1112 void HistoryService::ExpireHistoryBetween( | 1137 void HistoryService::ExpireHistoryBetween( |
| 1113 const std::set<GURL>& restrict_urls, | 1138 const std::set<GURL>& restrict_urls, |
| 1114 Time begin_time, | 1139 Time begin_time, |
| 1115 Time end_time, | 1140 Time end_time, |
| 1116 const base::Closure& callback, | 1141 const base::Closure& callback, |
| 1117 base::CancelableTaskTracker* tracker) { | 1142 base::CancelableTaskTracker* tracker) { |
| 1118 DCHECK(thread_) << "History service being called after cleanup"; | 1143 DCHECK(thread_) << "History service being called after cleanup"; |
| 1119 DCHECK(thread_checker_.CalledOnValidThread()); | 1144 DCHECK(thread_checker_.CalledOnValidThread()); |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1268 const HistoryService::OnFaviconChangedCallback& callback) { | 1293 const HistoryService::OnFaviconChangedCallback& callback) { |
| 1269 DCHECK(thread_checker_.CalledOnValidThread()); | 1294 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1270 return favicon_changed_callback_list_.Add(callback); | 1295 return favicon_changed_callback_list_.Add(callback); |
| 1271 } | 1296 } |
| 1272 | 1297 |
| 1273 void HistoryService::NotifyFaviconChanged( | 1298 void HistoryService::NotifyFaviconChanged( |
| 1274 const std::set<GURL>& changed_favicons) { | 1299 const std::set<GURL>& changed_favicons) { |
| 1275 DCHECK(thread_checker_.CalledOnValidThread()); | 1300 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1276 favicon_changed_callback_list_.Notify(changed_favicons); | 1301 favicon_changed_callback_list_.Notify(changed_favicons); |
| 1277 } | 1302 } |
| OLD | NEW |