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

Unified Diff: components/sync_sessions/revisit/typed_url_page_revisit_task.cc

Issue 1399053004: [Sync] Adding revisit logic for typed URLs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated for Stan's comments. Created 5 years, 2 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/sync_sessions/revisit/typed_url_page_revisit_task.cc
diff --git a/components/sync_sessions/revisit/typed_url_page_revisit_task.cc b/components/sync_sessions/revisit/typed_url_page_revisit_task.cc
new file mode 100644
index 0000000000000000000000000000000000000000..240cdc3c45fa8b95ce9facc4993bf7bb9a158545
--- /dev/null
+++ b/components/sync_sessions/revisit/typed_url_page_revisit_task.cc
@@ -0,0 +1,76 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/sync_sessions/revisit/typed_url_page_revisit_task.h"
+
+#include "base/metrics/histogram_macros.h"
+#include "base/time/time.h"
+#include "components/history/core/browser/history_backend.h"
+#include "components/history/core/browser/history_service.h"
+#include "components/history/core/browser/url_row.h"
+
+namespace sync_sessions {
+
+TypedUrlPageRevisitTask::TypedUrlPageRevisitTask(
+ const GURL& url,
+ const PageVisitObserver::TransitionType transition)
+ : url_(url), transition_(transition) {}
+
+TypedUrlPageRevisitTask::~TypedUrlPageRevisitTask() {}
+
+bool TypedUrlPageRevisitTask::FillVisitsAndSources(
+ history::HistoryBackend* backend,
+ history::VisitVector* visits,
+ history::VisitSourceMap* sources) {
+ history::URLRow row;
+ return backend->GetURL(url_, &row) &&
+ backend->GetVisitsForURL(row.id(), visits) &&
+ backend->GetVisitsSource(*visits, sources);
+}
+
+bool TypedUrlPageRevisitTask::FindLastSyncedMatchAge(
+ history::HistoryBackend* backend,
+ base::Time* lastVisitTime) {
+ history::VisitVector visits;
+ history::VisitSourceMap sources;
+ if (FillVisitsAndSources(backend, &visits, &sources)) {
+ // The visits are in chronological order. We only care about the most
+ // recent remote visit, so iterate backwards.
+ for (auto row_itr = visits.rbegin(); row_itr != visits.rend(); ++row_itr) {
+ auto map_itr = sources.find(row_itr->visit_id);
+ if (map_itr != sources.end() &&
+ map_itr->second == history::SOURCE_SYNCED) {
+ *lastVisitTime = row_itr->visit_time;
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+bool TypedUrlPageRevisitTask::RunOnDBThread(history::HistoryBackend* backend,
+ history::HistoryDatabase* db) {
+ base::TimeTicks start(base::TimeTicks::Now());
+ base::Time lastVisitTime;
+ if (FindLastSyncedMatchAge(backend, &lastVisitTime)) {
+ REVISIT_HISTOGRAM_AGE("Sync.PageRevisitTypedUrlMatchAge", lastVisitTime);
+ UMA_HISTOGRAM_ENUMERATION("Sync.PageRevisitTypedUrlMatchTransition",
+ transition_,
+ PageVisitObserver::kTransitionTypeLast);
+ } else {
+ UMA_HISTOGRAM_ENUMERATION("Sync.PageRevisitTypedUrlMissTransition",
+ transition_,
+ PageVisitObserver::kTransitionTypeLast);
+ }
+
+ base::TimeDelta duration(base::TimeTicks::Now() - start);
+ UMA_HISTOGRAM_TIMES("Sync.PageRevisitTypedUrlDuration", duration);
+
+ // This indicates success and retring is not needed.
+ return true;
+}
+
+void TypedUrlPageRevisitTask::DoneRunOnMainThread() {}
+
+} // namespace sync_sessions

Powered by Google App Engine
This is Rietveld 408576698