blob: a4e6efb1be8d32dd3ed51a7c1b985f7a59caa257 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/sync/invalidations/sync_invalidations_service_impl.h"
#include <utility>
#include "components/sync/base/features.h"
#include "components/sync/invalidations/fcm_handler.h"
namespace syncer {
namespace {
constexpr char kSenderId[] = "361488507004";
constexpr char kApplicationId[] = "com.google.chrome.sync.invalidations";
} // namespace
SyncInvalidationsServiceImpl::SyncInvalidationsServiceImpl(
gcm::GCMDriver* gcm_driver,
instance_id::InstanceIDDriver* instance_id_driver) {
fcm_handler_ = std::make_unique<FCMHandler>(gcm_driver, instance_id_driver,
kSenderId, kApplicationId);
}
SyncInvalidationsServiceImpl::~SyncInvalidationsServiceImpl() = default;
void SyncInvalidationsServiceImpl::AddListener(
InvalidationsListener* listener) {
fcm_handler_->AddListener(listener);
}
void SyncInvalidationsServiceImpl::RemoveListener(
InvalidationsListener* listener) {
fcm_handler_->RemoveListener(listener);
}
void SyncInvalidationsServiceImpl::AddTokenObserver(
FCMRegistrationTokenObserver* observer) {
fcm_handler_->AddTokenObserver(observer);
}
void SyncInvalidationsServiceImpl::RemoveTokenObserver(
FCMRegistrationTokenObserver* observer) {
fcm_handler_->RemoveTokenObserver(observer);
}
void SyncInvalidationsServiceImpl::StartListening() {
if (!base::FeatureList::IsEnabled(kUseSyncInvalidations) ||
fcm_handler_->IsListening()) {
return;
}
fcm_handler_->StartListening();
}
void SyncInvalidationsServiceImpl::StopListening() {
fcm_handler_->StopListening();
}
void SyncInvalidationsServiceImpl::StopListeningPermanently() {
if (!fcm_handler_->IsListening()) {
return;
}
DCHECK(base::FeatureList::IsEnabled(kUseSyncInvalidations));
fcm_handler_->StopListeningPermanently();
}
absl::optional<std::string>
SyncInvalidationsServiceImpl::GetFCMRegistrationToken() const {
// Return empty token if standalone invalidations are off.
if (!base::FeatureList::IsEnabled(kUseSyncInvalidations)) {
return std::string();
}
return fcm_handler_->GetFCMRegistrationToken();
}
void SyncInvalidationsServiceImpl::SetInterestedDataTypesHandler(
InterestedDataTypesHandler* handler) {
data_types_manager_.SetInterestedDataTypesHandler(handler);
}
absl::optional<ModelTypeSet>
SyncInvalidationsServiceImpl::GetInterestedDataTypes() const {
return data_types_manager_.GetInterestedDataTypes();
}
void SyncInvalidationsServiceImpl::SetInterestedDataTypes(
const ModelTypeSet& data_types) {
data_types_manager_.SetInterestedDataTypes(data_types);
}
void SyncInvalidationsServiceImpl::
SetCommittedAdditionalInterestedDataTypesCallback(
InterestedDataTypesAppliedCallback callback) {
data_types_manager_.SetCommittedAdditionalInterestedDataTypesCallback(
std::move(callback));
}
void SyncInvalidationsServiceImpl::Shutdown() {
fcm_handler_.reset();
}
FCMHandler* SyncInvalidationsServiceImpl::GetFCMHandlerForTesting() {
return fcm_handler_.get();
}
} // namespace syncer