[core] address review comments for message deletion explanation

This commit is contained in:
Torsten Grote
2019-11-14 13:46:28 -03:00
parent ae0fa351b6
commit 5aeee9af8b
10 changed files with 101 additions and 118 deletions

View File

@@ -899,17 +899,15 @@ public class ConversationActivity extends BriarActivity
StringBuilder msg = new StringBuilder(); StringBuilder msg = new StringBuilder();
// get failures the user can not immediately prevent // get failures the user can not immediately prevent
StringBuilder fails = new StringBuilder(); StringBuilder fails = new StringBuilder();
if (result.hasSessionInProgress()) { if (result.hasIntroductionSessionInProgress()) {
if (result.hasIntroduction()) { String s = getString(
String s = getString( R.string.dialog_message_not_deleted_ongoing_introductions);
R.string.dialog_message_not_deleted_ongoing_introductions); fails.append(s).append("\n");
fails.append(s).append("\n"); }
} if (result.hasInvitationSessionInProgress()) {
if (result.hasInvitation()) { String s = getString(
String s = getString( R.string.dialog_message_not_deleted_ongoing_invitations);
R.string.dialog_message_not_deleted_ongoing_invitations); fails.append(s).append("\n");
fails.append(s).append("\n");
}
} }
if (result.hasNotFullyDownloaded()) { if (result.hasNotFullyDownloaded()) {
String s = getString( String s = getString(
@@ -923,7 +921,8 @@ public class ConversationActivity extends BriarActivity
msg.append(s); msg.append(s);
} }
// add problems the user can resolve // add problems the user can resolve
if (result.hasNotAllSelected()) { if (result.hasNotAllIntroductionSelected() ||
result.hasNotAllInvitationSelected()) {
if (msg.length() > 0) msg.append("\n\n"); if (msg.length() > 0) msg.append("\n\n");
String s = getString( String s = getString(
R.string.dialog_message_not_deleted_not_all_selected); R.string.dialog_message_not_deleted_not_all_selected);

View File

@@ -17,10 +17,10 @@ import java.util.Set;
@NotNullByDefault @NotNullByDefault
public interface ConversationManager { public interface ConversationManager {
int DELETE_SESSION_IS_INTRODUCTION = 1; int DELETE_SESSION_INTRODUCTION_INCOMPLETE = 1;
int DELETE_SESSION_IS_INVITATION = 1 << 1; int DELETE_SESSION_INVITATION_INCOMPLETE = 1 << 1;
int DELETE_SESSION_INCOMPLETE = 1 << 2; int DELETE_SESSION_INTRODUCTION_IN_PROGRESS = 1 << 2;
int DELETE_SESSION_IN_PROGRESS = 1 << 3; int DELETE_SESSION_INVITATION_IN_PROGRESS = 1 << 3;
int DELETE_NOT_DOWNLOADED = 1 << 4; int DELETE_NOT_DOWNLOADED = 1 << 4;
/** /**

View File

@@ -5,10 +5,10 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.NotThreadSafe; import javax.annotation.concurrent.NotThreadSafe;
import static org.briarproject.briar.api.conversation.ConversationManager.DELETE_NOT_DOWNLOADED; import static org.briarproject.briar.api.conversation.ConversationManager.DELETE_NOT_DOWNLOADED;
import static org.briarproject.briar.api.conversation.ConversationManager.DELETE_SESSION_INCOMPLETE; import static org.briarproject.briar.api.conversation.ConversationManager.DELETE_SESSION_INTRODUCTION_INCOMPLETE;
import static org.briarproject.briar.api.conversation.ConversationManager.DELETE_SESSION_IN_PROGRESS; import static org.briarproject.briar.api.conversation.ConversationManager.DELETE_SESSION_INTRODUCTION_IN_PROGRESS;
import static org.briarproject.briar.api.conversation.ConversationManager.DELETE_SESSION_IS_INTRODUCTION; import static org.briarproject.briar.api.conversation.ConversationManager.DELETE_SESSION_INVITATION_INCOMPLETE;
import static org.briarproject.briar.api.conversation.ConversationManager.DELETE_SESSION_IS_INVITATION; import static org.briarproject.briar.api.conversation.ConversationManager.DELETE_SESSION_INVITATION_IN_PROGRESS;
@NotThreadSafe @NotThreadSafe
@NotNullByDefault @NotNullByDefault
@@ -21,19 +21,19 @@ public class DeletionResult {
} }
public void addInvitationNotAllSelected() { public void addInvitationNotAllSelected() {
result |= DELETE_SESSION_INCOMPLETE | DELETE_SESSION_IS_INVITATION; result |= DELETE_SESSION_INVITATION_INCOMPLETE;
} }
public void addInvitationSessionInProgress() { public void addInvitationSessionInProgress() {
result |= DELETE_SESSION_IN_PROGRESS | DELETE_SESSION_IS_INVITATION; result |= DELETE_SESSION_INVITATION_IN_PROGRESS;
} }
public void addIntroductionNotAllSelected() { public void addIntroductionNotAllSelected() {
result |= DELETE_SESSION_INCOMPLETE | DELETE_SESSION_IS_INTRODUCTION; result |= DELETE_SESSION_INTRODUCTION_INCOMPLETE;
} }
public void addIntroductionSessionInProgress() { public void addIntroductionSessionInProgress() {
result |= DELETE_SESSION_IN_PROGRESS | DELETE_SESSION_IS_INTRODUCTION; result |= DELETE_SESSION_INTRODUCTION_IN_PROGRESS;
} }
public void addNotFullyDownloaded() { public void addNotFullyDownloaded() {
@@ -44,20 +44,20 @@ public class DeletionResult {
return result == 0; return result == 0;
} }
public boolean hasIntroduction() { public boolean hasIntroductionSessionInProgress() {
return (result & DELETE_SESSION_IS_INTRODUCTION) != 0; return (result & DELETE_SESSION_INTRODUCTION_IN_PROGRESS) != 0;
} }
public boolean hasInvitation() { public boolean hasInvitationSessionInProgress() {
return (result & DELETE_SESSION_IS_INVITATION) != 0; return (result & DELETE_SESSION_INVITATION_IN_PROGRESS) != 0;
} }
public boolean hasSessionInProgress() { public boolean hasNotAllIntroductionSelected() {
return (result & DELETE_SESSION_IN_PROGRESS) != 0; return (result & DELETE_SESSION_INTRODUCTION_INCOMPLETE) != 0;
} }
public boolean hasNotAllSelected() { public boolean hasNotAllInvitationSelected() {
return (result & DELETE_SESSION_INCOMPLETE) != 0; return (result & DELETE_SESSION_INVITATION_INCOMPLETE) != 0;
} }
public boolean hasNotFullyDownloaded() { public boolean hasNotFullyDownloaded() {

View File

@@ -695,7 +695,6 @@ class IntroductionManagerImpl extends ConversationClientImpl
result.addIntroductionSessionInProgress(); result.addIntroductionSessionInProgress();
if (!selected.contains(m)) if (!selected.contains(m))
result.addIntroductionNotAllSelected(); result.addIntroductionNotAllSelected();
break;
} }
} }
// delete messages of session, if all were ACKed // delete messages of session, if all were ACKed

View File

@@ -756,7 +756,6 @@ class GroupInvitationManagerImpl extends ConversationClientImpl
result.addInvitationSessionInProgress(); result.addInvitationSessionInProgress();
if (checker.causesProblem(m)) if (checker.causesProblem(m))
result.addInvitationNotAllSelected(); result.addInvitationNotAllSelected();
break;
} }
} }
if (sessionDeletable) { if (sessionDeletable) {

View File

@@ -677,7 +677,6 @@ abstract class SharingManagerImpl<S extends Shareable>
result.addInvitationSessionInProgress(); result.addInvitationSessionInProgress();
if (checker.causesProblem(m)) if (checker.causesProblem(m))
result.addInvitationNotAllSelected(); result.addInvitationNotAllSelected();
break;
} }
} }
if (sessionDeletable) { if (sessionDeletable) {

View File

@@ -1154,12 +1154,10 @@ public class IntroductionIntegrationTest
// introducer can not yet remove messages // introducer can not yet remove messages
assertFalse(deleteAllMessages1From0().allDeleted()); assertFalse(deleteAllMessages1From0().allDeleted());
assertTrue(deleteAllMessages1From0().hasIntroduction()); assertTrue(deleteAllMessages1From0().hasIntroductionSessionInProgress());
assertTrue(deleteAllMessages1From0().hasSessionInProgress());
// introducee1 can not yet remove messages // introducee1 can not yet remove messages
assertFalse(deleteAllMessages0From1().allDeleted()); assertFalse(deleteAllMessages0From1().allDeleted());
assertTrue(deleteAllMessages0From1().hasIntroduction()); assertTrue(deleteAllMessages0From1().hasIntroductionSessionInProgress());
assertTrue(deleteAllMessages0From1().hasSessionInProgress());
// sync second REQUEST message // sync second REQUEST message
sync0To2(1, true); sync0To2(1, true);
@@ -1167,10 +1165,10 @@ public class IntroductionIntegrationTest
// introducer can not yet remove messages // introducer can not yet remove messages
assertFalse(deleteAllMessages2From0().allDeleted()); assertFalse(deleteAllMessages2From0().allDeleted());
assertTrue(deleteAllMessages2From0().hasSessionInProgress()); assertTrue(deleteAllMessages2From0().hasIntroductionSessionInProgress());
// introducee2 can not yet remove messages // introducee2 can not yet remove messages
assertFalse(deleteAllMessages0From2().allDeleted()); assertFalse(deleteAllMessages0From2().allDeleted());
assertTrue(deleteAllMessages0From2().hasSessionInProgress()); assertTrue(deleteAllMessages0From2().hasIntroductionSessionInProgress());
// sync first ACCEPT message // sync first ACCEPT message
sync1To0(1, true); sync1To0(1, true);
@@ -1178,7 +1176,7 @@ public class IntroductionIntegrationTest
// introducer can not yet remove messages // introducer can not yet remove messages
assertFalse(deleteAllMessages1From0().allDeleted()); assertFalse(deleteAllMessages1From0().allDeleted());
assertTrue(deleteAllMessages1From0().hasSessionInProgress()); assertTrue(deleteAllMessages1From0().hasIntroductionSessionInProgress());
// sync second ACCEPT message // sync second ACCEPT message
sync2To0(1, true); sync2To0(1, true);
@@ -1186,7 +1184,7 @@ public class IntroductionIntegrationTest
// introducer can not yet remove messages // introducer can not yet remove messages
assertFalse(deleteAllMessages2From0().allDeleted()); assertFalse(deleteAllMessages2From0().allDeleted());
assertTrue(deleteAllMessages2From0().hasSessionInProgress()); assertTrue(deleteAllMessages2From0().hasIntroductionSessionInProgress());
// sync forwarded ACCEPT messages to introducees // sync forwarded ACCEPT messages to introducees
sync0To1(1, true); sync0To1(1, true);
@@ -1194,10 +1192,10 @@ public class IntroductionIntegrationTest
// introducee1 can not yet remove messages // introducee1 can not yet remove messages
assertFalse(deleteAllMessages0From1().allDeleted()); assertFalse(deleteAllMessages0From1().allDeleted());
assertTrue(deleteAllMessages0From1().hasSessionInProgress()); assertTrue(deleteAllMessages0From1().hasIntroductionSessionInProgress());
// introducee2 can not yet remove messages // introducee2 can not yet remove messages
assertFalse(deleteAllMessages0From2().allDeleted()); assertFalse(deleteAllMessages0From2().allDeleted());
assertTrue(deleteAllMessages0From2().hasSessionInProgress()); assertTrue(deleteAllMessages0From2().hasIntroductionSessionInProgress());
// sync first AUTH and its forward // sync first AUTH and its forward
sync1To0(1, true); sync1To0(1, true);
@@ -1205,12 +1203,12 @@ public class IntroductionIntegrationTest
// introducer can not yet remove messages // introducer can not yet remove messages
assertFalse(deleteAllMessages1From0().allDeleted()); assertFalse(deleteAllMessages1From0().allDeleted());
assertTrue(deleteAllMessages1From0().hasSessionInProgress()); assertTrue(deleteAllMessages1From0().hasIntroductionSessionInProgress());
assertFalse(deleteAllMessages2From0().allDeleted()); assertFalse(deleteAllMessages2From0().allDeleted());
assertTrue(deleteAllMessages2From0().hasSessionInProgress()); assertTrue(deleteAllMessages2From0().hasIntroductionSessionInProgress());
// introducee2 can not yet remove messages // introducee2 can not yet remove messages
assertFalse(deleteAllMessages0From2().allDeleted()); assertFalse(deleteAllMessages0From2().allDeleted());
assertTrue(deleteAllMessages0From2().hasSessionInProgress()); assertTrue(deleteAllMessages0From2().hasIntroductionSessionInProgress());
// sync second AUTH and its forward as well as the following ACTIVATE // sync second AUTH and its forward as well as the following ACTIVATE
sync2To0(2, true); sync2To0(2, true);
@@ -1218,12 +1216,12 @@ public class IntroductionIntegrationTest
// introducer can not yet remove messages // introducer can not yet remove messages
assertFalse(deleteAllMessages1From0().allDeleted()); assertFalse(deleteAllMessages1From0().allDeleted());
assertTrue(deleteAllMessages1From0().hasSessionInProgress()); assertTrue(deleteAllMessages1From0().hasIntroductionSessionInProgress());
assertFalse(deleteAllMessages2From0().allDeleted()); assertFalse(deleteAllMessages2From0().allDeleted());
assertTrue(deleteAllMessages2From0().hasSessionInProgress()); assertTrue(deleteAllMessages2From0().hasIntroductionSessionInProgress());
// introducee1 can not yet remove messages // introducee1 can not yet remove messages
assertFalse(deleteAllMessages0From1().allDeleted()); assertFalse(deleteAllMessages0From1().allDeleted());
assertTrue(deleteAllMessages0From1().hasSessionInProgress()); assertTrue(deleteAllMessages0From1().hasIntroductionSessionInProgress());
// sync second ACTIVATE and its forward // sync second ACTIVATE and its forward
sync1To0(1, true); sync1To0(1, true);
@@ -1245,8 +1243,9 @@ public class IntroductionIntegrationTest
assertGroupCount(messageTracker0, g1.getId(), 0, 0); assertGroupCount(messageTracker0, g1.getId(), 0, 0);
// introducee1 can not yet remove messages, because last not ACKed // introducee1 can not yet remove messages, because last not ACKed
assertFalse(deleteAllMessages0From1().allDeleted()); DeletionResult result = deleteAllMessages0From1();
assertTrue(deleteAllMessages0From1().hasSessionInProgress()); assertFalse(result.allDeleted());
assertTrue(result.hasIntroductionSessionInProgress());
assertEquals(2, getMessages0From1().size()); assertEquals(2, getMessages0From1().size());
// check that introducee1 messages are tracked properly // check that introducee1 messages are tracked properly
@@ -1292,14 +1291,18 @@ public class IntroductionIntegrationTest
assertFalse(listener2.aborted); assertFalse(listener2.aborted);
// nobody can delete anything again // nobody can delete anything again
assertFalse(deleteAllMessages1From0().allDeleted()); result = deleteAllMessages1From0();
assertTrue(deleteAllMessages1From0().hasSessionInProgress()); assertFalse(result.allDeleted());
assertFalse(deleteAllMessages2From0().allDeleted()); assertTrue(result.hasIntroductionSessionInProgress());
assertTrue(deleteAllMessages2From0().hasSessionInProgress()); result = deleteAllMessages2From0();
assertFalse(deleteAllMessages0From1().allDeleted()); assertFalse(result.allDeleted());
assertTrue(deleteAllMessages0From1().hasSessionInProgress()); assertTrue(result.hasIntroductionSessionInProgress());
assertFalse(deleteAllMessages0From2().allDeleted()); result = deleteAllMessages0From1();
assertTrue(deleteAllMessages0From2().hasSessionInProgress()); assertFalse(result.allDeleted());
assertTrue(result.hasIntroductionSessionInProgress());
result = deleteAllMessages0From2();
assertFalse(result.allDeleted());
assertTrue(result.hasIntroductionSessionInProgress());
// group counts get counted up again correctly // group counts get counted up again correctly
assertGroupCount(messageTracker0, g1.getId(), 2, 1); assertGroupCount(messageTracker0, g1.getId(), 2, 1);
@@ -1485,8 +1488,7 @@ public class IntroductionIntegrationTest
Set<MessageId> toDelete1 = new HashSet<>(); Set<MessageId> toDelete1 = new HashSet<>();
toDelete1.add(messageId1); toDelete1.add(messageId1);
assertFalse(deleteMessages1From0(toDelete1).allDeleted()); assertFalse(deleteMessages1From0(toDelete1).allDeleted());
assertTrue(deleteMessages1From0(toDelete1).hasIntroduction()); assertTrue(deleteMessages1From0(toDelete1).hasIntroductionSessionInProgress());
assertTrue(deleteMessages1From0(toDelete1).hasSessionInProgress());
// deleting the introduction for introducee2 will fail as well // deleting the introduction for introducee2 will fail as well
Collection<ConversationMessageHeader> m2From0 = getMessages2From0(); Collection<ConversationMessageHeader> m2From0 = getMessages2From0();
@@ -1495,8 +1497,7 @@ public class IntroductionIntegrationTest
Set<MessageId> toDelete2 = new HashSet<>(); Set<MessageId> toDelete2 = new HashSet<>();
toDelete2.add(messageId2); toDelete2.add(messageId2);
assertFalse(deleteMessages2From0(toDelete2).allDeleted()); assertFalse(deleteMessages2From0(toDelete2).allDeleted());
assertTrue(deleteMessages2From0(toDelete2).hasIntroduction()); assertTrue(deleteMessages2From0(toDelete2).hasIntroductionSessionInProgress());
assertTrue(deleteMessages2From0(toDelete2).hasSessionInProgress());
// sync REQUEST messages // sync REQUEST messages
sync0To1(1, true); sync0To1(1, true);
@@ -1506,9 +1507,9 @@ public class IntroductionIntegrationTest
// deleting introduction fails, because responses did not arrive // deleting introduction fails, because responses did not arrive
assertFalse(deleteMessages0From1(toDelete1).allDeleted()); assertFalse(deleteMessages0From1(toDelete1).allDeleted());
assertTrue(deleteMessages0From1(toDelete1).hasSessionInProgress()); assertTrue(deleteMessages0From1(toDelete1).hasIntroductionSessionInProgress());
assertFalse(deleteMessages0From2(toDelete2).allDeleted()); assertFalse(deleteMessages0From2(toDelete2).allDeleted());
assertTrue(deleteMessages0From2(toDelete2).hasSessionInProgress()); assertTrue(deleteMessages0From2(toDelete2).hasIntroductionSessionInProgress());
// remember response of introducee1 for future deletion // remember response of introducee1 for future deletion
Collection<ConversationMessageHeader> m0From1 = getMessages0From1(); Collection<ConversationMessageHeader> m0From1 = getMessages0From1();
@@ -1568,8 +1569,7 @@ public class IntroductionIntegrationTest
// deleting introduction fails for introducee 2, // deleting introduction fails for introducee 2,
// because response is not yet selected for deletion // because response is not yet selected for deletion
assertFalse(deleteMessages0From2(toDelete2).allDeleted()); assertFalse(deleteMessages0From2(toDelete2).allDeleted());
assertTrue(deleteMessages0From2(toDelete2).hasIntroduction()); assertTrue(deleteMessages0From2(toDelete2).hasNotAllIntroductionSelected());
assertTrue(deleteMessages0From2(toDelete2).hasNotAllSelected());
// add response to be deleted as well // add response to be deleted as well
toDelete2.add(response2); toDelete2.add(response2);
@@ -1587,8 +1587,7 @@ public class IntroductionIntegrationTest
// deleting introduction fails for introducee 1, // deleting introduction fails for introducee 1,
// because response is not yet selected for deletion // because response is not yet selected for deletion
assertFalse(deleteMessages0From1(toDelete1).allDeleted()); assertFalse(deleteMessages0From1(toDelete1).allDeleted());
assertTrue(deleteMessages0From1(toDelete1).hasIntroduction()); assertTrue(deleteMessages0From1(toDelete1).hasNotAllIntroductionSelected());
assertTrue(deleteMessages0From1(toDelete1).hasNotAllSelected());
// add response to be deleted as well // add response to be deleted as well
toDelete1.add(response1); toDelete1.add(response1);

View File

@@ -280,38 +280,30 @@ public class MessagingManagerIntegrationTest
PrivateMessage m = PrivateMessage m =
sendMessage(c0, c1, getRandomString(42), singletonList(h)); sendMessage(c0, c1, getRandomString(42), singletonList(h));
// attachment exists on both devices, state is set to PENDING // attachment exists on both devices, state set to PENDING for receiver
db0.transaction(false, txn -> {
db0.getMessage(txn, h.getMessageId());
db0.setMessageState(txn, h.getMessageId(), PENDING);
});
db1.transaction(false, txn -> { db1.transaction(false, txn -> {
db1.getMessage(txn, h.getMessageId()); db1.getMessage(txn, h.getMessageId());
db1.setMessageState(txn, h.getMessageId(), PENDING); db1.setMessageState(txn, h.getMessageId(), PENDING);
}); });
// deleting message fails (on both sides), // deleting succeeds for sender
// because attachment is not yet delivered
Set<MessageId> toDelete = singleton(m.getMessage().getId()); Set<MessageId> toDelete = singleton(m.getMessage().getId());
DeletionResult result0 = db0.transactionWithResult(false, txn -> DeletionResult result0 = db0.transactionWithResult(false, txn ->
messagingManager0.deleteMessages(txn, contactId, toDelete)); messagingManager0.deleteMessages(txn, contactId, toDelete));
assertFalse(result0.allDeleted()); assertTrue(result0.allDeleted());
assertTrue(result0.hasNotFullyDownloaded());
// deleting message fails for receiver,
// because attachment is not yet delivered
DeletionResult result1 = db1.transactionWithResult(false, txn -> DeletionResult result1 = db1.transactionWithResult(false, txn ->
messagingManager1.deleteMessages(txn, contactId, toDelete)); messagingManager1.deleteMessages(txn, contactId, toDelete));
assertFalse(result1.allDeleted()); assertFalse(result1.allDeleted());
assertTrue(result1.hasNotFullyDownloaded()); assertTrue(result1.hasNotFullyDownloaded());
// deliver attachment // deliver attachment
db0.transaction(false,
txn -> db0.setMessageState(txn, h.getMessageId(), DELIVERED));
db1.transaction(false, db1.transaction(false,
txn -> db1.setMessageState(txn, h.getMessageId(), DELIVERED)); txn -> db1.setMessageState(txn, h.getMessageId(), DELIVERED));
// deleting message and attachment on both sides works now // deleting message and attachment works for sender now
assertTrue(db0.transactionWithResult(false, txn ->
messagingManager0.deleteMessages(txn, contactId, toDelete))
.allDeleted());
assertTrue(db1.transactionWithResult(false, txn -> assertTrue(db1.transactionWithResult(false, txn ->
messagingManager1.deleteMessages(txn, contactId, toDelete)) messagingManager1.deleteMessages(txn, contactId, toDelete))
.allDeleted()); .allDeleted());

View File

@@ -465,12 +465,10 @@ public class GroupInvitationIntegrationTest
// messages can not be deleted // messages can not be deleted
assertFalse(deleteAllMessages1From0().allDeleted()); assertFalse(deleteAllMessages1From0().allDeleted());
assertTrue(deleteAllMessages1From0().hasInvitation()); assertTrue(deleteAllMessages1From0().hasInvitationSessionInProgress());
assertTrue(deleteAllMessages1From0().hasSessionInProgress());
assertEquals(1, getMessages1From0().size()); assertEquals(1, getMessages1From0().size());
assertFalse(deleteAllMessages0From1().allDeleted()); assertFalse(deleteAllMessages0From1().allDeleted());
assertTrue(deleteAllMessages0From1().hasInvitation()); assertTrue(deleteAllMessages0From1().hasInvitationSessionInProgress());
assertTrue(deleteAllMessages0From1().hasSessionInProgress());
assertEquals(1, getMessages0From1().size()); assertEquals(1, getMessages0From1().size());
// respond // respond
@@ -485,13 +483,13 @@ public class GroupInvitationIntegrationTest
// messages can be deleted now by creator, invitee needs to wait for ACK // messages can be deleted now by creator, invitee needs to wait for ACK
assertTrue(deleteAllMessages1From0().allDeleted()); assertTrue(deleteAllMessages1From0().allDeleted());
assertEquals(0, getMessages1From0().size()); assertEquals(0, getMessages1From0().size());
assertTrue(deleteAllMessages1From0().allDeleted()); // a second time nothing happens assertTrue(deleteAllMessages1From0()
.allDeleted()); // a second time nothing happens
assertGroupCount(messageTracker0, g1From0.getId(), 0, 0); assertGroupCount(messageTracker0, g1From0.getId(), 0, 0);
// trying to delete fails for invitee // trying to delete fails for invitee
assertFalse(deleteAllMessages0From1().allDeleted()); assertFalse(deleteAllMessages0From1().allDeleted());
assertTrue(deleteAllMessages0From1().hasInvitation()); assertTrue(deleteAllMessages0From1().hasInvitationSessionInProgress());
assertTrue(deleteAllMessages0From1().hasSessionInProgress());
assertEquals(2, getMessages0From1().size()); assertEquals(2, getMessages0From1().size());
// creator sends two JOIN messages (one sharing + one in private group) // creator sends two JOIN messages (one sharing + one in private group)
@@ -539,8 +537,7 @@ public class GroupInvitationIntegrationTest
// trying to delete fails for invitee // trying to delete fails for invitee
assertFalse(deleteAllMessages0From1().allDeleted()); assertFalse(deleteAllMessages0From1().allDeleted());
assertTrue(deleteAllMessages0From1().hasInvitation()); assertTrue(deleteAllMessages0From1().hasInvitationSessionInProgress());
assertTrue(deleteAllMessages0From1().hasSessionInProgress());
assertEquals(2, getMessages0From1().size()); assertEquals(2, getMessages0From1().size());
// creator sends ACK // creator sends ACK
@@ -559,9 +556,9 @@ public class GroupInvitationIntegrationTest
// now new messages can not be deleted anymore // now new messages can not be deleted anymore
assertFalse(deleteAllMessages1From0().allDeleted()); assertFalse(deleteAllMessages1From0().allDeleted());
assertTrue(deleteAllMessages1From0().hasSessionInProgress()); assertTrue(deleteAllMessages1From0().hasInvitationSessionInProgress());
assertFalse(deleteAllMessages0From1().allDeleted()); assertFalse(deleteAllMessages0From1().allDeleted());
assertTrue(deleteAllMessages0From1().hasSessionInProgress()); assertTrue(deleteAllMessages0From1().hasInvitationSessionInProgress());
// responding again // responding again
groupInvitationManager1 groupInvitationManager1
@@ -595,9 +592,11 @@ public class GroupInvitationIntegrationTest
Set<MessageId> toDelete = new HashSet<>(); Set<MessageId> toDelete = new HashSet<>();
toDelete.add(messageId); toDelete.add(messageId);
assertFalse(deleteMessages1From0(toDelete).allDeleted()); assertFalse(deleteMessages1From0(toDelete).allDeleted());
assertTrue(deleteMessages1From0(toDelete).hasSessionInProgress()); assertTrue(deleteMessages1From0(toDelete)
.hasInvitationSessionInProgress());
assertFalse(deleteMessages0From1(toDelete).allDeleted()); assertFalse(deleteMessages0From1(toDelete).allDeleted());
assertTrue(deleteMessages0From1(toDelete).hasSessionInProgress()); assertTrue(deleteMessages0From1(toDelete)
.hasInvitationSessionInProgress());
// respond // respond
groupInvitationManager1 groupInvitationManager1
@@ -607,9 +606,11 @@ public class GroupInvitationIntegrationTest
// both can still not delete the invitation, // both can still not delete the invitation,
// because the response was not selected for deletion as well // because the response was not selected for deletion as well
assertFalse(deleteMessages1From0(toDelete).allDeleted()); assertFalse(deleteMessages1From0(toDelete).allDeleted());
assertTrue(deleteMessages1From0(toDelete).hasNotAllSelected()); assertTrue(
deleteMessages1From0(toDelete).hasNotAllInvitationSelected());
assertFalse(deleteMessages0From1(toDelete).allDeleted()); assertFalse(deleteMessages0From1(toDelete).allDeleted());
assertTrue(deleteMessages0From1(toDelete).hasNotAllSelected()); assertTrue(
deleteMessages0From1(toDelete).hasNotAllInvitationSelected());
// after selecting response, both messages can be deleted by creator // after selecting response, both messages can be deleted by creator
m0 = getMessages1From0(); m0 = getMessages1From0();
@@ -626,7 +627,8 @@ public class GroupInvitationIntegrationTest
// 1 can still not delete the messages, as last one has not been ACKed // 1 can still not delete the messages, as last one has not been ACKed
assertFalse(deleteMessages0From1(toDelete).allDeleted()); assertFalse(deleteMessages0From1(toDelete).allDeleted());
assertTrue(deleteMessages0From1(toDelete).hasSessionInProgress()); assertTrue(deleteMessages0From1(toDelete)
.hasInvitationSessionInProgress());
assertEquals(2, getMessages0From1().size()); assertEquals(2, getMessages0From1().size());
assertGroupCount(messageTracker1, g0From1.getId(), 2, 1); assertGroupCount(messageTracker1, g0From1.getId(), 2, 1);

View File

@@ -866,11 +866,9 @@ public class ForumSharingIntegrationTest
// messages can not be deleted // messages can not be deleted
assertFalse(deleteAllMessages1From0().allDeleted()); assertFalse(deleteAllMessages1From0().allDeleted());
assertTrue(deleteAllMessages1From0().hasInvitation()); assertTrue(deleteAllMessages1From0().hasInvitationSessionInProgress());
assertTrue(deleteAllMessages1From0().hasSessionInProgress());
assertFalse(deleteAllMessages0From1().allDeleted()); assertFalse(deleteAllMessages0From1().allDeleted());
assertTrue(deleteAllMessages0From1().hasInvitation()); assertTrue(deleteAllMessages0From1().hasInvitationSessionInProgress());
assertTrue(deleteAllMessages0From1().hasSessionInProgress());
// accept invitation // accept invitation
respondToRequest(contactId0From1, true); respondToRequest(contactId0From1, true);
@@ -892,7 +890,7 @@ public class ForumSharingIntegrationTest
// 1 can not delete all messages, as last one has not been ACKed // 1 can not delete all messages, as last one has not been ACKed
assertFalse(deleteAllMessages0From1().allDeleted()); assertFalse(deleteAllMessages0From1().allDeleted());
assertTrue(deleteAllMessages0From1().hasSessionInProgress()); assertTrue(deleteAllMessages0From1().hasInvitationSessionInProgress());
assertGroupCount(messageTracker1, g0From1, 2, 1); assertGroupCount(messageTracker1, g0From1, 2, 1);
// 0 sends an ACK to their last message // 0 sends an ACK to their last message
@@ -918,11 +916,11 @@ public class ForumSharingIntegrationTest
// messages can not be deleted anymore // messages can not be deleted anymore
assertFalse(deleteAllMessages1From0().allDeleted()); assertFalse(deleteAllMessages1From0().allDeleted());
assertTrue(deleteAllMessages1From0().hasSessionInProgress()); assertTrue(deleteAllMessages1From0().hasInvitationSessionInProgress());
assertEquals(1, getMessages1From0().size()); assertEquals(1, getMessages1From0().size());
assertGroupCount(messageTracker0, g1From0, 1, 1); assertGroupCount(messageTracker0, g1From0, 1, 1);
assertFalse(deleteAllMessages0From1().allDeleted()); assertFalse(deleteAllMessages0From1().allDeleted());
assertTrue(deleteAllMessages0From1().hasSessionInProgress()); assertTrue(deleteAllMessages0From1().hasInvitationSessionInProgress());
assertEquals(1, getMessages0From1().size()); assertEquals(1, getMessages0From1().size());
assertGroupCount(messageTracker1, g0From1, 1, 0); assertGroupCount(messageTracker1, g0From1, 1, 0);
@@ -998,8 +996,7 @@ public class ForumSharingIntegrationTest
Set<MessageId> toDelete = new HashSet<>(); Set<MessageId> toDelete = new HashSet<>();
toDelete.add(messageId); toDelete.add(messageId);
assertFalse(deleteMessages1From0(toDelete).allDeleted()); assertFalse(deleteMessages1From0(toDelete).allDeleted());
assertTrue(deleteMessages1From0(toDelete).hasInvitation()); assertTrue(deleteMessages1From0(toDelete).hasInvitationSessionInProgress());
assertTrue(deleteMessages1From0(toDelete).hasSessionInProgress());
// decline invitation // decline invitation
respondToRequest(contactId0From1, true); respondToRequest(contactId0From1, true);
@@ -1009,11 +1006,9 @@ public class ForumSharingIntegrationTest
// both can still not delete the invitation, // both can still not delete the invitation,
// because the response was not selected for deletion as well // because the response was not selected for deletion as well
assertFalse(deleteMessages1From0(toDelete).allDeleted()); assertFalse(deleteMessages1From0(toDelete).allDeleted());
assertTrue(deleteMessages1From0(toDelete).hasInvitation()); assertTrue(deleteMessages1From0(toDelete).hasNotAllInvitationSelected());
assertTrue(deleteMessages1From0(toDelete).hasNotAllSelected());
assertFalse(deleteMessages0From1(toDelete).allDeleted()); assertFalse(deleteMessages0From1(toDelete).allDeleted());
assertTrue(deleteMessages0From1(toDelete).hasInvitation()); assertTrue(deleteMessages0From1(toDelete).hasNotAllInvitationSelected());
assertTrue(deleteMessages0From1(toDelete).hasNotAllSelected());
// after selecting response, both messages can be deleted // after selecting response, both messages can be deleted
m0 = getMessages1From0(); m0 = getMessages1From0();
@@ -1028,9 +1023,8 @@ public class ForumSharingIntegrationTest
// 1 can still not delete the messages, as last one has not been ACKed // 1 can still not delete the messages, as last one has not been ACKed
assertFalse(deleteMessages0From1(toDelete).allDeleted()); assertFalse(deleteMessages0From1(toDelete).allDeleted());
assertFalse(deleteMessages0From1(toDelete).hasNotAllSelected()); assertFalse(deleteMessages0From1(toDelete).hasNotAllInvitationSelected());
assertTrue(deleteMessages0From1(toDelete).hasInvitation()); assertTrue(deleteMessages0From1(toDelete).hasInvitationSessionInProgress());
assertTrue(deleteMessages0From1(toDelete).hasSessionInProgress());
// 0 sends an ACK to their last message // 0 sends an ACK to their last message
sendAcks(c0, c1, contactId1From0, 1); sendAcks(c0, c1, contactId1From0, 1);