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

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

Issue 773103004: Remove NOTIFICATION_HISTORY_URLS_DELETED (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase to tip Created 5 years, 11 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 6ce366f8b80f06fe8e2dc4e7b2ace4fd9f2910fa..16dfdbf9a4af379c20b79ec444eaf02084acd217 100644
--- a/chrome/browser/sync/glue/typed_url_change_processor.cc
+++ b/chrome/browser/sync/glue/typed_url_change_processor.cc
@@ -8,14 +8,11 @@
#include "base/metrics/histogram.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/history/history_backend.h"
-#include "chrome/browser/history/history_notifications.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/sync/glue/typed_url_model_associator.h"
#include "chrome/browser/sync/profile_sync_service.h"
#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/notification_service.h"
#include "sync/internal_api/public/change_record.h"
#include "sync/internal_api/public/read_node.h"
#include "sync/internal_api/public/write_node.h"
@@ -45,15 +42,12 @@ TypedUrlChangeProcessor::TypedUrlChangeProcessor(
model_associator_(model_associator),
history_backend_(history_backend),
backend_loop_(base::MessageLoop::current()),
- disconnected_(false) {
+ disconnected_(false),
+ history_backend_observer_(this) {
DCHECK(model_associator);
DCHECK(history_backend);
DCHECK(error_handler);
DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::UI));
- // When running in unit tests, there is already a NotificationService object.
- // Since only one can exist at a time per thread, check first.
- if (!content::NotificationService::current())
- notification_service_.reset(content::NotificationService::Create());
}
TypedUrlChangeProcessor::~TypedUrlChangeProcessor() {
@@ -62,24 +56,6 @@ TypedUrlChangeProcessor::~TypedUrlChangeProcessor() {
history_backend_->RemoveObserver(this);
}
-void TypedUrlChangeProcessor::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- DCHECK(backend_loop_ == base::MessageLoop::current());
- DCHECK_EQ(type, chrome::NOTIFICATION_HISTORY_URLS_DELETED);
-
- base::AutoLock al(disconnect_lock_);
- if (disconnected_)
- return;
-
- DVLOG(1) << "Observed typed_url change.";
- HandleURLsDeleted(
- content::Details<history::URLsDeletedDetails>(details).ptr());
- UMA_HISTOGRAM_PERCENTAGE("Sync.TypedUrlChangeProcessorErrors",
- model_associator_->GetErrorPercentage());
-}
-
void TypedUrlChangeProcessor::OnURLVisited(
history::HistoryBackend* history_backend,
ui::PageTransition transition,
@@ -123,6 +99,54 @@ void TypedUrlChangeProcessor::OnURLsModified(
model_associator_->GetErrorPercentage());
}
+void TypedUrlChangeProcessor::OnURLsDeleted(
+ history::HistoryBackend* history_backend,
+ bool all_history,
+ bool expired,
+ const history::URLRows& deleted_rows,
+ const std::set<GURL>& favicon_urls) {
+ DCHECK(backend_loop_ == base::MessageLoop::current());
+
+ base::AutoLock al(disconnect_lock_);
+ if (disconnected_)
+ return;
+
+ DVLOG(1) << "Observed typed_url change.";
+
+ syncer::WriteTransaction trans(FROM_HERE, share_handle());
+
+ // Ignore archivals (we don't want to sync them as deletions, to avoid
+ // extra traffic up to the server, and also to make sure that a client with
+ // a bad clock setting won't go on an archival rampage and delete all
+ // history from every client). The server will gracefully age out the sync DB
+ // entries when they've been idle for long enough.
+ if (expired)
+ return;
+
+ if (all_history) {
+ if (!model_associator_->DeleteAllNodes(&trans)) {
+ syncer::SyncError error(FROM_HERE, syncer::SyncError::DATATYPE_ERROR,
+ "Failed to delete local nodes.",
+ syncer::TYPED_URLS);
+ error_handler()->OnSingleDataTypeUnrecoverableError(error);
+ return;
+ }
+ } else {
+ for (const auto& row : deleted_rows) {
+ syncer::WriteNode sync_node(&trans);
+ // The deleted URL could have been non-typed, so it might not be found
+ // in the sync DB.
+ if (sync_node.InitByClientTagLookup(syncer::TYPED_URLS,
+ row.url().spec()) ==
+ syncer::BaseNode::INIT_OK) {
+ sync_node.Tombstone();
+ }
+ }
+ }
+ UMA_HISTOGRAM_PERCENTAGE("Sync.TypedUrlChangeProcessorErrors",
+ model_associator_->GetErrorPercentage());
+}
+
bool TypedUrlChangeProcessor::CreateOrUpdateSyncNode(
history::URLRow url, syncer::WriteTransaction* trans) {
DCHECK_GT(url.typed_count(), 0);
@@ -182,42 +206,6 @@ bool TypedUrlChangeProcessor::CreateOrUpdateSyncNode(
return true;
}
-void TypedUrlChangeProcessor::HandleURLsDeleted(
- history::URLsDeletedDetails* details) {
- syncer::WriteTransaction trans(FROM_HERE, share_handle());
-
- // Ignore archivals (we don't want to sync them as deletions, to avoid
- // extra traffic up to the server, and also to make sure that a client with
- // a bad clock setting won't go on an archival rampage and delete all
- // history from every client). The server will gracefully age out the sync DB
- // entries when they've been idle for long enough.
- if (details->expired)
- return;
-
- if (details->all_history) {
- if (!model_associator_->DeleteAllNodes(&trans)) {
- syncer::SyncError error(FROM_HERE,
- syncer::SyncError::DATATYPE_ERROR,
- "Failed to delete local nodes.",
- syncer::TYPED_URLS);
- error_handler()->OnSingleDataTypeUnrecoverableError(error);
- return;
- }
- } else {
- for (history::URLRows::const_iterator row = details->rows.begin();
- row != details->rows.end(); ++row) {
- syncer::WriteNode sync_node(&trans);
- // The deleted URL could have been non-typed, so it might not be found
- // in the sync DB.
- if (sync_node.InitByClientTagLookup(syncer::TYPED_URLS,
- row->url().spec()) ==
- syncer::BaseNode::INIT_OK) {
- sync_node.Tombstone();
- }
- }
- }
-}
-
bool TypedUrlChangeProcessor::ShouldSyncVisit(int typed_count,
ui::PageTransition transition) {
// Just use an ad-hoc criteria to determine whether to ignore this
@@ -347,20 +335,14 @@ void TypedUrlChangeProcessor::StartObserving() {
DCHECK(backend_loop_ == base::MessageLoop::current());
DCHECK(history_backend_);
DCHECK(profile_);
- notification_registrar_.Add(
- this, chrome::NOTIFICATION_HISTORY_URLS_DELETED,
- content::Source<Profile>(profile_));
- history_backend_->AddObserver(this);
+ history_backend_observer_.Add(history_backend_);
}
void TypedUrlChangeProcessor::StopObserving() {
DCHECK(backend_loop_ == base::MessageLoop::current());
DCHECK(history_backend_);
DCHECK(profile_);
- notification_registrar_.Remove(
- this, chrome::NOTIFICATION_HISTORY_URLS_DELETED,
- content::Source<Profile>(profile_));
- history_backend_->RemoveObserver(this);
+ history_backend_observer_.RemoveAll();
}
} // 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