// Copyright 2017 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. #ifndef SERVICES_AUDIO_SYSTEM_INFO_H_ #define SERVICES_AUDIO_SYSTEM_INFO_H_ #include #include #include "base/macros.h" #include "base/sequence_checker.h" #include "media/audio/audio_system_helper.h" #include "mojo/public/cpp/bindings/binding_set.h" #include "services/audio/public/mojom/system_info.mojom.h" namespace media { class AudioManager; } namespace service_manager { class ServiceContextRef; } namespace audio { class SystemInfo : public mojom::SystemInfo { public: explicit SystemInfo(media::AudioManager* audio_manager); ~SystemInfo() override; void Bind(mojom::SystemInfoRequest request, std::unique_ptr context_ref); private: // audio::mojom::SystemInfo implementation. void GetInputStreamParameters( const std::string& device_id, GetInputStreamParametersCallback callback) override; void GetOutputStreamParameters( const std::string& device_id, GetOutputStreamParametersCallback callback) override; void HasInputDevices(HasInputDevicesCallback callback) override; void HasOutputDevices(HasOutputDevicesCallback callback) override; void GetInputDeviceDescriptions( GetInputDeviceDescriptionsCallback callback) override; void GetOutputDeviceDescriptions( GetOutputDeviceDescriptionsCallback callback) override; void GetAssociatedOutputDeviceID( const std::string& input_device_id, GetAssociatedOutputDeviceIDCallback callback) override; void GetInputDeviceInfo(const std::string& input_device_id, GetInputDeviceInfoCallback callback) override; media::AudioSystemHelper helper_; // Each binding increases ref count of the service context, so that the // service knows when it is in use. mojo::BindingSet> bindings_; // Validates thread-safe access to |bindings_| only. |helper_| takes care of // its thread safety/affinity itself. SEQUENCE_CHECKER(binding_sequence_checker_); DISALLOW_COPY_AND_ASSIGN(SystemInfo); }; } // namespace audio #endif // SERVICES_AUDIO_SYSTEM_INFO_H_