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

Unified Diff: chrome/browser/sync/glue/typed_url_change_processor.cc

Issue 631253002: Refactor sending NOTIFICATION_HISTORY_URL_VISITED (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix tests on Android Created 6 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: chrome/browser/sync/glue/typed_url_change_processor.cc
diff --git a/chrome/browser/sync/glue/typed_url_change_processor.cc b/chrome/browser/sync/glue/typed_url_change_processor.cc
index 90804d41f8dfd5ff2c141b5384bd84519594ccb2..51539c91586026de8c63016611ea3c485e3b110a 100644
--- a/chrome/browser/sync/glue/typed_url_change_processor.cc
+++ b/chrome/browser/sync/glue/typed_url_change_processor.cc
@@ -58,6 +58,8 @@ TypedUrlChangeProcessor::TypedUrlChangeProcessor(
TypedUrlChangeProcessor::~TypedUrlChangeProcessor() {
DCHECK(backend_loop_ == base::MessageLoop::current());
+ DCHECK(history_backend_);
+ history_backend_->RemoveObserver(this);
}
void TypedUrlChangeProcessor::Observe(
@@ -77,10 +79,27 @@ void TypedUrlChangeProcessor::Observe(
} else if (type == chrome::NOTIFICATION_HISTORY_URLS_DELETED) {
HandleURLsDeleted(
content::Details<history::URLsDeletedDetails>(details).ptr());
- } else {
- DCHECK_EQ(chrome::NOTIFICATION_HISTORY_URL_VISITED, type);
- HandleURLsVisited(
- content::Details<history::URLVisitedDetails>(details).ptr());
+ }
+ UMA_HISTOGRAM_PERCENTAGE("Sync.TypedUrlChangeProcessorErrors",
+ model_associator_->GetErrorPercentage());
+}
+
+void TypedUrlChangeProcessor::OnURLVisited(
+ history::HistoryBackend* history_backend,
+ ui::PageTransition transition,
+ const history::URLRow& row,
+ const history::RedirectList& redirects,
+ base::Time visit_time) {
+ DCHECK(backend_loop_ == base::MessageLoop::current());
+
+ base::AutoLock al(disconnect_lock_);
+ if (disconnected_)
+ return;
+
+ DVLOG(1) << "Observed typed_url change.";
+ if (ShouldSyncVisit(row.typed_count(), transition)) {
+ syncer::WriteTransaction trans(FROM_HERE, share_handle());
+ CreateOrUpdateSyncNode(row, &trans);
}
UMA_HISTOGRAM_PERCENTAGE("Sync.TypedUrlChangeProcessorErrors",
model_associator_->GetErrorPercentage());
@@ -195,21 +214,8 @@ void TypedUrlChangeProcessor::HandleURLsDeleted(
}
}
-void TypedUrlChangeProcessor::HandleURLsVisited(
- history::URLVisitedDetails* details) {
- if (!ShouldSyncVisit(details))
- return;
-
- syncer::WriteTransaction trans(FROM_HERE, share_handle());
- CreateOrUpdateSyncNode(details->row, &trans);
-}
-
-bool TypedUrlChangeProcessor::ShouldSyncVisit(
- history::URLVisitedDetails* details) {
- int typed_count = details->row.typed_count();
- ui::PageTransition transition =
- ui::PageTransitionStripQualifier(details->transition);
-
+bool TypedUrlChangeProcessor::ShouldSyncVisit(int typed_count,
+ ui::PageTransition transition) {
// Just use an ad-hoc criteria to determine whether to ignore this
// notification. For most users, the distribution of visits is roughly a bell
// curve with a long tail - there are lots of URLs with < 5 visits so we want
@@ -217,7 +223,7 @@ bool TypedUrlChangeProcessor::ShouldSyncVisit(
// suggestions. But there are relatively few URLs with > 10 visits, and those
// tend to be more broadly distributed such that there's no need to sync up
// every visit to preserve their relative ordering.
- return (transition == ui::PAGE_TRANSITION_TYPED &&
+ return (ui::PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_TYPED) &&
typed_count > 0 &&
(typed_count < kTypedUrlVisitThrottleThreshold ||
(typed_count % kTypedUrlVisitThrottleMultiple) == 0));
@@ -335,6 +341,7 @@ void TypedUrlChangeProcessor::StartImpl() {
void TypedUrlChangeProcessor::StartObserving() {
DCHECK(backend_loop_ == base::MessageLoop::current());
+ DCHECK(history_backend_);
DCHECK(profile_);
notification_registrar_.Add(
this, chrome::NOTIFICATION_HISTORY_URLS_MODIFIED,
@@ -342,13 +349,12 @@ void TypedUrlChangeProcessor::StartObserving() {
notification_registrar_.Add(
this, chrome::NOTIFICATION_HISTORY_URLS_DELETED,
content::Source<Profile>(profile_));
- notification_registrar_.Add(
- this, chrome::NOTIFICATION_HISTORY_URL_VISITED,
- content::Source<Profile>(profile_));
+ history_backend_->AddObserver(this);
}
void TypedUrlChangeProcessor::StopObserving() {
DCHECK(backend_loop_ == base::MessageLoop::current());
+ DCHECK(history_backend_);
DCHECK(profile_);
notification_registrar_.Remove(
this, chrome::NOTIFICATION_HISTORY_URLS_MODIFIED,
@@ -356,9 +362,7 @@ void TypedUrlChangeProcessor::StopObserving() {
notification_registrar_.Remove(
this, chrome::NOTIFICATION_HISTORY_URLS_DELETED,
content::Source<Profile>(profile_));
- notification_registrar_.Remove(
- this, chrome::NOTIFICATION_HISTORY_URL_VISITED,
- content::Source<Profile>(profile_));
+ history_backend_->RemoveObserver(this);
}
} // namespace browser_sync
« no previous file with comments | « chrome/browser/sync/glue/typed_url_change_processor.h ('k') | chrome/browser/sync/profile_sync_service_typed_url_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698