1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromeos/ash/components/phonehub/feature_setup_response_processor.h"
#include "chromeos/ash/components/multidevice/logging/logging.h"
#include "chromeos/ash/components/phonehub/message_receiver.h"
#include "chromeos/ash/components/phonehub/multidevice_feature_access_manager.h"
#include "chromeos/ash/components/phonehub/proto/phonehub_api.pb.h"
namespace ash::phonehub {
FeatureSetupResponseProcessor::FeatureSetupResponseProcessor(
MessageReceiver* message_receiver,
MultideviceFeatureAccessManager* multidevice_feature_access_manager)
: message_receiver_(message_receiver),
multidevice_feature_access_manager_(multidevice_feature_access_manager) {
DCHECK(message_receiver_);
DCHECK(multidevice_feature_access_manager_);
message_receiver_->AddObserver(this);
}
FeatureSetupResponseProcessor::~FeatureSetupResponseProcessor() {
message_receiver_->RemoveObserver(this);
}
void FeatureSetupResponseProcessor::OnFeatureSetupResponseReceived(
proto::FeatureSetupResponse response) {
if (!multidevice_feature_access_manager_
->IsCombinedSetupOperationInProgress()) {
return;
}
if (response.camera_roll_setup_result() ==
proto::FeatureSetupResult::RESULT_ERROR_ACTION_CANCELED ||
response.notification_setup_result() ==
proto::FeatureSetupResult::RESULT_ERROR_ACTION_CANCELED ||
response.notification_setup_result() ==
proto::FeatureSetupResult::RESULT_ERROR_ACTION_TIMEOUT) {
multidevice_feature_access_manager_->SetCombinedSetupOperationStatus(
CombinedAccessSetupOperation::Status::kOperationFailedOrCancelled);
} else if (response.camera_roll_setup_result() ==
proto::FeatureSetupResult::RESULT_PERMISSION_GRANTED &&
response.notification_setup_result() ==
proto::FeatureSetupResult::RESULT_ERROR_USER_REJECT) {
multidevice_feature_access_manager_->SetCombinedSetupOperationStatus(
CombinedAccessSetupOperation::Status::
kCameraRollGrantedNotificationRejected);
} else if (response.camera_roll_setup_result() ==
proto::FeatureSetupResult::RESULT_ERROR_USER_REJECT &&
response.notification_setup_result() ==
proto::FeatureSetupResult::RESULT_PERMISSION_GRANTED) {
multidevice_feature_access_manager_->SetCombinedSetupOperationStatus(
CombinedAccessSetupOperation::Status::
kCameraRollRejectedNotificationGranted);
} else if (response.camera_roll_setup_result() ==
proto::FeatureSetupResult::RESULT_ERROR_USER_REJECT ||
response.notification_setup_result() ==
proto::FeatureSetupResult::RESULT_ERROR_USER_REJECT) {
multidevice_feature_access_manager_->SetCombinedSetupOperationStatus(
CombinedAccessSetupOperation::Status::kCompletedUserRejectedAllAccess);
}
}
} // namespace ash::phonehub
|