mic_gain_slider_controller.cc 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // Copyright 2020 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/system/audio/mic_gain_slider_controller.h"
  5. #include "ash/system/audio/mic_gain_slider_view.h"
  6. #include "base/metrics/user_metrics.h"
  7. #include "base/metrics/user_metrics_action.h"
  8. namespace ash {
  9. namespace {
  10. MicGainSliderController::MapDeviceSliderCallback* g_map_slider_device_callback =
  11. nullptr;
  12. } // namespace
  13. MicGainSliderController::MicGainSliderController() = default;
  14. MicGainSliderController::~MicGainSliderController() = default;
  15. std::unique_ptr<MicGainSliderView> MicGainSliderController::CreateMicGainSlider(
  16. uint64_t device_id,
  17. bool internal) {
  18. std::unique_ptr<MicGainSliderView> slider =
  19. std::make_unique<MicGainSliderView>(this, device_id, internal);
  20. if (g_map_slider_device_callback)
  21. g_map_slider_device_callback->Run(device_id, slider.get());
  22. return slider;
  23. }
  24. // static
  25. void MicGainSliderController::SetMapDeviceSliderCallbackForTest(
  26. MapDeviceSliderCallback* map_slider_device_callback) {
  27. g_map_slider_device_callback = map_slider_device_callback;
  28. }
  29. views::View* MicGainSliderController::CreateView() {
  30. return new MicGainSliderView(this);
  31. }
  32. void MicGainSliderController::SliderValueChanged(
  33. views::Slider* sender,
  34. float value,
  35. float old_value,
  36. views::SliderChangeReason reason) {
  37. if (reason != views::SliderChangeReason::kByUser)
  38. return;
  39. // Unmute if muted.
  40. if (CrasAudioHandler::Get()->IsInputMuted()) {
  41. CrasAudioHandler::Get()->SetMuteForDevice(
  42. CrasAudioHandler::Get()->GetPrimaryActiveInputNode(), false);
  43. }
  44. base::RecordAction(base::UserMetricsAction("StatusArea_Mic_Gain_Changed"));
  45. CrasAudioHandler::Get()->SetInputGainPercent(value * 100);
  46. }
  47. void MicGainSliderController::SliderButtonPressed() {
  48. auto* const audio_handler = CrasAudioHandler::Get();
  49. const bool mute = !audio_handler->IsInputMuted();
  50. if (mute)
  51. base::RecordAction(base::UserMetricsAction("StatusArea_Mic_Muted"));
  52. else
  53. base::RecordAction(base::UserMetricsAction("StatusArea_Mic_Unmuted"));
  54. audio_handler->SetMuteForDevice(audio_handler->GetPrimaryActiveInputNode(),
  55. mute);
  56. }
  57. } // namespace ash