Index: chrome/browser/history/history.cc |
diff --git a/chrome/browser/history/history.cc b/chrome/browser/history/history.cc |
index 50450bcdc96b210b394406eb245ac37d1cf83b8f..ae0f69a3e98c8c99b1019d1bfe3f4c2fac062fe7 100644 |
--- a/chrome/browser/history/history.cc |
+++ b/chrome/browser/history/history.cc |
@@ -111,29 +111,6 @@ void RunWithFaviconResults( |
callback.Run(results->bitmap_results, results->size_map); |
} |
-// Extract history::URLRows into GURLs for VisitedLinkMaster. |
-class URLIteratorFromURLRows : public VisitedLinkMaster::URLIterator { |
- public: |
- explicit URLIteratorFromURLRows(const history::URLRows& url_rows) |
- : itr_(url_rows.begin()), |
- end_(url_rows.end()) { |
- } |
- |
- virtual const GURL& NextURL() OVERRIDE { |
- return (itr_++)->url(); |
- } |
- |
- virtual bool HasNextURL() const OVERRIDE { |
- return itr_ != end_; |
- } |
- |
- private: |
- history::URLRows::const_iterator itr_; |
- history::URLRows::const_iterator end_; |
- |
- DISALLOW_COPY_AND_ASSIGN(URLIteratorFromURLRows); |
-}; |
- |
} // namespace |
// Sends messages from the backend to us on the main thread. This must be a |
@@ -231,8 +208,6 @@ HistoryService::HistoryService(Profile* profile) |
: weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
thread_(new base::Thread(kHistoryThreadName)), |
profile_(profile), |
- visitedlink_master_(new VisitedLinkMaster( |
- profile, ALLOW_THIS_IN_INITIALIZER_LIST(this))), |
backend_loaded_(false), |
current_backend_id_(-1), |
bookmark_service_(NULL), |
@@ -497,8 +472,10 @@ void HistoryService::AddPage(const history::HistoryAddPageArgs& add_page_args) { |
return; |
// Add link & all redirects to visited link list. |
- if (visitedlink_master_) { |
- visitedlink_master_->AddURL(add_page_args.url); |
+ VisitedLinkMaster* visited_links; |
+ if (profile_ && |
+ (visited_links = VisitedLinkMaster::FromProfile(profile_))) { |
+ visited_links->AddURL(add_page_args.url); |
if (!add_page_args.redirects.empty()) { |
// We should not be asked to add a page in the middle of a redirect chain. |
@@ -508,7 +485,7 @@ void HistoryService::AddPage(const history::HistoryAddPageArgs& add_page_args) { |
// We need the !redirects.empty() condition above since size_t is unsigned |
// and will wrap around when we subtract one from a 0 size. |
for (size_t i = 0; i < add_page_args.redirects.size() - 1; i++) |
- visitedlink_master_->AddURL(add_page_args.redirects[i]); |
+ visited_links->AddURL(add_page_args.redirects[i]); |
} |
} |
@@ -553,8 +530,11 @@ void HistoryService::AddPageWithDetails(const GURL& url, |
return; |
// Add to the visited links system. |
- if (visitedlink_master_) |
- visitedlink_master_->AddURL(url); |
+ VisitedLinkMaster* visited_links; |
+ if (profile_ && |
+ (visited_links = VisitedLinkMaster::FromProfile(profile_))) { |
+ visited_links->AddURL(url); |
+ } |
history::URLRow row(url); |
row.set_title(title); |
@@ -574,14 +554,16 @@ void HistoryService::AddPagesWithDetails(const history::URLRows& info, |
history::VisitSource visit_source) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
// Add to the visited links system. |
- if (visitedlink_master_) { |
+ VisitedLinkMaster* visited_links; |
+ if (profile_ && |
+ (visited_links = VisitedLinkMaster::FromProfile(profile_))) { |
std::vector<GURL> urls; |
urls.reserve(info.size()); |
for (history::URLRows::const_iterator i = info.begin(); i != info.end(); |
++i) |
urls.push_back(i->url()); |
- visitedlink_master_->AddURLs(urls); |
+ visited_links->AddURLs(urls); |
} |
ScheduleAndForget(PRIORITY_NORMAL, |
@@ -738,6 +720,11 @@ void HistoryService::SetImportedFavicons( |
&HistoryBackend::SetImportedFavicons, favicon_usage); |
} |
+void HistoryService::IterateURLs(URLEnumerator* enumerator) { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::IterateURLs, enumerator); |
+} |
+ |
HistoryService::Handle HistoryService::QueryURL( |
const GURL& url, |
bool want_visits, |
@@ -915,16 +902,17 @@ void HistoryService::Observe(int type, |
// delete notifications are by time. We would also like to be more |
// respectful of privacy and never tell the user something is gone when it |
// isn't. Therefore, we update the delete URLs after the fact. |
- if (visitedlink_master_) { |
- content::Details<history::URLsDeletedDetails> deleted_details(details); |
- |
- if (deleted_details->all_history) { |
- visitedlink_master_->DeleteAllURLs(); |
- } else { |
- URLIteratorFromURLRows iterator(deleted_details->rows); |
- visitedlink_master_->DeleteURLs(&iterator); |
- } |
- } |
+ if (!profile_) |
+ return; // No profile, probably unit testing. |
+ content::Details<history::URLsDeletedDetails> deleted_details(details); |
+ VisitedLinkMaster* visited_links = |
+ VisitedLinkMaster::FromProfile(profile_); |
+ if (!visited_links) |
+ return; // Nobody to update. |
+ if (deleted_details->all_history) |
+ visited_links->DeleteAllURLs(); |
+ else // Delete individual ones. |
+ visited_links->DeleteURLs(deleted_details->rows); |
break; |
} |
@@ -938,22 +926,6 @@ void HistoryService::Observe(int type, |
} |
} |
-bool HistoryService::AreEquivalentContexts(content::BrowserContext* context1, |
- content::BrowserContext* context2) { |
- DCHECK(context1); |
- DCHECK(context2); |
- |
- Profile* profile1 = Profile::FromBrowserContext(context1); |
- Profile* profile2 = Profile::FromBrowserContext(context2); |
- |
- return profile1->IsSameProfile(profile2); |
-} |
- |
-void HistoryService::RebuildTable(URLEnumerator* enumerator) { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::IterateURLs, enumerator); |
-} |
- |
bool HistoryService::Init(const FilePath& history_dir, |
BookmarkService* bookmark_service, |
bool no_db) { |
@@ -977,12 +949,6 @@ bool HistoryService::Init(const FilePath& history_dir, |
// Create the history backend. |
LoadBackendIfNecessary(); |
- |
- if (visitedlink_master_) { |
- bool result = visitedlink_master_->Init(); |
- DCHECK(result); |
- } |
- |
return true; |
} |