blob: 8a3d8e509e25396967443afd47959d1496208976 [file] [log] [blame]
// Copyright 2018 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_bookmarks/bookmark_sync_service.h"
#include "base/feature_list.h"
#include "components/sync/driver/sync_driver_switches.h"
#include "components/sync_bookmarks/bookmark_model_type_processor.h"
#include "components/undo/bookmark_undo_service.h"
namespace sync_bookmarks {
BookmarkSyncService::BookmarkSyncService(
BookmarkUndoService* bookmark_undo_service) {
if (base::FeatureList::IsEnabled(switches::kSyncUSSBookmarks)) {
bookmark_model_type_processor_ =
std::make_unique<sync_bookmarks::BookmarkModelTypeProcessor>(
bookmark_undo_service);
}
}
BookmarkSyncService::~BookmarkSyncService() {}
void BookmarkSyncService::Shutdown() {
bookmark_model_type_processor_.reset();
}
std::string BookmarkSyncService::EncodeBookmarkSyncMetadata() {
if (!bookmark_model_type_processor_) {
return std::string();
}
return bookmark_model_type_processor_->EncodeSyncMetadata();
}
void BookmarkSyncService::DecodeBookmarkSyncMetadata(
const std::string& metadata_str,
const base::RepeatingClosure& schedule_save_closure,
bookmarks::BookmarkModel* model) {
if (bookmark_model_type_processor_) {
bookmark_model_type_processor_->ModelReadyToSync(
metadata_str, schedule_save_closure, model);
}
}
base::WeakPtr<syncer::ModelTypeControllerDelegate>
BookmarkSyncService::GetBookmarkSyncControllerDelegateOnUIThread() {
if (!bookmark_model_type_processor_) {
return nullptr;
}
return bookmark_model_type_processor_->GetWeakPtr();
}
} // namespace sync_bookmarks