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

Unified Diff: components/history/core/browser/history_backend.cc

Issue 1143183002: Proof of concept implementation of context based history filtering. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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: components/history/core/browser/history_backend.cc
diff --git a/components/history/core/browser/history_backend.cc b/components/history/core/browser/history_backend.cc
index faf00c6db8293356065862bd9fdc5e72a72ba4c8..2194c27d3cadc06573fd05ce6d0f716588563335 100644
--- a/components/history/core/browser/history_backend.cc
+++ b/components/history/core/browser/history_backend.cc
@@ -891,6 +891,58 @@ void HistoryBackend::SetPageTitle(const GURL& url,
}
}
+void HistoryBackend::SetPageHistoryContext(const GURL& url,
+ HistoryContext context) {
+ if (!db_)
+ return;
+
+ // Search for recent redirects which should get the same title. We make a
+ // dummy list containing the exact URL visited if there are no redirects so
+ // the processing below can be the same.
+ RedirectList dummy_list;
+ RedirectList* redirects;
+ RedirectCache::iterator iter = recent_redirects_.Get(url);
+ if (iter != recent_redirects_.end()) {
+ redirects = &iter->second;
+
+ // This redirect chain should have the destination URL as the last item.
+ DCHECK(!redirects->empty());
+ DCHECK(redirects->back() == url);
+ } else {
+ // No redirect chain stored, make up one containing the URL we want so we
+ // can use the same logic below.
+ dummy_list.push_back(url);
+ redirects = &dummy_list;
+ }
+
+ URLRows changed_urls;
+ for (size_t i = 0; i < redirects->size(); i++) {
+ URLRow row;
+ URLID row_id = db_->GetRowForURL(redirects->at(i), &row);
+ VisitID cur_visit = db_->GetMostRecentVisitForURL(row_id, nullptr);
+ if (row_id && row.context() != context) {
+ row.set_context(context);
+
+ VisitRow visit_row;
+ if (db_->GetRowForVisit(cur_visit, &visit_row)) {
+ visit_row.context = context;
+ db_->UpdateVisitRow(visit_row);
+ printf("\n1 HistoryBackend::SetPageHistoryContext %d\n", static_cast<int>(context));
+ }
+ db_->UpdateURLRow(row_id, row);
+ printf("\n2 HistoryBackend::SetPageHistoryContext %d\n", static_cast<int>(context));
+ changed_urls.push_back(row);
+ }
+ }
+
+ // Broadcast notifications for any URLs that have changed. This will
+ // update the in-memory database and the InMemoryURLIndex.
+ if (!changed_urls.empty()) {
+ NotifyURLsModified(changed_urls);
+ ScheduleCommit();
+ }
+}
+
void HistoryBackend::AddPageNoVisitForBookmark(const GURL& url,
const base::string16& title) {
if (!db_)
« no previous file with comments | « components/history/core/browser/history_backend.h ('k') | components/history/core/browser/history_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698