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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_MEDIA_EFFECTS_TEST_FAKE_AUDIO_SERVICE_H_
#define COMPONENTS_MEDIA_EFFECTS_TEST_FAKE_AUDIO_SERVICE_H_
#include <string>
#include <utility>
#include "base/auto_reset.h"
#include "base/functional/callback_forward.h"
#include "base/functional/callback_helpers.h"
#include "components/media_effects/test/fake_audio_system_info.h"
#include "media/audio/audio_device_description.h"
#include "services/audio/public/mojom/audio_service.mojom.h"
namespace media_effects {
class FakeAudioService : public audio::mojom::AudioService {
public:
FakeAudioService();
~FakeAudioService() override;
FakeAudioService(const FakeAudioService&) = delete;
FakeAudioService& operator=(const FakeAudioService&) = delete;
// Simulate connecting and disconnecting a mic device with the given
// `descriptor`.
void AddFakeInputDevice(const media::AudioDeviceDescription& descriptor);
bool AddFakeInputDeviceBlocking(
const media::AudioDeviceDescription& descriptor);
void RemoveFakeInputDevice(const std::string& device_id);
bool RemoveFakeInputDeviceBlocking(const std::string& device_id);
// `callback` will be triggered after the system info replies back to its
// client in GetInputDeviceDescriptions(). Useful as a stopping point for a
// base::RunLoop.
void SetOnRepliedWithInputDeviceDescriptionsCallback(
base::OnceClosure callback);
// `callback` will be triggered when the system info receives a
// GetInputStreamParameters call.
void SetOnGetInputStreamParametersCallback(
base::RepeatingCallback<void(const std::string&)> callback);
// `callback` will be triggered when the system info receives a
// BindStreamFactory call.
void SetBindStreamFactoryCallback(base::RepeatingClosure callback) {
on_bind_stream_factory_callback_ = std::move(callback);
}
// audio::mojom::AudioService implementation
void BindSystemInfo(
mojo::PendingReceiver<audio::mojom::SystemInfo> receiver) override;
void BindStreamFactory(mojo::PendingReceiver<media::mojom::AudioStreamFactory>
receiver) override;
void BindDebugRecording(
mojo::PendingReceiver<audio::mojom::DebugRecording> receiver) override {}
void BindDeviceNotifier(
mojo::PendingReceiver<audio::mojom::DeviceNotifier> receiver) override {}
void BindLogFactoryManager(
mojo::PendingReceiver<audio::mojom::LogFactoryManager> receiver)
override {}
void BindTestingApi(
mojo::PendingReceiver<audio::mojom::TestingApi> receiver) override {}
private:
FakeAudioSystemInfo fake_system_info_;
base::RepeatingClosure on_bind_stream_factory_callback_ = base::DoNothing();
};
class ScopedFakeAudioService : public FakeAudioService {
public:
ScopedFakeAudioService();
~ScopedFakeAudioService() override;
ScopedFakeAudioService(const ScopedFakeAudioService&) = delete;
ScopedFakeAudioService& operator=(const ScopedFakeAudioService&) = delete;
private:
std::optional<base::AutoReset<audio::mojom::AudioService*>>
fake_audio_service_auto_reset_;
};
} // namespace media_effects
#endif // COMPONENTS_MEDIA_EFFECTS_TEST_FAKE_AUDIO_SERVICE_H_
|