decryptlist: minor cleanups and documentation

This commit is contained in:
Vincent Breitmoser
2015-11-14 18:28:25 +01:00
parent e92bd4bea9
commit d263bade92

View File

@@ -91,6 +91,22 @@ import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.ParcelableHashMap; import org.sufficientlysecure.keychain.util.ParcelableHashMap;
/** Displays a list of decrypted inputs.
*
* This class has a complex control flow to manage its input URIs. Each URI
* which is in mInputUris is also in exactly one of mPendingInputUris,
* mCancelledInputUris, mCurrentInputUri, or a key in mInputDataResults.
*
* Processing of URIs happens using a looping approach:
* - There is always exactly one method running which works on mCurrentInputUri
* - Processing starts in cryptoOperation(), which pops a new mCurrentInputUri
* from the list of mPendingInputUris.
* - Once a mCurrentInputUri is finished processing, it should be set to null and
* control handed back to cryptoOperation()
* - Control flow can move through asynchronous calls, and resume in callbacks
* like onActivityResult() or onPermissionRequestResult().
*
*/
public class DecryptListFragment public class DecryptListFragment
extends QueueingCryptoOperationFragment<InputDataParcel,InputDataResult> extends QueueingCryptoOperationFragment<InputDataParcel,InputDataResult>
implements OnMenuItemClickListener { implements OnMenuItemClickListener {
@@ -200,7 +216,9 @@ public class DecryptListFragment
); );
} }
private void displayInputUris(ArrayList<Uri> inputUris, ArrayList<Uri> cancelledUris, private void displayInputUris(
ArrayList<Uri> inputUris,
ArrayList<Uri> cancelledUris,
HashMap<Uri,InputDataResult> results) { HashMap<Uri,InputDataResult> results) {
mInputUris = inputUris; mInputUris = inputUris;
@@ -213,16 +231,19 @@ public class DecryptListFragment
for (final Uri uri : inputUris) { for (final Uri uri : inputUris) {
mAdapter.add(uri); mAdapter.add(uri);
if (mCancelledInputUris.contains(uri)) { boolean uriIsCancelled = mCancelledInputUris.contains(uri);
if (uriIsCancelled) {
mAdapter.setCancelled(uri, true); mAdapter.setCancelled(uri, true);
continue; continue;
} }
if (results != null && results.containsKey(uri)) { boolean uriHasResult = results != null && results.containsKey(uri);
if (uriHasResult) {
processResult(uri); processResult(uri);
} else { continue;
mPendingInputUris.add(uri);
} }
mPendingInputUris.add(uri);
} }
// check if there are any pending input uris // check if there are any pending input uris
@@ -791,8 +812,10 @@ public class DecryptListFragment
return false; return false;
} }
ViewModel viewModel = (ViewModel) o; ViewModel viewModel = (ViewModel) o;
return !(mInputUri != null ? !mInputUri.equals(viewModel.mInputUri) if (mInputUri == null) {
: viewModel.mInputUri != null); return viewModel.mInputUri == null;
}
return mInputUri.equals(viewModel.mInputUri);
} }
// Depends on inputUri only // Depends on inputUri only