15e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan// Copyright 2016 The Android Open Source Project
25e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan//
35e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan// Licensed under the Apache License, Version 2.0 (the "License");
45e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan// you may not use this file except in compliance with the License.
55e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan// You may obtain a copy of the License at
65e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan//
75e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan//      http://www.apache.org/licenses/LICENSE-2.0
85e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan//
95e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan// Unless required by applicable law or agreed to in writing, software
105e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan// distributed under the License is distributed on an "AS IS" BASIS,
115e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
125e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan// See the License for the specific language governing permissions and
135e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan// limitations under the License.
145e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan//
155e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan
165e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan// Mock of AudioDeviceHandler.
175e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan
185e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan#ifndef BRILLO_AUDIO_AUDIOSERVICE_TEST_AUDIO_DEVICE_HANDLER_MOCK_H_
195e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan#define BRILLO_AUDIO_AUDIOSERVICE_TEST_AUDIO_DEVICE_HANDLER_MOCK_H_
205e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan
215e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan#include <base/files/file_path.h>
225e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan#include <gmock/gmock.h>
235e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan#include <gtest/gtest_prod.h>
245e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan#include <system/audio.h>
255e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan#include <system/audio_policy.h>
265e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan
275e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan#include "audio_device_handler.h"
285e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan
295e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathannamespace brillo {
305e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan
315e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathanclass AudioDeviceHandlerMock : public AudioDeviceHandler {
325e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan public:
335e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  AudioDeviceHandlerMock() = default;
345e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  ~AudioDeviceHandlerMock() {}
355e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan
365e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  // Reset all local data.
375e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  void Reset() {
385e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan    connected_input_devices_.clear();
395e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan    connected_output_devices_.clear();
405e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan    headphone_ = false;
415e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan    microphone_ = false;
425e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  }
435e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan
445e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan private:
455e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  friend class AudioDeviceHandlerTest;
465e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest,
475e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan              DisconnectAllSupportedDevicesCallsDisconnect);
485e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, InitCallsDisconnectAllSupportedDevices);
495e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, InitialAudioStateMic);
505e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, InitialAudioStateHeadphone);
515e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, InitialAudioStateHeadset);
525e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, InitialAudioStateNone);
535e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, InitialAudioStateInvalid);
545e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, InitCallsDisconnect);
555e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, ProcessEventEmpty);
565e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, ProcessEventMicrophonePresent);
575e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, ProcessEventHeadphonePresent);
585e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, ProcessEventMicrophoneNotPresent);
595e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, ProcessEventHeadphoneNotPresent);
605e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, ProcessEventInvalid);
615e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, UpdateAudioSystemNone);
625e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, UpdateAudioSystemConnectMic);
635e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, UpdateAudioSystemConnectHeadphone);
645e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, UpdateAudioSystemConnectHeadset);
655e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, UpdateAudioSystemDisconnectMic);
665e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, UpdateAudioSystemDisconnectHeadphone);
675e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, UpdateAudioSystemDisconnectHeadset);
685e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, ConnectAudioDeviceInput);
695e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, ConnectAudioDeviceOutput);
705e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, DisconnectAudioDeviceInput);
715e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  FRIEND_TEST(AudioDeviceHandlerTest, DisconnectAudioDeviceOutput);
725e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan
735e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan  MOCK_METHOD2(NotifyAudioPolicyService,
745e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan               void(audio_devices_t device, audio_policy_dev_state_t state));
75b3d2a54300808bfe93b5dadfcc2b75b6347e5adaRalph Nathan  MOCK_METHOD1(TriggerCallback, void(DeviceConnectionState));
765e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan};
775e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan
785e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan}  // namespace brillo
795e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan
805e788b5ea5a8d47bb96b3a0ab9fbac8a89e94174Ralph Nathan#endif  // BRILLO_AUDIO_AUDIOSERVICE_TEST_AUDIO_DEVICE_HANDLER_MOCK_H_
81