diff options
Diffstat (limited to 'src/components/application_manager/test/state_controller/state_controller_test.cc')
-rw-r--r-- | src/components/application_manager/test/state_controller/state_controller_test.cc | 849 |
1 files changed, 646 insertions, 203 deletions
diff --git a/src/components/application_manager/test/state_controller/state_controller_test.cc b/src/components/application_manager/test/state_controller/state_controller_test.cc index fbada47fec..0fe40366d6 100644 --- a/src/components/application_manager/test/state_controller/state_controller_test.cc +++ b/src/components/application_manager/test/state_controller/state_controller_test.cc @@ -75,10 +75,13 @@ namespace test { namespace components { namespace state_controller_test { -namespace constants { +namespace { const uint32_t kCorrID = 314u; const uint32_t kHMIAppID = 2718u; -} // namespace constants +const am::WindowID kDefaultWindowId = + mobile_apis::PredefinedWindows::DEFAULT_WINDOW; +const am::WindowID kCustomWindowId = 2; +} // namespace struct HmiStatesComparator { mobile_apis::HMILevel::eType hmi_level_; @@ -213,7 +216,11 @@ class StateControllerImplTest : public ::testing::Test { std::vector<am::HmiStatePtr> invalid_states_for_not_audio_app; std::vector<am::HmiStatePtr> invalid_states_for_audio_app; std::vector<am::HmiState::StateID> valid_state_ids_; - std::vector<am::ApplicationSharedPtr> applications_list_; + + typedef std::map<am::ApplicationSharedPtr, + NiceMock<application_manager_test::MockApplication>*> + AppPtrMockMapping; + AppPtrMockMapping applications_list_; connection_handler_test::MockConnectionHandlerSettings mock_connection_handler__settings; @@ -554,21 +561,26 @@ class StateControllerImplTest : public ::testing::Test { // application properties, i.e. is_media_application flag from RAI and // AppHmiTypes (NAVIGATION, etc.). Most likely logic should be changed // after conclusion on APPLINK-20231 - std::vector<am::ApplicationSharedPtr>::iterator app = std::find_if( - applications_list_.begin(), - applications_list_.end(), - [app_id](am::ApplicationSharedPtr a) { return app_id == a->app_id(); }); - - if (app == applications_list_.end()) { + AppPtrMockMapping::iterator it = + std::find_if(applications_list_.begin(), + applications_list_.end(), + [app_id](AppPtrMockMapping::value_type& item) { + return app_id == item.first->app_id(); + }); + + if (applications_list_.end() == it) { return APP_TYPE_NON_MEDIA; } - if ((*app)->is_navi()) { + auto app = it->first; + if (app->is_navi()) { return APP_TYPE_NAVI; } - if ((*app)->is_media_application()) { + + if (app->is_media_application()) { return APP_TYPE_MEDIA; } + return APP_TYPE_NON_MEDIA; } @@ -644,17 +656,16 @@ class StateControllerImplTest : public ::testing::Test { template <typename T, typename Q> void TestMixState(void (StateControllerImplTest::*call_back_result)( std::vector<am::HmiStatePtr>&, ApplicationType)) { - std::vector<am::ApplicationSharedPtr>::iterator it_begin = - applications_list_.begin(); - std::vector<am::ApplicationSharedPtr>::iterator it_end = - applications_list_.end(); + AppPtrMockMapping::iterator it_begin = applications_list_.begin(); + AppPtrMockMapping::iterator it_end = applications_list_.end(); ApplicationType app_type; uint32_t app_id; am::ApplicationSharedPtr app; + for (; it_begin != it_end; ++it_begin) { - app_id = (*it_begin)->app_id(); + app_id = it_begin->first->app_id(); app_type = AppType(app_id); - app = (*it_begin); + app = it_begin->first; am::HmiStatePtr state_first = std::make_shared<T>(app, app_manager_mock_); am::HmiStatePtr state_second = std::make_shared<Q>(app, app_manager_mock_); @@ -925,14 +936,14 @@ class StateControllerImplTest : public ::testing::Test { MEDIA, NAVI, VC); - applications_list_.push_back(simple_app_); - applications_list_.push_back(media_app_); - applications_list_.push_back(navi_app_); - applications_list_.push_back(vc_app_); - applications_list_.push_back(media_navi_app_); - applications_list_.push_back(media_vc_app_); - applications_list_.push_back(navi_vc_app_); - applications_list_.push_back(media_navi_vc_app_); + applications_list_[simple_app_] = simple_app_ptr_; + applications_list_[media_app_] = media_app_ptr_; + applications_list_[navi_app_] = navi_app_ptr_; + applications_list_[vc_app_] = vc_app_ptr_; + applications_list_[media_navi_app_] = media_navi_app_ptr_; + applications_list_[media_vc_app_] = media_vc_app_ptr_; + applications_list_[navi_vc_app_] = navi_vc_app_ptr_; + applications_list_[media_navi_vc_app_] = media_navi_vc_app_ptr_; } void CheckAppConfiguration() { ASSERT_EQ(simple_app_.get(), simple_app_ptr_); @@ -1036,7 +1047,7 @@ class StateControllerImplTest : public ::testing::Test { (*bc_activate_app_request)[am::strings::params] [am::strings::correlation_id] = corr_id; ON_CALL(message_helper_mock_, - GetBCActivateAppRequestToHMI(_, _, _, hmi_lvl, _, _)) + GetBCActivateAppRequestToHMI(_, _, hmi_lvl, _, _)) .WillByDefault(Return(bc_activate_app_request)); ON_CALL(app_manager_mock_, GetRPCService()) .WillByDefault(ReturnRef(mock_rpc_service_)); @@ -1044,22 +1055,36 @@ class StateControllerImplTest : public ::testing::Test { .WillByDefault(Return(true)); } - void ExpectSuccesfullSetHmiState( + void ExpectSuccessfulSetHmiState( + am::ApplicationSharedPtr app, + NiceMock<application_manager_test::MockApplication>* app_mock, + am::HmiStatePtr old_state, + am::HmiStatePtr new_state) { + ExpectSuccessfulSetHmiState( + app, app_mock, kDefaultWindowId, old_state, new_state); + } + + void ExpectSuccessfulSetHmiState( am::ApplicationSharedPtr app, NiceMock<application_manager_test::MockApplication>* app_mock, + am::WindowID window_id, am::HmiStatePtr old_state, am::HmiStatePtr new_state) { - EXPECT_CALL(*app_mock, CurrentHmiState()) + EXPECT_CALL(*app_mock, CurrentHmiState(window_id)) .WillOnce(Return(old_state)) .WillOnce(Return(new_state)); - EXPECT_CALL(*app_mock, - SetRegularState(Truly(HmiStatesComparator(new_state)))); + EXPECT_CALL( + *app_mock, + SetRegularState(window_id, Truly(HmiStatesComparator(new_state)))); if (!HmiStatesComparator(old_state)(new_state)) { - EXPECT_CALL(app_manager_mock_, SendHMIStatusNotification(app)); - EXPECT_CALL( - app_manager_mock_, - OnHMILevelChanged( - app->app_id(), old_state->hmi_level(), new_state->hmi_level())); + EXPECT_CALL(message_helper_mock_, + SendHMIStatusNotification(app, window_id, _)); + if (kDefaultWindowId == window_id) { + EXPECT_CALL( + app_manager_mock_, + OnHMILevelChanged( + app->app_id(), old_state->hmi_level(), new_state->hmi_level())); + } } } @@ -1068,22 +1093,33 @@ class StateControllerImplTest : public ::testing::Test { NiceMock<application_manager_test::MockApplication>* app_mock, am::HmiStatePtr old_state, am::HmiStatePtr new_state) { - EXPECT_CALL(*app_mock, RegularHmiState()) + EXPECT_CALL(*app_mock, RegularHmiState(kDefaultWindowId)) .WillOnce(Return(old_state)) .WillOnce(Return(old_state)); - ExpectSuccesfullSetHmiState(app, app_mock, old_state, new_state); + ExpectSuccessfulSetHmiState(app, app_mock, old_state, new_state); } void ExpectAppWontChangeHmiStateDueToConflictResolving( am::ApplicationSharedPtr app, NiceMock<application_manager_test::MockApplication>* app_mock, + const am::WindowID window_id, am::HmiStatePtr state) { - ON_CALL(*app_mock, RegularHmiState()).WillByDefault(Return(state)); - EXPECT_CALL(app_manager_mock_, SendHMIStatusNotification(app)).Times(0); + ON_CALL(*app_mock, RegularHmiState(window_id)).WillByDefault(Return(state)); + EXPECT_CALL(message_helper_mock_, + SendHMIStatusNotification(app, window_id, _)) + .Times(0); EXPECT_CALL(app_manager_mock_, OnHMILevelChanged(app->app_id(), _, _)) .Times(0); } + void ExpectAppWontChangeHmiStateDueToConflictResolving( + am::ApplicationSharedPtr app, + NiceMock<application_manager_test::MockApplication>* app_mock, + am::HmiStatePtr state) { + ExpectAppWontChangeHmiStateDueToConflictResolving( + app, app_mock, kDefaultWindowId, state); + } + void InsertApplication(am::ApplicationSharedPtr app) { application_set_.insert(app); ON_CALL(app_manager_mock_, application(app->app_id())) @@ -1135,13 +1171,14 @@ class StateControllerImplTest : public ::testing::Test { using smart_objects::SmartObject; namespace FunctionID = hmi_apis::FunctionID; - EXPECT_CALL(app_mock, CurrentHmiState()) + EXPECT_CALL(app_mock, CurrentHmiState(kDefaultWindowId)) .WillRepeatedly(Return(NoneNotAudibleState())); for (size_t i = 0; i < state_ids.size(); ++i) { am::HmiState::StateID state_id = state_ids[i]; EXPECT_CALL(app_mock, - AddHMIState(Truly(HmiStatesIDComparator(state_id)))); + AddHMIState(kDefaultWindowId, + Truly(HmiStatesIDComparator(state_id)))); switch (state_id) { case am::HmiState::StateID::STATE_ID_VR_SESSION: { Event vr_start_event(FunctionID::VR_Started); @@ -1182,7 +1219,7 @@ class StateControllerImplTest : public ::testing::Test { default: break; } - EXPECT_CALL(app_mock, AddHMIState(_)).Times(0); + EXPECT_CALL(app_mock, AddHMIState(kDefaultWindowId, _)).Times(0); } } @@ -1194,12 +1231,17 @@ class StateControllerImplTest : public ::testing::Test { using smart_objects::SmartObject; namespace FunctionID = hmi_apis::FunctionID; - EXPECT_CALL(app_mock, CurrentHmiState()) + EXPECT_CALL(app_mock, CurrentHmiState(kDefaultWindowId)) .WillRepeatedly(Return(NoneNotAudibleState())); + am::WindowIds window_ids = {kDefaultWindowId}; + EXPECT_CALL(app_mock, GetWindowIds()).WillRepeatedly(Return(window_ids)); + for (uint32_t i = 0; i < state_ids.size(); ++i) { am::HmiState::StateID state_id = state_ids[i]; - EXPECT_CALL(app_mock, AddHMIState(Truly(HmiStatesIDComparator(state_id)))) + EXPECT_CALL( + app_mock, + AddHMIState(kDefaultWindowId, Truly(HmiStatesIDComparator(state_id)))) .Times(1); switch (state_id) { @@ -1243,16 +1285,17 @@ class StateControllerImplTest : public ::testing::Test { break; } - EXPECT_CALL(app_mock, AddHMIState(_)).Times(0); + EXPECT_CALL(app_mock, AddHMIState(kDefaultWindowId, _)).Times(0); } for (uint32_t i = 0; i < state_ids.size(); ++i) { am::HmiState::StateID state_id = state_ids[i]; - EXPECT_CALL(app_mock, RemoveHMIState(state_id)).Times(1); + EXPECT_CALL(app_mock, RemoveHMIState(kDefaultWindowId, state_id)) + .Times(1); - EXPECT_CALL(app_mock, PostponedHmiState()) + EXPECT_CALL(app_mock, PostponedHmiState(kDefaultWindowId)) .WillOnce(Return(NoneNotAudibleState())); - EXPECT_CALL(app_mock, RemovePostponedState()); + EXPECT_CALL(app_mock, RemovePostponedState(kDefaultWindowId)); switch (state_id) { case am::HmiState::StateID::STATE_ID_VR_SESSION: { @@ -1295,7 +1338,7 @@ class StateControllerImplTest : public ::testing::Test { break; } - EXPECT_CALL(app_mock, RemoveHMIState(_)).Times(0); + EXPECT_CALL(app_mock, RemoveHMIState(kDefaultWindowId, _)).Times(0); } } }; @@ -1307,6 +1350,7 @@ TEST_F(StateControllerImplTest, OnStateChangedWithEqualStates) { for (uint32_t i = 0; i < valid_states_for_not_audio_app_.size(); ++i) { state_ctrl_->OnStateChanged(simple_app_, + kDefaultWindowId, valid_states_for_not_audio_app_[i], valid_states_for_not_audio_app_[i]); } @@ -1317,8 +1361,9 @@ TEST_F(StateControllerImplTest, OnStateChangedWithDifferentStates) { for (uint32_t j = 0; j < valid_states_for_not_audio_app_.size(); ++j) { HmiStatesComparator comp(valid_states_for_not_audio_app_[i]); if (!comp(valid_states_for_not_audio_app_[j])) { - EXPECT_CALL(app_manager_mock_, SendHMIStatusNotification(simple_app_)) - .Times(1); + EXPECT_CALL( + message_helper_mock_, + SendHMIStatusNotification(simple_app_, kDefaultWindowId, _)); EXPECT_CALL( app_manager_mock_, OnHMILevelChanged(simple_app_id_, @@ -1330,10 +1375,12 @@ TEST_F(StateControllerImplTest, OnStateChangedWithDifferentStates) { EXPECT_CALL(*simple_app_ptr_, ResetDataInNone()).Times(1); } state_ctrl_->OnStateChanged(simple_app_, + kDefaultWindowId, valid_states_for_not_audio_app_[i], valid_states_for_not_audio_app_[j]); - EXPECT_CALL(app_manager_mock_, SendHMIStatusNotification(_)).Times(0); + EXPECT_CALL(message_helper_mock_, SendHMIStatusNotification(_, _, _)) + .Times(0); EXPECT_CALL(app_manager_mock_, OnHMILevelChanged(_, _, _)).Times(0); EXPECT_CALL(*simple_app_ptr_, ResetDataInNone()).Times(0); } @@ -1356,10 +1403,12 @@ TEST_F(StateControllerImplTest, OnStateChangedToNone) { SystemContext::SYSCTXT_MAIN); EXPECT_CALL(*simple_app_ptr_, ResetDataInNone()).Times(0); - state_ctrl_->OnStateChanged(simple_app_, none_state, not_none_state); + state_ctrl_->OnStateChanged( + simple_app_, kDefaultWindowId, none_state, not_none_state); EXPECT_CALL(*simple_app_ptr_, ResetDataInNone()).Times(1); - state_ctrl_->OnStateChanged(simple_app_, not_none_state, none_state); + state_ctrl_->OnStateChanged( + simple_app_, kDefaultWindowId, not_none_state, none_state); } TEST_F(StateControllerImplTest, MoveSimpleAppToValidStates) { @@ -1377,18 +1426,21 @@ TEST_F(StateControllerImplTest, MoveSimpleAppToValidStates) { it != valid_states_for_not_audio_app_.end(); ++it) { HmiStatePtr state_to_setup = *it; - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(initial_state)) .WillOnce(Return(state_to_setup)); - EXPECT_CALL(app_manager_mock_, SendHMIStatusNotification(simple_app_)); + EXPECT_CALL(message_helper_mock_, + SendHMIStatusNotification(simple_app_, kDefaultWindowId, _)); EXPECT_CALL(app_manager_mock_, OnHMILevelChanged(simple_app_id_, initial_state->hmi_level(), state_to_setup->hmi_level())); EXPECT_CALL(*simple_app_ptr_, - SetRegularState(Truly(HmiStatesComparator(state_to_setup)))); - state_ctrl_->SetRegularState(simple_app_, state_to_setup, false); + SetRegularState(kDefaultWindowId, + Truly(HmiStatesComparator(state_to_setup)))); + state_ctrl_->SetRegularState( + simple_app_, kDefaultWindowId, state_to_setup, false); initial_state = state_to_setup; } } @@ -1413,18 +1465,21 @@ TEST_F(StateControllerImplTest, MoveAudioNotResumeAppToValidStates) { it != valid_states_for_audio_app_.end(); ++it) { HmiStatePtr state_to_setup = *it; - EXPECT_CALL(*audio_app_mock, CurrentHmiState()) + EXPECT_CALL(*audio_app_mock, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(initial_state)) .WillOnce(Return(state_to_setup)); - EXPECT_CALL(app_manager_mock_, SendHMIStatusNotification(audio_app)); + EXPECT_CALL(message_helper_mock_, + SendHMIStatusNotification(audio_app, kDefaultWindowId, _)); EXPECT_CALL(app_manager_mock_, OnHMILevelChanged(audio_app->app_id(), initial_state->hmi_level(), state_to_setup->hmi_level())); EXPECT_CALL(*audio_app_mock, - SetRegularState(Truly(HmiStatesComparator(state_to_setup)))); - state_ctrl_->SetRegularState(media_navi_vc_app_, state_to_setup, false); + SetRegularState(kDefaultWindowId, + Truly(HmiStatesComparator(state_to_setup)))); + state_ctrl_->SetRegularState( + media_navi_vc_app_, kDefaultWindowId, state_to_setup, false); initial_state = state_to_setup; } } @@ -1452,7 +1507,7 @@ TEST_F(StateControllerImplTest, MoveAudioResumeAppToValidStates) { HmiStatePtr state_to_setup = *it; HmiStatePtr state_to_check = state_to_setup; // First time current state is initial, then it changes to setup state - EXPECT_CALL(*audio_app_mock, CurrentHmiState()) + EXPECT_CALL(*audio_app_mock, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(initial_state)) .WillOnce(Return(state_to_setup)); // Audio resume app when HMI level is LIMITED or FULL gets audible state @@ -1480,8 +1535,10 @@ TEST_F(StateControllerImplTest, MoveAudioResumeAppToValidStates) { // Check that we set correct state EXPECT_CALL(*audio_app_mock, - SetRegularState(Truly(HmiStatesComparator(state_to_check)))); - state_ctrl_->SetRegularState(media_navi_vc_app_, state_to_setup, false); + SetRegularState(kDefaultWindowId, + Truly(HmiStatesComparator(state_to_check)))); + state_ctrl_->SetRegularState( + media_navi_vc_app_, kDefaultWindowId, state_to_setup, false); initial_state = state_to_setup; } } @@ -1494,11 +1551,13 @@ TEST_F(StateControllerImplTest, MoveAppFromValidStateToInvalid) { invalid_state_it != common_invalid_states_.end(); ++invalid_state_it) { HmiStatePtr invalid_state = *invalid_state_it; - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()).Times(0); + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)).Times(0); EXPECT_CALL(*simple_app_ptr_, is_resuming()).Times(0); EXPECT_CALL(app_manager_mock_, OnHMILevelChanged(_, _, _)).Times(0); - EXPECT_CALL(*simple_app_ptr_, SetRegularState(_)).Times(0); - state_ctrl_->SetRegularState(simple_app_, invalid_state, false); + EXPECT_CALL(*simple_app_ptr_, SetRegularState(kDefaultWindowId, _)) + .Times(0); + state_ctrl_->SetRegularState( + simple_app_, kDefaultWindowId, invalid_state, false); } for (std::vector<HmiStatePtr>::iterator invalid_state_it = @@ -1506,11 +1565,14 @@ TEST_F(StateControllerImplTest, MoveAppFromValidStateToInvalid) { invalid_state_it != common_invalid_states_.end(); ++invalid_state_it) { HmiStatePtr invalid_state = *invalid_state_it; - EXPECT_CALL(*media_navi_vc_app_ptr_, CurrentHmiState()).Times(0); + EXPECT_CALL(*media_navi_vc_app_ptr_, CurrentHmiState(kDefaultWindowId)) + .Times(0); EXPECT_CALL(*media_navi_vc_app_ptr_, is_resuming()).Times(0); EXPECT_CALL(app_manager_mock_, OnHMILevelChanged(_, _, _)).Times(0); - EXPECT_CALL(*media_navi_vc_app_ptr_, SetRegularState(_)).Times(0); - state_ctrl_->SetRegularState(media_navi_vc_app_, invalid_state, false); + EXPECT_CALL(*media_navi_vc_app_ptr_, SetRegularState(kDefaultWindowId, _)) + .Times(0); + state_ctrl_->SetRegularState( + media_navi_vc_app_, kDefaultWindowId, invalid_state, false); } } @@ -1532,7 +1594,7 @@ TEST_F(StateControllerImplTest, InsertApplication(app_in_full); InsertApplication(app_moved_to_full); - ExpectSuccesfullSetHmiState(app_moved_to_full, + ExpectSuccessfulSetHmiState(app_moved_to_full, app_moved_to_full_mock, BackgroundState(), FullNotAudibleState()); @@ -1540,7 +1602,8 @@ TEST_F(StateControllerImplTest, ExpectAppChangeHmiStateDueToConflictResolving( app_in_full, app_in_full_mock, FullNotAudibleState(), BackgroundState()); - state_ctrl_->SetRegularState(app_moved_to_full, FullNotAudibleState(), false); + state_ctrl_->SetRegularState( + app_moved_to_full, kDefaultWindowId, FullNotAudibleState(), false); } TEST_F(StateControllerImplTest, SetFullToSimpleAppWhileAudioAppAppIsInFull) { @@ -1557,14 +1620,15 @@ TEST_F(StateControllerImplTest, SetFullToSimpleAppWhileAudioAppAppIsInFull) { InsertApplication(app_in_full); InsertApplication(app_moved_to_full); - ExpectSuccesfullSetHmiState(app_moved_to_full, + ExpectSuccessfulSetHmiState(app_moved_to_full, app_moved_to_full_mock, BackgroundState(), FullNotAudibleState()); ExpectAppChangeHmiStateDueToConflictResolving( app_in_full, app_in_full_mock, FullAudibleState(), LimitedState()); - state_ctrl_->SetRegularState(app_moved_to_full, FullNotAudibleState(), false); + state_ctrl_->SetRegularState( + app_moved_to_full, kDefaultWindowId, FullNotAudibleState(), false); } TEST_F(StateControllerImplTest, @@ -1583,14 +1647,15 @@ TEST_F(StateControllerImplTest, InsertApplication(app_in_full); InsertApplication(app_moved_to_full); - ExpectSuccesfullSetHmiState(app_moved_to_full, + ExpectSuccessfulSetHmiState(app_moved_to_full, app_moved_to_full_mock, BackgroundState(), FullAudibleState()); ExpectAppChangeHmiStateDueToConflictResolving( app_in_full, app_in_full_mock, FullAudibleState(), LimitedState()); - state_ctrl_->SetRegularState(app_moved_to_full, FullAudibleState(), false); + state_ctrl_->SetRegularState( + app_moved_to_full, kDefaultWindowId, FullAudibleState(), false); } TEST_F(StateControllerImplTest, @@ -1607,7 +1672,7 @@ TEST_F(StateControllerImplTest, InsertApplication(app_in_full); InsertApplication(app_moved_to_full); - ExpectSuccesfullSetHmiState(app_moved_to_full, + ExpectSuccessfulSetHmiState(app_moved_to_full, app_moved_to_full_mock, BackgroundState(), FullAudibleState()); @@ -1615,7 +1680,8 @@ TEST_F(StateControllerImplTest, ExpectAppChangeHmiStateDueToConflictResolving( app_in_full, app_in_full_mock, FullAudibleState(), BackgroundState()); - state_ctrl_->SetRegularState(app_moved_to_full, FullAudibleState(), false); + state_ctrl_->SetRegularState( + app_moved_to_full, kDefaultWindowId, FullAudibleState(), false); } TEST_F(StateControllerImplTest, @@ -1633,7 +1699,7 @@ TEST_F(StateControllerImplTest, InsertApplication(app_in_limited); InsertApplication(app_moved_to_full); - ExpectSuccesfullSetHmiState(app_moved_to_full, + ExpectSuccessfulSetHmiState(app_moved_to_full, app_moved_to_full_mock, BackgroundState(), FullAudibleState()); @@ -1641,7 +1707,8 @@ TEST_F(StateControllerImplTest, ExpectAppChangeHmiStateDueToConflictResolving( app_in_limited, app_in_limited_mock, LimitedState(), BackgroundState()); - state_ctrl_->SetRegularState(app_moved_to_full, FullAudibleState(), false); + state_ctrl_->SetRegularState( + app_moved_to_full, kDefaultWindowId, FullAudibleState(), false); } TEST_F(StateControllerImplTest, @@ -1660,7 +1727,7 @@ TEST_F(StateControllerImplTest, InsertApplication(app_in_limited); InsertApplication(app_moved_to_limited); - ExpectSuccesfullSetHmiState(app_moved_to_limited, + ExpectSuccessfulSetHmiState(app_moved_to_limited, app_moved_to_limited_mock, BackgroundState(), LimitedState()); @@ -1668,7 +1735,8 @@ TEST_F(StateControllerImplTest, ExpectAppChangeHmiStateDueToConflictResolving( app_in_limited, app_in_limited_mock, LimitedState(), BackgroundState()); - state_ctrl_->SetRegularState(app_moved_to_limited, LimitedState(), false); + state_ctrl_->SetRegularState( + app_moved_to_limited, kDefaultWindowId, LimitedState(), false); } TEST_F(StateControllerImplTest, @@ -1686,14 +1754,15 @@ TEST_F(StateControllerImplTest, InsertApplication(app_in_limited); InsertApplication(app_moved_to_limited); - ExpectSuccesfullSetHmiState(app_moved_to_limited, + ExpectSuccessfulSetHmiState(app_moved_to_limited, app_moved_to_limited_mock, BackgroundState(), LimitedState()); ExpectAppWontChangeHmiStateDueToConflictResolving( app_in_limited, app_in_limited_mock, LimitedState()); - state_ctrl_->SetRegularState(app_moved_to_limited, LimitedState(), false); + state_ctrl_->SetRegularState( + app_moved_to_limited, kDefaultWindowId, LimitedState(), false); } TEST_F(StateControllerImplTest, @@ -1712,14 +1781,15 @@ TEST_F(StateControllerImplTest, InsertApplication(app_in_full); InsertApplication(app_moved_to_limited); - ExpectSuccesfullSetHmiState(app_moved_to_limited, + ExpectSuccessfulSetHmiState(app_moved_to_limited, app_moved_to_limited_mock, BackgroundState(), LimitedState()); ExpectAppWontChangeHmiStateDueToConflictResolving( app_in_full, app_in_full_mock, FullAudibleState()); - state_ctrl_->SetRegularState(app_moved_to_limited, LimitedState(), false); + state_ctrl_->SetRegularState( + app_moved_to_limited, kDefaultWindowId, LimitedState(), false); } TEST_F(StateControllerImplTest, SetFullToSimpleAppWhile2AudioAppsInLimited) { @@ -1743,7 +1813,7 @@ TEST_F(StateControllerImplTest, SetFullToSimpleAppWhile2AudioAppsInLimited) { InsertApplication(limited_app1); InsertApplication(limited_app2); - ExpectSuccesfullSetHmiState(app_moved_to_full, + ExpectSuccessfulSetHmiState(app_moved_to_full, app_moved_to_full_mock, BackgroundState(), FullNotAudibleState()); @@ -1753,7 +1823,8 @@ TEST_F(StateControllerImplTest, SetFullToSimpleAppWhile2AudioAppsInLimited) { ExpectAppWontChangeHmiStateDueToConflictResolving( limited_app2, limited_app2_mock, LimitedState()); - state_ctrl_->SetRegularState(app_moved_to_full, FullNotAudibleState(), false); + state_ctrl_->SetRegularState( + app_moved_to_full, kDefaultWindowId, FullNotAudibleState(), false); } TEST_F(StateControllerImplTest, @@ -1778,7 +1849,7 @@ TEST_F(StateControllerImplTest, InsertApplication(limited_app); InsertApplication(full_app); - ExpectSuccesfullSetHmiState(app_moved_to_full, + ExpectSuccessfulSetHmiState(app_moved_to_full, app_moved_to_full_mock, BackgroundState(), FullNotAudibleState()); @@ -1789,7 +1860,8 @@ TEST_F(StateControllerImplTest, ExpectAppChangeHmiStateDueToConflictResolving( full_app, full_app_mock, FullAudibleState(), LimitedState()); - state_ctrl_->SetRegularState(app_moved_to_full, FullNotAudibleState(), false); + state_ctrl_->SetRegularState( + app_moved_to_full, kDefaultWindowId, FullNotAudibleState(), false); } TEST_F(StateControllerImplTest, @@ -1814,7 +1886,7 @@ TEST_F(StateControllerImplTest, InsertApplication(limited_app); InsertApplication(full_app); - ExpectSuccesfullSetHmiState(app_moved_to_full, + ExpectSuccessfulSetHmiState(app_moved_to_full, app_moved_to_full_mock, BackgroundState(), FullNotAudibleState()); @@ -1825,7 +1897,8 @@ TEST_F(StateControllerImplTest, ExpectAppChangeHmiStateDueToConflictResolving( full_app, full_app_mock, FullNotAudibleState(), BackgroundState()); - state_ctrl_->SetRegularState(app_moved_to_full, FullNotAudibleState(), false); + state_ctrl_->SetRegularState( + app_moved_to_full, kDefaultWindowId, FullNotAudibleState(), false); } TEST_F( @@ -1851,7 +1924,7 @@ TEST_F( InsertApplication(limited_app); InsertApplication(full_app); - ExpectSuccesfullSetHmiState(app_moved_to_full, + ExpectSuccessfulSetHmiState(app_moved_to_full, app_moved_to_full_mock, BackgroundState(), FullAudibleState()); @@ -1862,7 +1935,8 @@ TEST_F( ExpectAppChangeHmiStateDueToConflictResolving( full_app, full_app_mock, FullNotAudibleState(), BackgroundState()); - state_ctrl_->SetRegularState(app_moved_to_full, FullAudibleState(), false); + state_ctrl_->SetRegularState( + app_moved_to_full, kDefaultWindowId, FullAudibleState(), false); } TEST_F( @@ -1888,7 +1962,7 @@ TEST_F( InsertApplication(limited_app); InsertApplication(full_app); - ExpectSuccesfullSetHmiState(app_moved_to_full, + ExpectSuccessfulSetHmiState(app_moved_to_full, app_moved_to_full_mock, BackgroundState(), FullAudibleState()); @@ -1899,7 +1973,8 @@ TEST_F( ExpectAppChangeHmiStateDueToConflictResolving( full_app, full_app_mock, FullAudibleState(), LimitedState()); - state_ctrl_->SetRegularState(app_moved_to_full, FullAudibleState(), false); + state_ctrl_->SetRegularState( + app_moved_to_full, kDefaultWindowId, FullAudibleState(), false); } TEST_F(StateControllerImplTest, @@ -1912,19 +1987,20 @@ TEST_F(StateControllerImplTest, InsertApplication(media_app_); InsertApplication(navi_app_); InsertApplication(vc_app_); - ExpectSuccesfullSetHmiState(media_navi_vc_app_, + ExpectSuccessfulSetHmiState(media_navi_vc_app_, media_navi_vc_app_ptr_, BackgroundState(), FullAudibleState()); - EXPECT_CALL(*media_app_ptr_, RegularHmiState()) + EXPECT_CALL(*media_app_ptr_, RegularHmiState(kDefaultWindowId)) .WillOnce(Return(LimitedState())); ExpectAppChangeHmiStateDueToConflictResolving( navi_app_, navi_app_ptr_, LimitedState(), BackgroundState()); ExpectAppChangeHmiStateDueToConflictResolving( vc_app_, vc_app_ptr_, LimitedState(), BackgroundState()); - state_ctrl_->SetRegularState(media_navi_vc_app_, FullAudibleState(), false); + state_ctrl_->SetRegularState( + media_navi_vc_app_, kDefaultWindowId, FullAudibleState(), false); } TEST_F(StateControllerImplTest, @@ -1937,19 +2013,20 @@ TEST_F(StateControllerImplTest, InsertApplication(media_app_); InsertApplication(navi_app_); InsertApplication(vc_app_); - ExpectSuccesfullSetHmiState(media_navi_vc_app_, + ExpectSuccessfulSetHmiState(media_navi_vc_app_, media_navi_vc_app_ptr_, BackgroundState(), FullAudibleState()); - EXPECT_CALL(*media_app_ptr_, RegularHmiState()) + EXPECT_CALL(*media_app_ptr_, RegularHmiState(kDefaultWindowId)) .WillOnce(Return(LimitedState())); ExpectAppChangeHmiStateDueToConflictResolving( navi_app_, navi_app_ptr_, LimitedState(), BackgroundState()); ExpectAppChangeHmiStateDueToConflictResolving( vc_app_, vc_app_ptr_, FullAudibleState(), BackgroundState()); - state_ctrl_->SetRegularState(media_navi_vc_app_, FullAudibleState(), false); + state_ctrl_->SetRegularState( + media_navi_vc_app_, kDefaultWindowId, FullAudibleState(), false); } // TODO {AKozoriz} Changed logic in state_controller @@ -1969,12 +2046,6 @@ TEST_F(StateControllerImplTest, DISABLED_ActivateAppSuccessReceivedFromHMI) { StateLevelPair(LimitedState(), Common_HMILevel::LIMITED)); hmi_states.push_back( StateLevelPair(BackgroundState(), Common_HMILevel::BACKGROUND)); - hmi_states.push_back( - StateLevelPair(createHmiState(HMILevel::HMI_NONE, - AudioStreamingState::NOT_AUDIBLE, - VideoStreamingState::NOT_STREAMABLE, - SystemContext::SYSCTXT_MAIN), - Common_HMILevel::NONE)); std::vector<StateLevelPair> initial_hmi_states = hmi_states; std::vector<StateLevelPair>::iterator it = hmi_states.begin(); std::vector<StateLevelPair>::iterator it2 = initial_hmi_states.begin(); @@ -1998,9 +2069,9 @@ TEST_F(StateControllerImplTest, DISABLED_ActivateAppSuccessReceivedFromHMI) { .WillOnce(Return(hmi_app_id)); EXPECT_CALL(app_manager_mock_, application_by_hmi_app(hmi_app_id)) .WillOnce(Return(media_app_)); - ExpectSuccesfullSetHmiState( + ExpectSuccessfulSetHmiState( media_app_, media_app_ptr_, initial_hmi_state, hmi_state); - state_ctrl_->SetRegularState(media_app_, hmi_state, true); + state_ctrl_->SetRegularState(media_app_, kDefaultWindowId, hmi_state, true); smart_objects::SmartObject message; message[am::strings::params][am::hmi_response::code] = Common_Result::SUCCESS; @@ -2056,9 +2127,10 @@ TEST_F(StateControllerImplTest, SendEventBCActivateApp_HMIReceivesError) { EXPECT_CALL(app_manager_mock_, application_by_hmi_app(hmi_app_id)) .WillOnce(Return(simple_app_)); - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()).Times(0); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()).Times(0); - EXPECT_CALL(*simple_app_ptr_, SetRegularState(_)).Times(0); + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)).Times(0); + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)).Times(0); + EXPECT_CALL(*simple_app_ptr_, SetRegularState(kDefaultWindowId, _)) + .Times(0); EXPECT_CALL(app_manager_mock_, SendHMIStatusNotification(simple_app_)) .Times(0); @@ -2084,13 +2156,14 @@ TEST_F(StateControllerImplTest, ActivateAppInvalidCorrelationId) { .WillOnce(Return(hmi_app_id)); EXPECT_CALL(app_manager_mock_, application_by_hmi_app(hmi_app_id)) .WillOnce(Return(am::ApplicationSharedPtr())); - EXPECT_CALL(*simple_app_ptr_, SetRegularState(_)).Times(0); + EXPECT_CALL(*simple_app_ptr_, SetRegularState(kDefaultWindowId, _)).Times(0); EXPECT_CALL(app_manager_mock_, SendHMIStatusNotification(simple_app_)) .Times(0); EXPECT_CALL(app_manager_mock_, OnHMILevelChanged(simple_app_->app_id(), _, _)) .Times(0); SetBCActivateAppRequestToHMI(Common_HMILevel::FULL, corr_id); - state_ctrl_->SetRegularState(simple_app_, FullNotAudibleState(), true); + state_ctrl_->SetRegularState( + simple_app_, kDefaultWindowId, FullNotAudibleState(), true); smart_objects::SmartObject message; message[am::strings::params][am::hmi_response::code] = Common_Result::SUCCESS; message[am::strings::params][am::strings::correlation_id] = corr_id; @@ -2516,43 +2589,43 @@ TEST_F(StateControllerImplTest, SetRegularStateWithNewHmiLvl) { using namespace mobile_apis; HMILevel::eType set_lvl = HMILevel::HMI_NONE; - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()) + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) .WillOnce(Return(BackgroundState())); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(BackgroundState())) .WillOnce(Return(BackgroundState())); - state_ctrl_->SetRegularState(simple_app_, set_lvl); + state_ctrl_->SetRegularState(simple_app_, kDefaultWindowId, set_lvl); set_lvl = HMILevel::HMI_LIMITED; - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()) + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) .WillOnce(Return(BackgroundState())); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(BackgroundState())) .WillOnce(Return(BackgroundState())); - state_ctrl_->SetRegularState(simple_app_, set_lvl); + state_ctrl_->SetRegularState(simple_app_, kDefaultWindowId, set_lvl); set_lvl = HMILevel::HMI_FULL; - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()) + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) .WillOnce(Return(BackgroundState())); const uint32_t corr_id = 314; SetBCActivateAppRequestToHMI( static_cast<hmi_apis::Common_HMILevel::eType>(set_lvl), corr_id); - state_ctrl_->SetRegularState(simple_app_, set_lvl); + state_ctrl_->SetRegularState(simple_app_, kDefaultWindowId, set_lvl); set_lvl = HMILevel::HMI_BACKGROUND; - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()) + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) .WillOnce(Return(BackgroundState())); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(BackgroundState())) .WillOnce(Return(BackgroundState())); - state_ctrl_->SetRegularState(simple_app_, set_lvl); + state_ctrl_->SetRegularState(simple_app_, kDefaultWindowId, set_lvl); } TEST_F(StateControllerImplTest, SetRegularStateWithAudioStateAudible) { @@ -2562,16 +2635,18 @@ TEST_F(StateControllerImplTest, SetRegularStateWithAudioStateAudible) { AudioStreamingState::AUDIBLE, VideoStreamingState::STREAMABLE, SystemContext::SYSCTXT_MAIN); - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()) + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) .WillRepeatedly(Return(BackgroundState())); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(check_state)) .WillOnce(Return(check_state)); EXPECT_CALL(*simple_app_ptr_, - SetRegularState(Truly(HmiStatesComparator(check_state)))); + SetRegularState(kDefaultWindowId, + Truly(HmiStatesComparator(check_state)))); state_ctrl_->SetRegularState(simple_app_, + kDefaultWindowId, AudioStreamingState::AUDIBLE, VideoStreamingState::STREAMABLE); } @@ -2588,23 +2663,27 @@ TEST_F(StateControllerImplTest, // Non-media app can't have LIMITED-AUDIO state EXPECT_CALL(*simple_app_ptr_, is_resuming()).WillRepeatedly(Return(true)); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()).Times(0); - EXPECT_CALL(*simple_app_ptr_, SetRegularState(_)).Times(0); + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)).Times(0); + EXPECT_CALL(*simple_app_ptr_, SetRegularState(kDefaultWindowId, _)).Times(0); EXPECT_CALL(app_manager_mock_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(mobile_apis::HMILevel::HMI_NONE)); EXPECT_CALL(app_manager_mock_, active_application()) .WillRepeatedly(Return(am::ApplicationSharedPtr())); EXPECT_CALL(*simple_app_ptr_, - SetPostponedState(Truly(HmiStatesComparator(check_state)))); - state_ctrl_->SetRegularState(simple_app_, check_state, false); + SetPostponedState(kDefaultWindowId, + Truly(HmiStatesComparator(check_state)))); + state_ctrl_->SetRegularState( + simple_app_, kDefaultWindowId, check_state, false); check_state = LimitedState(); EXPECT_CALL(*media_app_ptr_, is_resuming()).WillRepeatedly(Return(true)); - EXPECT_CALL(*media_app_ptr_, CurrentHmiState()).Times(0); - EXPECT_CALL(*media_app_ptr_, SetRegularState(_)).Times(0); + EXPECT_CALL(*media_app_ptr_, CurrentHmiState(kDefaultWindowId)).Times(0); + EXPECT_CALL(*media_app_ptr_, SetRegularState(kDefaultWindowId, _)).Times(0); EXPECT_CALL(*media_app_ptr_, - SetPostponedState(Truly(HmiStatesComparator(check_state)))); - state_ctrl_->SetRegularState(media_app_, check_state, false); + SetPostponedState(kDefaultWindowId, + Truly(HmiStatesComparator(check_state)))); + state_ctrl_->SetRegularState( + media_app_, kDefaultWindowId, check_state, false); } TEST_F(StateControllerImplTest, SetRegularStateMediaToNonMediaApp_VR_Stopped) { @@ -2621,7 +2700,7 @@ TEST_F(StateControllerImplTest, SetRegularStateMediaToNonMediaApp_VR_Stopped) { HmiStatePtr check_state = FullNotAudibleState(); // Non-media app can't have LIMITED-AUDIO state - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(check_state)) .WillOnce(Return(check_state)); @@ -2631,16 +2710,19 @@ TEST_F(StateControllerImplTest, SetRegularStateMediaToNonMediaApp_VR_Stopped) { SendOnResumeAudioSourceToHMI(simple_app_id_, _)) .Times(0); EXPECT_CALL(*simple_app_ptr_, - SetPostponedState(Truly(HmiStatesComparator(check_state)))) + SetPostponedState(kDefaultWindowId, + Truly(HmiStatesComparator(check_state)))) .Times(0); EXPECT_CALL(*simple_app_ptr_, - SetRegularState(Truly(HmiStatesComparator(check_state)))); - state_ctrl_->SetRegularState(simple_app_, check_state, false); + SetRegularState(kDefaultWindowId, + Truly(HmiStatesComparator(check_state)))); + state_ctrl_->SetRegularState( + simple_app_, kDefaultWindowId, check_state, false); // Set state of media app after vr has stopped check_state = LimitedState(); - EXPECT_CALL(*media_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*media_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(check_state)) .WillOnce(Return(check_state)); @@ -2649,11 +2731,14 @@ TEST_F(StateControllerImplTest, SetRegularStateMediaToNonMediaApp_VR_Stopped) { EXPECT_CALL(message_helper_mock_, SendOnResumeAudioSourceToHMI(media_app_id_, _)); EXPECT_CALL(*media_app_ptr_, - SetPostponedState(Truly(HmiStatesComparator(check_state)))) + SetPostponedState(kDefaultWindowId, + Truly(HmiStatesComparator(check_state)))) .Times(0); EXPECT_CALL(*media_app_ptr_, - SetRegularState(Truly(HmiStatesComparator(check_state)))); - state_ctrl_->SetRegularState(media_app_, check_state, false); + SetRegularState(kDefaultWindowId, + Truly(HmiStatesComparator(check_state)))); + state_ctrl_->SetRegularState( + media_app_, kDefaultWindowId, check_state, false); } TEST_F(StateControllerImplTest, @@ -2676,28 +2761,32 @@ TEST_F(StateControllerImplTest, HmiStatePtr check_state = FullNotAudibleState(); EXPECT_CALL(*simple_app_ptr_, is_resuming()).WillRepeatedly(Return(true)); - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()).Times(0); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()).Times(0); - EXPECT_CALL(*simple_app_ptr_, SetRegularState(_)).Times(0); + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)).Times(0); + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)).Times(0); + EXPECT_CALL(*simple_app_ptr_, SetRegularState(kDefaultWindowId, _)).Times(0); EXPECT_CALL(app_manager_mock_, GetDefaultHmiLevel(_)) .WillRepeatedly(Return(mobile_apis::HMILevel::HMI_NONE)); EXPECT_CALL(app_manager_mock_, active_application()) .WillRepeatedly(Return(am::ApplicationSharedPtr())); EXPECT_CALL(*simple_app_ptr_, - SetPostponedState(Truly(HmiStatesComparator(check_state)))); - state_ctrl_->SetRegularState(simple_app_, check_state, false); + SetPostponedState(kDefaultWindowId, + Truly(HmiStatesComparator(check_state)))); + state_ctrl_->SetRegularState( + simple_app_, kDefaultWindowId, check_state, false); // Set media app check_state = LimitedState(); EXPECT_CALL(*media_app_ptr_, is_resuming()).WillRepeatedly(Return(true)); - EXPECT_CALL(*media_app_ptr_, RegularHmiState()).Times(0); - EXPECT_CALL(*media_app_ptr_, CurrentHmiState()).Times(0); - EXPECT_CALL(*media_app_ptr_, SetRegularState(_)).Times(0); + EXPECT_CALL(*media_app_ptr_, RegularHmiState(kDefaultWindowId)).Times(0); + EXPECT_CALL(*media_app_ptr_, CurrentHmiState(kDefaultWindowId)).Times(0); + EXPECT_CALL(*media_app_ptr_, SetRegularState(kDefaultWindowId, _)).Times(0); EXPECT_CALL(*media_app_ptr_, - SetPostponedState(Truly(HmiStatesComparator(check_state)))); - state_ctrl_->SetRegularState(media_app_, check_state, false); + SetPostponedState(kDefaultWindowId, + Truly(HmiStatesComparator(check_state)))); + state_ctrl_->SetRegularState( + media_app_, kDefaultWindowId, check_state, false); } TEST_F(StateControllerImplTest, @@ -2730,8 +2819,10 @@ TEST_F(StateControllerImplTest, .WillRepeatedly(Return(am::ApplicationSharedPtr())); EXPECT_CALL(*media_app_ptr_, - SetPostponedState(Truly(HmiStatesComparator(check_state)))); - state_ctrl_->SetRegularState(media_app_, check_state, false); + SetPostponedState(kDefaultWindowId, + Truly(HmiStatesComparator(check_state)))); + state_ctrl_->SetRegularState( + media_app_, kDefaultWindowId, check_state, false); } TEST_F(StateControllerImplTest, @@ -2759,13 +2850,13 @@ TEST_F(StateControllerImplTest, EXPECT_CALL(app_manager_mock_, IsAppTypeExistsInFullOrLimited(_)) .WillRepeatedly(Return(false)); - EXPECT_CALL(*navi_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*navi_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillRepeatedly(Return(hmi_state)); EXPECT_CALL(app_manager_mock_, active_application()) .WillRepeatedly(Return(am::ApplicationSharedPtr())); - state_ctrl_->SetRegularState(navi_app_, hmi_state, false); + state_ctrl_->SetRegularState(navi_app_, kDefaultWindowId, hmi_state, false); } TEST_F(StateControllerImplTest, @@ -2793,15 +2884,15 @@ TEST_F(StateControllerImplTest, EXPECT_CALL(app_manager_mock_, IsAppTypeExistsInFullOrLimited(_)) .WillRepeatedly(Return(false)); - EXPECT_CALL(*navi_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*navi_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillRepeatedly(Return(hmi_state)); EXPECT_CALL(app_manager_mock_, active_application()) .WillRepeatedly(Return(am::ApplicationSharedPtr())); - EXPECT_CALL(*navi_app_ptr_, SetPostponedState(_)).Times(0); + EXPECT_CALL(*navi_app_ptr_, SetPostponedState(kDefaultWindowId, _)).Times(0); - state_ctrl_->SetRegularState(navi_app_, hmi_state, false); + state_ctrl_->SetRegularState(navi_app_, kDefaultWindowId, hmi_state, false); } TEST_F(StateControllerImplTest, @@ -2809,7 +2900,6 @@ TEST_F(StateControllerImplTest, using namespace hmi_apis; using namespace smart_objects; using namespace am::event_engine; - using namespace constants; const uint32_t app_id = navi_app_->app_id(); // Precondition @@ -2833,13 +2923,13 @@ TEST_F(StateControllerImplTest, EXPECT_CALL(app_manager_mock_, IsAppTypeExistsInFullOrLimited(_)) .WillRepeatedly(Return(false)); - EXPECT_CALL(*navi_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*navi_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillRepeatedly(Return(hmi_state)); EXPECT_CALL(app_manager_mock_, active_application()) .WillRepeatedly(Return(am::ApplicationSharedPtr())); - state_ctrl_->SetRegularState(navi_app_, hmi_state, true); + state_ctrl_->SetRegularState(navi_app_, kDefaultWindowId, hmi_state, true); } TEST_F(StateControllerImplTest, @@ -2847,7 +2937,6 @@ TEST_F(StateControllerImplTest, using namespace hmi_apis; using namespace smart_objects; using namespace am::event_engine; - using namespace constants; const uint32_t app_id = navi_app_->app_id(); // Precondition @@ -2871,15 +2960,15 @@ TEST_F(StateControllerImplTest, EXPECT_CALL(app_manager_mock_, IsAppTypeExistsInFullOrLimited(_)) .WillRepeatedly(Return(false)); - EXPECT_CALL(*navi_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*navi_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillRepeatedly(Return(hmi_state)); EXPECT_CALL(app_manager_mock_, active_application()) .WillRepeatedly(Return(am::ApplicationSharedPtr())); - EXPECT_CALL(*navi_app_ptr_, SetPostponedState(_)).Times(0); + EXPECT_CALL(*navi_app_ptr_, SetPostponedState(kDefaultWindowId, _)).Times(0); - state_ctrl_->SetRegularState(navi_app_, hmi_state, true); + state_ctrl_->SetRegularState(navi_app_, kDefaultWindowId, hmi_state, true); } TEST_F(StateControllerImplTest, @@ -2900,13 +2989,16 @@ TEST_F(StateControllerImplTest, EXPECT_CALL(*simple_app_ptr_, keep_context()).WillOnce(Return(true)); EXPECT_CALL(*simple_app_ptr_, IsAudioApplication()) .WillRepeatedly(Return(true)); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(FullAudibleState())); EXPECT_CALL(*simple_app_ptr_, set_keep_context(false)); HmiStatePtr new_state; - EXPECT_CALL(*simple_app_ptr_, AddHMIState(_)) - .WillOnce(SaveArg<0>(&new_state)); + EXPECT_CALL(*simple_app_ptr_, AddHMIState(kDefaultWindowId, _)) + .WillOnce(SaveArg<1>(&new_state)); + + am::WindowIds window_ids = {kDefaultWindowId}; + EXPECT_CALL(*simple_app_ptr_, GetWindowIds()).WillOnce(Return(window_ids)); state_ctrl_->on_event(event); @@ -2931,12 +3023,15 @@ TEST_F(StateControllerImplTest, OnEventChangedAudioSourceAppToBackground) { EXPECT_CALL(*simple_app_ptr_, IsAudioApplication()) .WillRepeatedly(Return(true)); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(LimitedState())); HmiStatePtr new_state; - EXPECT_CALL(*simple_app_ptr_, AddHMIState(_)) - .WillOnce(SaveArg<0>(&new_state)); + EXPECT_CALL(*simple_app_ptr_, AddHMIState(kDefaultWindowId, _)) + .WillOnce(SaveArg<1>(&new_state)); + + am::WindowIds window_ids = {kDefaultWindowId}; + EXPECT_CALL(*simple_app_ptr_, GetWindowIds()).WillOnce(Return(window_ids)); state_ctrl_->on_event(event); @@ -2955,9 +3050,13 @@ TEST_F(StateControllerImplTest, OnEventOnAppDeactivatedIncorrectHmiLevel) { event.set_smart_object(msg); EXPECT_CALL(app_manager_mock_, application(app_id)) .WillOnce(Return(simple_app_)); - EXPECT_CALL(*simple_app_ptr_, hmi_level()) + EXPECT_CALL(*simple_app_ptr_, hmi_level(kDefaultWindowId)) .WillOnce(Return(mobile_apis::HMILevel::HMI_BACKGROUND)); - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()).Times(0); + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)).Times(0); + + am::WindowIds window_ids = {kDefaultWindowId}; + EXPECT_CALL(*simple_app_ptr_, GetWindowIds()).WillOnce(Return(window_ids)); + state_ctrl_->on_event(event); } @@ -2971,7 +3070,7 @@ TEST_F(StateControllerImplTest, OnEventOnAppDeactivatedIncorrectApp) { const am::ApplicationSharedPtr incorrect_app; EXPECT_CALL(app_manager_mock_, application(_)) .WillOnce(Return(incorrect_app)); - EXPECT_CALL(*simple_app_ptr_, hmi_level()).Times(0); + EXPECT_CALL(*simple_app_ptr_, hmi_level(kDefaultWindowId)).Times(0); state_ctrl_->on_event(event); } @@ -2992,15 +3091,20 @@ TEST_F(StateControllerImplTest, OnEventOnAppDeactivatedAudioApplication) { EXPECT_CALL(app_manager_mock_, application(app_id)) .WillOnce(Return(simple_app_)); EXPECT_CALL(*simple_app_ptr_, app_id()).WillRepeatedly(Return(app_id)); - EXPECT_CALL(*simple_app_ptr_, hmi_level()) + EXPECT_CALL(*simple_app_ptr_, hmi_level(kDefaultWindowId)) .WillRepeatedly(Return(mobile_apis::HMILevel::HMI_FULL)); // DeactivateApp - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()).WillOnce(Return(state)); + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) + .WillOnce(Return(state)); EXPECT_CALL(*simple_app_ptr_, IsAudioApplication()) .WillRepeatedly(Return(true)); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(BackgroundState())) .WillOnce(Return(BackgroundState())); + + am::WindowIds window_ids = {kDefaultWindowId}; + EXPECT_CALL(*simple_app_ptr_, GetWindowIds()).WillOnce(Return(window_ids)); + state_ctrl_->on_event(event); } @@ -3021,16 +3125,21 @@ TEST_F(StateControllerImplTest, OnEventOnAppDeactivatedNotAudioApplication) { EXPECT_CALL(app_manager_mock_, application(app_id)) .WillOnce(Return(simple_app_)); EXPECT_CALL(*simple_app_ptr_, app_id()).WillRepeatedly(Return(app_id)); - EXPECT_CALL(*simple_app_ptr_, hmi_level()) + EXPECT_CALL(*simple_app_ptr_, hmi_level(kDefaultWindowId)) .WillRepeatedly(Return(mobile_apis::HMILevel::HMI_FULL)); // DeactivateApp - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()).WillOnce(Return(state)); + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) + .WillOnce(Return(state)); EXPECT_CALL(*simple_app_ptr_, IsAudioApplication()) .WillRepeatedly(Return(false)); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillOnce(Return(BackgroundState())) .WillOnce(Return(BackgroundState())); + + am::WindowIds window_ids = {kDefaultWindowId}; + EXPECT_CALL(*simple_app_ptr_, GetWindowIds()).WillOnce(Return(window_ids)); + state_ctrl_->on_event(event); } @@ -3050,25 +3159,35 @@ TEST_F(StateControllerImplTest, OnEventOnAppActivatedIncorrectApp) { } TEST_F(StateControllerImplTest, OnEventOnAppActivated) { - using namespace constants; - smart_objects::SmartObject msg; - for (std::vector<am::ApplicationSharedPtr>::const_iterator it = - applications_list_.begin(); + am::WindowIds window_ids = {kDefaultWindowId}; + + for (AppPtrMockMapping::const_iterator it = applications_list_.begin(); it != applications_list_.end(); ++it) { - uint32_t app_id = (*it)->app_id(); + uint32_t app_id = it->first->app_id(); msg[am::strings::msg_params][am::strings::app_id] = app_id; const hmi_apis::FunctionID::eType event_id = hmi_apis::FunctionID::BasicCommunication_OnAppActivated; am::event_engine::Event event(event_id); event.set_smart_object(msg); - EXPECT_CALL(app_manager_mock_, application(app_id)).WillOnce(Return(*it)); + EXPECT_CALL(app_manager_mock_, application(app_id)) + .WillOnce(Return(it->first)); // SetRegularState - EXPECT_CALL(*simple_app_ptr_, app_id()).WillRepeatedly(Return(app_id)); - EXPECT_CALL(*simple_app_ptr_, IsAudioApplication()) - .WillRepeatedly(Return(true)); + EXPECT_CALL(*it->second, app_id()).WillRepeatedly(Return(app_id)); + EXPECT_CALL(*it->second, IsAudioApplication()).WillRepeatedly(Return(true)); + EXPECT_CALL(*it->second, GetWindowIds()).WillOnce(Return(window_ids)); + + const am::HmiStatePtr old_state = + CreateHmiStateByHmiStateType<am::HmiState>( + mobile_apis::HMILevel::HMI_NONE, + mobile_apis::AudioStreamingState::NOT_AUDIBLE, + mobile_apis::VideoStreamingState::NOT_STREAMABLE, + mobile_apis::SystemContext::SYSCTXT_MAIN, + simple_app_); + EXPECT_CALL(*it->second, RegularHmiState(kDefaultWindowId)) + .WillOnce(Return(old_state)); smart_objects::SmartObjectSPtr activate_app = std::make_shared<smart_objects::SmartObject>(); @@ -3149,9 +3268,9 @@ TEST_F(StateControllerImplTest, OnApplicationRegisteredDifferentStates) { simple_app_); EXPECT_CALL(*simple_app_ptr_, app_id()).WillRepeatedly(Return(app_id)); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillRepeatedly(Return(old_state)); - EXPECT_CALL(*simple_app_ptr_, AddHMIState(_)).Times(4); + EXPECT_CALL(*simple_app_ptr_, AddHMIState(kDefaultWindowId, _)).Times(4); const am::HmiStatePtr default_state = CreateHmiStateByHmiStateType<am::HmiState>( @@ -3161,12 +3280,14 @@ TEST_F(StateControllerImplTest, OnApplicationRegisteredDifferentStates) { mobile_apis::SystemContext::SYSCTXT_MAIN, simple_app_); - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()).WillOnce(Return(old_state)); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) + .WillOnce(Return(old_state)); + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillRepeatedly(Return(default_state)); EXPECT_CALL(*simple_app_ptr_, ResetDataInNone()).Times(0); - EXPECT_CALL(app_manager_mock_, SendHMIStatusNotification(_)); + EXPECT_CALL(message_helper_mock_, + SendHMIStatusNotification(simple_app_, kDefaultWindowId, _)); EXPECT_CALL(app_manager_mock_, OnHMILevelChanged(_, _, _)); state_ctrl_->OnApplicationRegistered(simple_app_, @@ -3200,9 +3321,9 @@ TEST_F(StateControllerImplTest, OnApplicationRegisteredEqualStates) { simple_app_); EXPECT_CALL(*simple_app_ptr_, app_id()).WillRepeatedly(Return(app_id)); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillRepeatedly(Return(old_state)); - EXPECT_CALL(*simple_app_ptr_, AddHMIState(_)).Times(2); + EXPECT_CALL(*simple_app_ptr_, AddHMIState(kDefaultWindowId, _)).Times(2); const am::HmiStatePtr default_state = CreateHmiStateByHmiStateType<am::HmiState>( @@ -3211,9 +3332,9 @@ TEST_F(StateControllerImplTest, OnApplicationRegisteredEqualStates) { mobile_apis::VideoStreamingState::NOT_STREAMABLE, mobile_apis::SystemContext::SYSCTXT_MAIN, simple_app_); - EXPECT_CALL(*simple_app_ptr_, RegularHmiState()) + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) .WillOnce(Return(default_state)); - EXPECT_CALL(*simple_app_ptr_, CurrentHmiState()) + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kDefaultWindowId)) .WillRepeatedly(Return(default_state)); EXPECT_CALL(*simple_app_ptr_, ResetDataInNone()).Times(0); @@ -3224,6 +3345,328 @@ TEST_F(StateControllerImplTest, OnApplicationRegisteredEqualStates) { mobile_apis::HMILevel::HMI_BACKGROUND); } +TEST_F( + StateControllerImplTest, + SetRegularState_AppIsResumingAndAudioSourceIsActive_HmiStateIsNotChanged) { + am::event_engine::Event audio_source_event( + hmi_apis::FunctionID::BasicCommunication_OnEventChanged); + smart_objects::SmartObject message; + message[am::strings::msg_params][am::hmi_notification::is_active] = true; + message[am::strings::msg_params][am::hmi_notification::event_name] = + hmi_apis::Common_EventTypes::AUDIO_SOURCE; + audio_source_event.set_smart_object(message); + state_ctrl_->on_event(audio_source_event); + + EXPECT_CALL(*media_app_ptr_, is_resuming()).WillRepeatedly(Return(true)); + EXPECT_CALL(*media_app_ptr_, SetRegularState(_, _)).Times(0); + + const am::HmiStatePtr new_state = FullAudibleState(); + const bool send_activate_app = true; + state_ctrl_->SetRegularState( + media_app_, kDefaultWindowId, new_state, send_activate_app); +} + +TEST_F(StateControllerImplTest, + SetRegularState_BcActivateAppSendFailed_HmiLevelIsNotChanged) { + const am::HmiStatePtr new_state = FullAudibleState(); + SetBCActivateAppRequestToHMI( + static_cast<hmi_apis::Common_HMILevel::eType>(new_state->hmi_level()), + kCorrID); + + smart_objects::SmartObjectSPtr bc_activate_app_request; + EXPECT_CALL(message_helper_mock_, GetBCActivateAppRequestToHMI(_, _, _, _, _)) + .WillOnce(Return(bc_activate_app_request)); + EXPECT_CALL(*simple_app_ptr_, SetRegularState(_, _)).Times(0); + + const bool send_activate_app = true; + state_ctrl_->SetRegularState( + simple_app_, kDefaultWindowId, new_state, send_activate_app); +} + +TEST_F(StateControllerImplTest, + SetRegularState_SetLevelAudioAndVideoState_HmiStateIsChanged) { + HmiStatePtr old_state = NoneNotAudibleState(); + HmiStatePtr new_state = BackgroundState(); + + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) + .WillOnce(Return(old_state)); + ExpectSuccessfulSetHmiState( + simple_app_, simple_app_ptr_, old_state, new_state); + + const bool send_activate_app = false; + state_ctrl_->SetRegularState(simple_app_, + kDefaultWindowId, + new_state->hmi_level(), + new_state->audio_streaming_state(), + new_state->video_streaming_state(), + send_activate_app); +} + +TEST_F(StateControllerImplTest, + SetRegularState_SetLevelAudioVideoStatesAndContext_HmiStateIsChanged) { + HmiStatePtr old_state = NoneNotAudibleState(); + HmiStatePtr new_state = BackgroundState(); + + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) + .WillOnce(Return(old_state)); + ExpectSuccessfulSetHmiState( + simple_app_, simple_app_ptr_, old_state, new_state); + + const bool send_activate_app = false; + state_ctrl_->SetRegularState(simple_app_, + kDefaultWindowId, + new_state->hmi_level(), + new_state->audio_streaming_state(), + new_state->video_streaming_state(), + new_state->system_context(), + send_activate_app); +} + +TEST_F(StateControllerImplTest, + SetRegularState_SetSystemContextOnly_HmiStateIsChanged) { + HmiStatePtr old_state = FullAudibleState(); + HmiStatePtr new_state = FullNotAudibleState(); + + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kDefaultWindowId)) + .WillOnce(Return(old_state)); + ExpectSuccessfulSetHmiState( + simple_app_, simple_app_ptr_, old_state, new_state); + + state_ctrl_->SetRegularState( + simple_app_, kDefaultWindowId, new_state->system_context()); +} + +TEST_F(StateControllerImplTest, + OnAppActivated_ActivateNotExistingWindow_HmiLevelIsNotChanged) { + InsertApplication(simple_app_); + + am::event_engine::Event activate_widget_event( + hmi_apis::FunctionID::BasicCommunication_OnAppActivated); + smart_objects::SmartObject message; + message[am::strings::msg_params][am::strings::app_id] = simple_app_id_; + message[am::strings::msg_params][am::strings::window_id] = kCustomWindowId; + activate_widget_event.set_smart_object(message); + + const am::WindowIds window_ids = {kDefaultWindowId}; + ON_CALL(*simple_app_ptr_, GetWindowIds()).WillByDefault(Return(window_ids)); + + ExpectAppWontChangeHmiStateDueToConflictResolving( + simple_app_, simple_app_ptr_, kCustomWindowId, NoneNotAudibleState()); + + state_ctrl_->on_event(activate_widget_event); +} + +TEST_F(StateControllerImplTest, + OnAppActivated_ActivateCustomWindow_HmiStateIsChanged) { + InsertApplication(simple_app_); + + am::event_engine::Event activate_widget_event( + hmi_apis::FunctionID::BasicCommunication_OnAppActivated); + smart_objects::SmartObject message; + message[am::strings::msg_params][am::strings::app_id] = simple_app_id_; + message[am::strings::msg_params][am::strings::window_id] = kCustomWindowId; + activate_widget_event.set_smart_object(message); + + const am::WindowIds window_ids = {kDefaultWindowId, kCustomWindowId}; + ON_CALL(*simple_app_ptr_, GetWindowIds()).WillByDefault(Return(window_ids)); + + std::vector<std::pair<HmiStatePtr, HmiStatePtr> > states_transition = { + std::make_pair(NoneNotAudibleState(), BackgroundState()), + std::make_pair(BackgroundState(), FullNotAudibleState())}; + + for (auto& states_pair : states_transition) { + HmiStatePtr old_state = states_pair.first; + HmiStatePtr new_state = states_pair.second; + + EXPECT_CALL(*simple_app_ptr_, hmi_level(kCustomWindowId)) + .WillOnce(Return(old_state->hmi_level())); + EXPECT_CALL(*simple_app_ptr_, audio_streaming_state()) + .WillOnce(Return(old_state->audio_streaming_state())); + EXPECT_CALL(*simple_app_ptr_, video_streaming_state()) + .WillOnce(Return(old_state->video_streaming_state())); + + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kCustomWindowId)) + .WillOnce(Return(old_state)); + ExpectSuccessfulSetHmiState( + simple_app_, simple_app_ptr_, kCustomWindowId, old_state, new_state); + + EXPECT_CALL(message_helper_mock_, + GetBCActivateAppRequestToHMI(_, _, _, _, _)) + .Times(0); + + state_ctrl_->on_event(activate_widget_event); + } +} + +TEST_F(StateControllerImplTest, + OnAppDeactivated_DeactivateNotExistingWindow_HmiStateIsNotChanged) { + InsertApplication(simple_app_); + + am::event_engine::Event activate_widget_event( + hmi_apis::FunctionID::BasicCommunication_OnAppDeactivated); + smart_objects::SmartObject message; + message[am::strings::msg_params][am::strings::app_id] = simple_app_id_; + message[am::strings::msg_params][am::strings::window_id] = kCustomWindowId; + activate_widget_event.set_smart_object(message); + + const am::WindowIds window_ids = {kDefaultWindowId}; + ON_CALL(*simple_app_ptr_, GetWindowIds()).WillByDefault(Return(window_ids)); + + ExpectAppWontChangeHmiStateDueToConflictResolving( + simple_app_, simple_app_ptr_, kCustomWindowId, FullNotAudibleState()); + + state_ctrl_->on_event(activate_widget_event); +} + +TEST_F(StateControllerImplTest, + OnAppDeactivated_DeactivateCustomWindow_HmiStateIsChanged) { + InsertApplication(simple_app_); + + am::event_engine::Event activate_widget_event( + hmi_apis::FunctionID::BasicCommunication_OnAppDeactivated); + smart_objects::SmartObject message; + message[am::strings::msg_params][am::strings::app_id] = simple_app_id_; + message[am::strings::msg_params][am::strings::window_id] = kCustomWindowId; + activate_widget_event.set_smart_object(message); + + const am::WindowIds window_ids = {kDefaultWindowId, kCustomWindowId}; + ON_CALL(*simple_app_ptr_, GetWindowIds()).WillByDefault(Return(window_ids)); + + std::vector<std::pair<HmiStatePtr, HmiStatePtr> > states_transition = { + std::make_pair(FullNotAudibleState(), BackgroundState()), + std::make_pair(BackgroundState(), NoneNotAudibleState())}; + + for (auto& states_pair : states_transition) { + HmiStatePtr old_state = states_pair.first; + HmiStatePtr new_state = states_pair.second; + + EXPECT_CALL(*simple_app_ptr_, hmi_level(kCustomWindowId)) + .WillOnce(Return(old_state->hmi_level())); + EXPECT_CALL(*simple_app_ptr_, audio_streaming_state()) + .WillOnce(Return(old_state->audio_streaming_state())); + EXPECT_CALL(*simple_app_ptr_, video_streaming_state()) + .WillOnce(Return(old_state->video_streaming_state())); + + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kCustomWindowId)) + .WillOnce(Return(old_state)); + ExpectSuccessfulSetHmiState( + simple_app_, simple_app_ptr_, kCustomWindowId, old_state, new_state); + + EXPECT_CALL(message_helper_mock_, + GetBCActivateAppRequestToHMI(_, _, _, _, _)) + .Times(0); + + state_ctrl_->on_event(activate_widget_event); + } +} + +TEST_F( + StateControllerImplTest, + ActivateDefaultWindow_AppWithWindowWasActivated_WindowStreamingStateIsUpdated) { + HmiStatePtr old_state = NoneNotAudibleState(); + HmiStatePtr new_state = FullAudibleState(); + + EXPECT_CALL(*media_app_ptr_, RegularHmiState(kDefaultWindowId)) + .WillOnce(Return(old_state)) + .WillRepeatedly(Return(new_state)); + ExpectSuccessfulSetHmiState( + media_app_, media_app_ptr_, kDefaultWindowId, old_state, new_state); + + const am::WindowIds window_ids = {kDefaultWindowId, kCustomWindowId}; + ON_CALL(*media_app_ptr_, GetWindowIds()).WillByDefault(Return(window_ids)); + + EXPECT_CALL(*media_app_ptr_, RegularHmiState(kCustomWindowId)) + .WillOnce(Return(old_state)); + + HmiStatePtr expected_window_state = NoneNotAudibleState(); + expected_window_state->set_audio_streaming_state( + new_state->audio_streaming_state()); + expected_window_state->set_video_streaming_state( + new_state->video_streaming_state()); + + EXPECT_CALL( + *media_app_ptr_, + SetRegularState(kCustomWindowId, + Truly(HmiStatesComparator(expected_window_state)))); + EXPECT_CALL(message_helper_mock_, + SendHMIStatusNotification(media_app_, kCustomWindowId, _)); + + state_ctrl_->ActivateDefaultWindow(media_app_); +} + +TEST_F(StateControllerImplTest, + ExitDefaultWindow_AppWithWindowWasExited_WindowStreamingStateIsUpdated) { + HmiStatePtr old_state = FullAudibleState(); + HmiStatePtr new_state = NoneNotAudibleState(); + + EXPECT_CALL(*media_app_ptr_, RegularHmiState(kDefaultWindowId)) + .WillOnce(Return(old_state)) + .WillRepeatedly(Return(new_state)); + ExpectSuccessfulSetHmiState( + media_app_, media_app_ptr_, kDefaultWindowId, old_state, new_state); + + const am::WindowIds window_ids = {kDefaultWindowId, kCustomWindowId}; + ON_CALL(*media_app_ptr_, GetWindowIds()).WillByDefault(Return(window_ids)); + + EXPECT_CALL(*media_app_ptr_, RegularHmiState(kCustomWindowId)) + .WillOnce(Return(old_state)); + + HmiStatePtr expected_window_state = FullAudibleState(); + expected_window_state->set_audio_streaming_state( + new_state->audio_streaming_state()); + expected_window_state->set_video_streaming_state( + new_state->video_streaming_state()); + + EXPECT_CALL( + *media_app_ptr_, + SetRegularState(kCustomWindowId, + Truly(HmiStatesComparator(expected_window_state)))); + EXPECT_CALL(message_helper_mock_, + SendHMIStatusNotification(media_app_, kCustomWindowId, _)); + + state_ctrl_->ExitDefaultWindow(media_app_); +} + +TEST_F(StateControllerImplTest, + OnAppWindowAdded_NewAppWindowWasAdded_HmiNotificationIsSent) { + am::event_engine::Event audio_source_event( + hmi_apis::FunctionID::BasicCommunication_OnEventChanged); + smart_objects::SmartObject message; + message[am::strings::msg_params][am::hmi_notification::is_active] = true; + message[am::strings::msg_params][am::hmi_notification::event_name] = + hmi_apis::Common_EventTypes::AUDIO_SOURCE; + audio_source_event.set_smart_object(message); + state_ctrl_->on_event(audio_source_event); + + HmiStatePtr initial_state = + createHmiState(mobile_apis::HMILevel::INVALID_ENUM, + mobile_apis::AudioStreamingState::INVALID_ENUM, + mobile_apis::VideoStreamingState::INVALID_ENUM, + mobile_apis::SystemContext::INVALID_ENUM); + HmiStatePtr expected_state = NoneNotAudibleState(); + + EXPECT_CALL(*simple_app_ptr_, + AddHMIState(kCustomWindowId, + Truly(HmiStatesIDComparator( + HmiState::StateID::STATE_ID_AUDIO_SOURCE)))); + EXPECT_CALL(*simple_app_ptr_, RegularHmiState(kCustomWindowId)) + .WillOnce(Return(initial_state)); + EXPECT_CALL(*simple_app_ptr_, + SetRegularState(kCustomWindowId, + Truly(HmiStatesComparator(expected_state)))); + EXPECT_CALL(*simple_app_ptr_, CurrentHmiState(kCustomWindowId)) + .WillOnce(Return(initial_state)) + .WillOnce(Return(expected_state)); + EXPECT_CALL(message_helper_mock_, + SendHMIStatusNotification(simple_app_, kCustomWindowId, _)); + EXPECT_CALL(app_manager_mock_, OnHMILevelChanged(_, _, _)).Times(0); + + state_ctrl_->OnAppWindowAdded(simple_app_, + kCustomWindowId, + mobile_apis::WindowType::WIDGET, + mobile_apis::HMILevel::HMI_NONE); +} + } // namespace state_controller_test } // namespace components } // namespace test |