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 5 #include "chromeos/services/assistant/media_session/assistant_media_session.h" 6 7 #include <memory> 8 9 #include "base/test/task_environment.h" 10 #include "chromeos/services/assistant/fake_assistant_manager_service_impl.h" 11 #include "chromeos/services/assistant/test_support/scoped_assistant_client.h" 12 #include "testing/gtest/include/gtest/gtest.h" 13 14 namespace chromeos { 15 namespace assistant { 16 17 using media_session::mojom::MediaSession; 18 using media_session::mojom::MediaSessionAction; 19 using media_session::mojom::MediaSessionInfo; 20 21 class AssistantMediaSessionTest : public testing::Test { 22 public: AssistantMediaSessionTest()23 AssistantMediaSessionTest() 24 : assistant_media_session_(std::make_unique<AssistantMediaSession>( 25 &fake_assistant_manager_service_impl_)) {} 26 ~AssistantMediaSessionTest() override = default; 27 assistant_media_session()28 AssistantMediaSession* assistant_media_session() { 29 return assistant_media_session_.get(); 30 } 31 assistant_manager_service()32 FakeAssistantManagerServiceImpl* assistant_manager_service() { 33 return &fake_assistant_manager_service_impl_; 34 } 35 36 private: 37 // Needed for a test environment to support post tasks and should outlive 38 // other class members. 39 base::test::SingleThreadTaskEnvironment task_environment_; 40 41 std::unique_ptr<AssistantMediaSession> assistant_media_session_; 42 ScopedAssistantClient fake_client_; 43 FakeAssistantManagerServiceImpl fake_assistant_manager_service_impl_; 44 }; 45 TEST_F(AssistantMediaSessionTest,ShouldUpdateSessionStateOnStartStopDucking)46TEST_F(AssistantMediaSessionTest, ShouldUpdateSessionStateOnStartStopDucking) { 47 assistant_media_session()->StartDucking(); 48 EXPECT_TRUE(assistant_media_session()->IsSessionStateDucking()); 49 50 assistant_media_session()->StopDucking(); 51 EXPECT_TRUE(assistant_media_session()->IsSessionStateActive()); 52 } 53 TEST_F(AssistantMediaSessionTest,ShouldUpdateSessionStateAndSendActionOnSuspendResumePlaying)54TEST_F(AssistantMediaSessionTest, 55 ShouldUpdateSessionStateAndSendActionOnSuspendResumePlaying) { 56 assistant_media_session()->Suspend(MediaSession::SuspendType::kSystem); 57 EXPECT_TRUE(assistant_media_session()->IsSessionStateSuspended()); 58 EXPECT_EQ(assistant_manager_service()->media_session_action(), 59 MediaSessionAction::kPause); 60 61 assistant_media_session()->Resume(MediaSession::SuspendType::kSystem); 62 EXPECT_TRUE(assistant_media_session()->IsSessionStateActive()); 63 EXPECT_EQ(assistant_manager_service()->media_session_action(), 64 MediaSessionAction::kPlay); 65 66 assistant_media_session()->Suspend(MediaSession::SuspendType::kSystem); 67 EXPECT_TRUE(assistant_media_session()->IsSessionStateSuspended()); 68 EXPECT_EQ(assistant_manager_service()->media_session_action(), 69 MediaSessionAction::kPause); 70 } 71 72 } // namespace assistant 73 } // namespace chromeos 74