blob: bab9f2c369e6ef76684b750ff7f0f3a88fcdbb59 [file]
// Copyright 2020 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 "chromeos/components/phonehub/cros_state_sender.h"
#include "chromeos/components/multidevice/logging/logging.h"
#include "chromeos/components/phonehub/message_sender.h"
#include "chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h"
namespace chromeos {
namespace phonehub {
using multidevice_setup::mojom::Feature;
using multidevice_setup::mojom::FeatureState;
CrosStateSender::CrosStateSender(
MessageSender* message_sender,
ConnectionManager* connection_manager,
multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client)
: message_sender_(message_sender),
connection_manager_(connection_manager),
multidevice_setup_client_(multidevice_setup_client) {
DCHECK(message_sender_);
DCHECK(connection_manager_);
DCHECK(multidevice_setup_client_);
connection_manager_->AddObserver(this);
multidevice_setup_client_->AddObserver(this);
}
CrosStateSender::~CrosStateSender() {
connection_manager_->RemoveObserver(this);
multidevice_setup_client_->RemoveObserver(this);
}
void CrosStateSender::AttemptUpdateCrosState() const {
// Wait for connection to be established.
if (connection_manager_->GetStatus() !=
ConnectionManager::Status::kConnected) {
PA_LOG(INFO) << "Could not start AttemptUpdateCrosState() because "
<< "connection manager status is: "
<< connection_manager_->GetStatus();
return;
}
bool are_notifications_enabled =
multidevice_setup_client_->GetFeatureState(
Feature::kPhoneHubNotifications) == FeatureState::kEnabledByUser;
PA_LOG(INFO) << "Attempting to send cros state with notifications enabled "
<< "state as: " << are_notifications_enabled;
message_sender_->SendCrosState(are_notifications_enabled);
}
void CrosStateSender::OnConnectionStatusChanged() {
AttemptUpdateCrosState();
}
void CrosStateSender::OnFeatureStatesChanged(
const multidevice_setup::MultiDeviceSetupClient::FeatureStatesMap&
feature_states_map) {
AttemptUpdateCrosState();
}
} // namespace phonehub
} // namespace chromeos