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

Unified Diff: chrome/browser/custom_home_pages_table_model.cc

Issue 314293005: Change HistoryService::QueryURL to use CancelableTaskTracker (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and add comment for scoped_ptr usage Created 6 years, 6 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/custom_home_pages_table_model.cc
diff --git a/chrome/browser/custom_home_pages_table_model.cc b/chrome/browser/custom_home_pages_table_model.cc
index 95b25af4409ce3f2d38b600b348fc0ea79e7c05c..ba5ad19336da8a373fc0115e7c238d40885b4eb3 100644
--- a/chrome/browser/custom_home_pages_table_model.cc
+++ b/chrome/browser/custom_home_pages_table_model.cc
@@ -9,6 +9,7 @@
#include "base/i18n/rtl.h"
#include "base/prefs/pref_service.h"
#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/history/history_service.h"
#include "chrome/browser/history/history_service_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
@@ -55,7 +56,7 @@ bool ShouldAddPage(const GURL& url) {
} // namespace
struct CustomHomePagesTableModel::Entry {
- Entry() : title_handle(0) {}
+ Entry() : task_id(base::CancelableTaskTracker::kBadTaskId) {}
// URL of the page.
GURL url;
@@ -63,8 +64,9 @@ struct CustomHomePagesTableModel::Entry {
// Page title. If this is empty, we'll display the URL as the entry.
base::string16 title;
- // If non-zero, indicates we're loading the title for the page.
- HistoryService::Handle title_handle;
+ // If not |base::CancelableTaskTracker::kBadTaskId|, indicates we're loading
+ // the title for the page.
+ base::CancelableTaskTracker::TaskId task_id;
};
CustomHomePagesTableModel::CustomHomePagesTableModel(Profile* profile)
@@ -159,11 +161,9 @@ void CustomHomePagesTableModel::Remove(int index) {
Entry* entry = &(entries_[index]);
// Cancel any pending load requests now so we don't deref a bogus pointer when
// we get the loaded notification.
- if (entry->title_handle) {
- HistoryService* history_service = HistoryServiceFactory::GetForProfile(
- profile_, Profile::EXPLICIT_ACCESS);
- if (history_service)
- history_service->CancelRequest(entry->title_handle);
+ if (entry->task_id != base::CancelableTaskTracker::kBadTaskId) {
+ task_tracker_.TryCancel(entry->task_id);
+ entry->task_id = base::CancelableTaskTracker::kBadTaskId;
}
entries_.erase(entries_.begin() + static_cast<size_t>(index));
if (observer_)
@@ -224,46 +224,41 @@ void CustomHomePagesTableModel::LoadTitle(Entry* entry) {
HistoryService* history_service = HistoryServiceFactory::GetForProfile(
profile_, Profile::EXPLICIT_ACCESS);
if (history_service) {
- entry->title_handle = history_service->QueryURL(entry->url, false,
- &history_query_consumer_,
+ entry->task_id = history_service->QueryURL(
+ entry->url,
+ false,
base::Bind(&CustomHomePagesTableModel::OnGotTitle,
- base::Unretained(this)));
+ base::Unretained(this),
+ entry->url),
+ &task_tracker_);
}
}
-void CustomHomePagesTableModel::OnGotTitle(HistoryService::Handle handle,
+void CustomHomePagesTableModel::OnGotTitle(const GURL& entry_url,
bool found_url,
- const history::URLRow* row,
- history::VisitVector* visits) {
- int entry_index;
- Entry* entry =
- GetEntryByLoadHandle(&Entry::title_handle, handle, &entry_index);
+ const history::URLRow& row,
+ const history::VisitVector& visits) {
+ int entry_index = 0;
+ Entry* entry = NULL;
+ for (size_t i = 0; i < entries_.size(); ++i) {
+ if (entries_[i].url == entry_url) {
+ entry = &entries_[i];
+ entry_index = i;
+ break;
+ }
+ }
if (!entry) {
// The URLs changed before we were called back.
return;
}
- entry->title_handle = 0;
- if (found_url && !row->title().empty()) {
- entry->title = row->title();
+ entry->task_id = base::CancelableTaskTracker::kBadTaskId;
+ if (found_url && !row.title().empty()) {
+ entry->title = row.title();
if (observer_)
observer_->OnItemsChanged(static_cast<int>(entry_index), 1);
Scott Hess - ex-Googler 2014/06/12 18:04:35 This case seems wrong ... but assigning a size_t t
}
}
-CustomHomePagesTableModel::Entry*
- CustomHomePagesTableModel::GetEntryByLoadHandle(
- CancelableRequestProvider::Handle Entry::* member,
- CancelableRequestProvider::Handle handle,
- int* index) {
- for (size_t i = 0; i < entries_.size(); ++i) {
- if (entries_[i].*member == handle) {
- *index = static_cast<int>(i);
- return &entries_[i];
- }
- }
- return NULL;
-}
-
base::string16 CustomHomePagesTableModel::FormattedURL(int row) const {
std::string languages =
profile_->GetPrefs()->GetString(prefs::kAcceptLanguages);

Powered by Google App Engine
This is Rietveld 408576698