editkey: always return EditKeyResult

This commit is contained in:
Vincent Breitmoser 2015-10-29 16:01:24 +01:00
parent a665dd60fb
commit 1c83c33d35
3 changed files with 16 additions and 14 deletions

View file

@ -26,7 +26,6 @@ import android.support.annotation.NonNull;
import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.EditKeyResult; import org.sufficientlysecure.keychain.operations.results.EditKeyResult;
import org.sufficientlysecure.keychain.operations.results.InputPendingResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult.LogType; import org.sufficientlysecure.keychain.operations.results.OperationResult.LogType;
import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog; import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog;
import org.sufficientlysecure.keychain.operations.results.PgpEditKeyResult; import org.sufficientlysecure.keychain.operations.results.PgpEditKeyResult;
@ -73,7 +72,7 @@ public class EditKeyOperation extends BaseOperation<SaveKeyringParcel> {
* @return the result of the operation * @return the result of the operation
*/ */
@NonNull @NonNull
public InputPendingResult execute(SaveKeyringParcel saveParcel, CryptoInputParcel cryptoInput) { public EditKeyResult execute(SaveKeyringParcel saveParcel, CryptoInputParcel cryptoInput) {
OperationLog log = new OperationLog(); OperationLog log = new OperationLog();
log.add(LogType.MSG_ED, 0); log.add(LogType.MSG_ED, 0);
@ -100,7 +99,8 @@ public class EditKeyOperation extends BaseOperation<SaveKeyringParcel> {
modifyResult = keyOperations.modifySecretKeyRing(secRing, cryptoInput, saveParcel); modifyResult = keyOperations.modifySecretKeyRing(secRing, cryptoInput, saveParcel);
if (modifyResult.isPending()) { if (modifyResult.isPending()) {
return modifyResult; log.add(modifyResult, 1);
return new EditKeyResult(log, modifyResult);
} }
} catch (NotFoundException e) { } catch (NotFoundException e) {
@ -151,16 +151,13 @@ public class EditKeyOperation extends BaseOperation<SaveKeyringParcel> {
new UploadOperation(mContext, mProviderHelper, mProgressable, mCancelled) new UploadOperation(mContext, mProviderHelper, mProgressable, mCancelled)
.execute(exportKeyringParcel, cryptoInput); .execute(exportKeyringParcel, cryptoInput);
log.add(uploadResult, 2);
if (uploadResult.isPending()) { if (uploadResult.isPending()) {
return uploadResult; return new EditKeyResult(log, uploadResult);
} else if (!uploadResult.success() && saveParcel.isUploadAtomic()) { } else if (!uploadResult.success() && saveParcel.isUploadAtomic()) {
// if atomic, update fail implies edit operation should also fail and not save // if atomic, update fail implies edit operation should also fail and not save
log.add(uploadResult, 2); return new EditKeyResult(log, RequiredInputParcel.createRetryUploadOperation(), cryptoInput);
return new EditKeyResult(log, RequiredInputParcel.createRetryUploadOperation(),
cryptoInput);
} else {
// upload succeeded or not atomic so we continue
log.add(uploadResult, 2);
} }
} }

View file

@ -19,12 +19,13 @@
package org.sufficientlysecure.keychain.operations; package org.sufficientlysecure.keychain.operations;
import android.content.Context; import android.content.Context;
import android.net.Uri; import android.net.Uri;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.operations.results.InputPendingResult; import org.sufficientlysecure.keychain.operations.results.EditKeyResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult; import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.operations.results.RevokeResult; import org.sufficientlysecure.keychain.operations.results.RevokeResult;
import org.sufficientlysecure.keychain.pgp.Progressable; import org.sufficientlysecure.keychain.pgp.Progressable;
@ -79,9 +80,8 @@ public class RevokeOperation extends BaseOperation<RevokeKeyringParcel> {
saveKeyringParcel.mRevokeSubKeys.add(masterKeyId); saveKeyringParcel.mRevokeSubKeys.add(masterKeyId);
InputPendingResult revokeAndUploadResult = new EditKeyOperation(mContext, EditKeyResult revokeAndUploadResult = new EditKeyOperation(mContext,
mProviderHelper, mProgressable, mCancelled) mProviderHelper, mProgressable, mCancelled).execute(saveKeyringParcel, cryptoInputParcel);
.execute(saveKeyringParcel, cryptoInputParcel);
if (revokeAndUploadResult.isPending()) { if (revokeAndUploadResult.isPending()) {
return revokeAndUploadResult; return revokeAndUploadResult;

View file

@ -38,6 +38,11 @@ public class EditKeyResult extends InputPendingResult {
mMasterKeyId = null; mMasterKeyId = null;
} }
public EditKeyResult(OperationLog log, InputPendingResult result) {
super(log, result);
mMasterKeyId = null;
}
public EditKeyResult(Parcel source) { public EditKeyResult(Parcel source) {
super(source); super(source);
mMasterKeyId = source.readInt() != 0 ? source.readLong() : null; mMasterKeyId = source.readInt() != 0 ? source.readLong() : null;