feature_setup_response_processor.cc 2.9 KB

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