blob: e0eb6320511bffcb0dd578af7bb4b35556a9d611 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <fuchsia/media/cpp/fidl.h>
#include <fuchsia/media/tuning/cpp/fidl.h>
#include <fuchsia/virtualaudio/cpp/fidl.h>
#include <cmath>
#include "src/media/audio/lib/test/hermetic_audio_test.h"
namespace media::audio::test {
class UsageReporterTest : public HermeticAudioTest {
protected:
class FakeUsageWatcher : public fuchsia::media::UsageWatcher {
public:
explicit FakeUsageWatcher(fit::closure completer)
: completer_(std::move(completer)), binding_(this) {}
fidl::InterfaceHandle<fuchsia::media::UsageWatcher> Bind() { return binding_.NewBinding(); }
private:
void OnStateChanged(fuchsia::media::Usage _usage, fuchsia::media::UsageState _usage_state,
OnStateChangedCallback callback) override {
callback();
completer_();
}
fit::closure completer_;
fidl::Binding<fuchsia::media::UsageWatcher> binding_;
};
};
// TODO(50645): More complete testing of the integration with renderers
TEST_F(UsageReporterTest, ConnectToUsageReporter) {
fit::closure completer = AddCallback("OnStateChanged", [] {});
fuchsia::media::UsageReporterPtr audio_core;
environment()->ConnectToService(audio_core.NewRequest());
AddErrorHandler(audio_core, "AudioCore");
fuchsia::media::Usage usage;
usage.set_render_usage(fuchsia::media::AudioRenderUsage::MEDIA);
FakeUsageWatcher watcher(std::move(completer));
audio_core->Watch(std::move(usage), watcher.Bind());
ExpectCallback();
}
} // namespace media::audio::test