From 560842b5721ecf99502211441854b6762bf8c1ab Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 29 Jan 2018 18:07:23 +0100 Subject: [PATCH] Add TerminationFailed state to ChatRoom. --- include/linphone/enums/chat-room-enums.h | 3 ++- src/chat/chat-room/client-group-chat-room.cpp | 10 ++++++++-- tester/group_chat_tester.c | 11 +++++++++-- tester/liblinphone_tester.h | 3 ++- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/include/linphone/enums/chat-room-enums.h b/include/linphone/enums/chat-room-enums.h index 0f20820d3..7a9459b9c 100644 --- a/include/linphone/enums/chat-room-enums.h +++ b/include/linphone/enums/chat-room-enums.h @@ -27,9 +27,10 @@ F(Instantiated) \ F(CreationPending) \ F(Created) \ + F(CreationFailed) \ F(TerminationPending) \ F(Terminated) \ - F(CreationFailed) \ + F(TerminationFailed) \ F(Deleted) #define L_ENUM_VALUES_CHAT_ROOM_CAPABILITIES(F) \ diff --git a/src/chat/chat-room/client-group-chat-room.cpp b/src/chat/chat-room/client-group-chat-room.cpp index 7bbcbf1b7..71ec0cd91 100644 --- a/src/chat/chat-room/client-group-chat-room.cpp +++ b/src/chat/chat-room/client-group-chat-room.cpp @@ -147,8 +147,14 @@ void ClientGroupChatRoomPrivate::onCallSessionStateChanged ( qConference->getPrivate()->focus->getPrivate()->getSession()->terminate(); } else if ((newState == CallSession::State::Released) && (q->getState() == ChatRoom::State::TerminationPending)) { q->onConferenceTerminated(q->getConferenceAddress()); - } else if ((newState == CallSession::State::Error) && (q->getState() == ChatRoom::State::CreationPending)) { - setState(ChatRoom::State::CreationFailed); + } else if (newState == CallSession::State::Error) { + if (q->getState() == ChatRoom::State::CreationPending) + setState(ChatRoom::State::CreationFailed); + else if (q->getState() == ChatRoom::State::TerminationPending) { + // Go to state TerminationFailed and then back to Created since it has not been terminated + setState(ChatRoom::State::TerminationFailed); + setState(ChatRoom::State::Created); + } } } diff --git a/tester/group_chat_tester.c b/tester/group_chat_tester.c index 38518bbdf..ed036a1b9 100644 --- a/tester/group_chat_tester.c +++ b/tester/group_chat_tester.c @@ -74,14 +74,17 @@ static void chat_room_state_changed (LinphoneChatRoom *cr, LinphoneChatRoomState case LinphoneChatRoomStateCreated: manager->stat.number_of_LinphoneChatRoomStateCreated++; break; + case LinphoneChatRoomStateCreationFailed: + manager->stat.number_of_LinphoneChatRoomStateCreationFailed++; + break; case LinphoneChatRoomStateTerminationPending: manager->stat.number_of_LinphoneChatRoomStateTerminationPending++; break; case LinphoneChatRoomStateTerminated: manager->stat.number_of_LinphoneChatRoomStateTerminated++; break; - case LinphoneChatRoomStateCreationFailed: - manager->stat.number_of_LinphoneChatRoomStateCreationFailed++; + case LinphoneChatRoomStateTerminationFailed: + manager->stat.number_of_LinphoneChatRoomStateTerminationFailed++; break; case LinphoneChatRoomStateDeleted: manager->stat.number_of_LinphoneChatRoomStateDeleted++; @@ -2084,6 +2087,8 @@ static void group_chat_room_unique_one_to_one_chat_room (void) { // Marie deletes the chat room linphone_core_manager_delete_chat_room(marie, marieCr, coresList); + wait_for_list(coresList, 0, 1, 2000); + BC_ASSERT_EQUAL(pauline->stat.number_of_participants_removed, initialPaulineStats.number_of_participants_removed, int, "%d"); // Marie creates the chat room again initialMarieStats = marie->stat; @@ -2146,6 +2151,8 @@ static void group_chat_room_unique_one_to_one_chat_room_recreated_from_message ( // Marie deletes the chat room linphone_core_manager_delete_chat_room(marie, marieCr, coresList); + wait_for_list(coresList, 0, 1, 2000); + BC_ASSERT_EQUAL(pauline->stat.number_of_participants_removed, initialPaulineStats.number_of_participants_removed, int, "%d"); // Pauline sends a new message initialMarieStats = marie->stat; diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h index 798d07d63..11b963195 100644 --- a/tester/liblinphone_tester.h +++ b/tester/liblinphone_tester.h @@ -186,9 +186,10 @@ typedef struct _stats { int number_of_LinphoneChatRoomStateInstantiated; int number_of_LinphoneChatRoomStateCreationPending; int number_of_LinphoneChatRoomStateCreated; + int number_of_LinphoneChatRoomStateCreationFailed; int number_of_LinphoneChatRoomStateTerminationPending; int number_of_LinphoneChatRoomStateTerminated; - int number_of_LinphoneChatRoomStateCreationFailed; + int number_of_LinphoneChatRoomStateTerminationFailed; int number_of_LinphoneChatRoomStateDeleted; int number_of_IframeDecoded;