aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain
diff options
context:
space:
mode:
authorAdithya Abraham Philip <adithyaphilip@gmail.com>2015-06-23 23:51:31 +0530
committerAdithya Abraham Philip <adithyaphilip@gmail.com>2015-06-27 01:20:23 +0530
commitaf6a37f02b0fd51bc895e1b9aa5fea2fc0c209be (patch)
treefa7b68603b1bdf977e475ef143615b54cf61891f /OpenKeychain/src/main/java/org/sufficientlysecure/keychain
parent5a5d66009f22eb93874acd369443acb25700456c (diff)
downloadopen-keychain-af6a37f02b0fd51bc895e1b9aa5fea2fc0c209be.tar.gz
open-keychain-af6a37f02b0fd51bc895e1b9aa5fea2fc0c209be.tar.bz2
open-keychain-af6a37f02b0fd51bc895e1b9aa5fea2fc0c209be.zip
migrated key creation to KeychainNewService
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainService.java21
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java109
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java14
3 files changed, 52 insertions, 92 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainService.java
index eec29b123..83e435c96 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainService.java
@@ -103,11 +103,6 @@ public class KeychainService extends Service implements Progressable {
public static final String KEYBASE_REQUIRED_FINGERPRINT = "keybase_required_fingerprint";
public static final String KEYBASE_PROOF = "keybase_proof";
- // save keyring
- public static final String EDIT_KEYRING_PARCEL = "save_parcel";
- public static final String EDIT_KEYRING_PASSPHRASE = "passphrase";
- public static final String EXTRA_CRYPTO_INPUT = "crypto_input";
-
// delete keyring(s)
public static final String DELETE_KEY_LIST = "delete_list";
public static final String DELETE_IS_SECRET = "delete_is_secret";
@@ -301,22 +296,6 @@ public class KeychainService extends Service implements Progressable {
break;
}
- case ACTION_EDIT_KEYRING: {
-
- // Input
- SaveKeyringParcel saveParcel = data.getParcelable(EDIT_KEYRING_PARCEL);
- CryptoInputParcel cryptoInput = data.getParcelable(EXTRA_CRYPTO_INPUT);
-
- // Operation
- EditKeyOperation op = new EditKeyOperation(KeychainService.this, providerHelper,
- KeychainService.this, mActionCanceled);
- OperationResult result = op.execute(saveParcel, cryptoInput);
-
- // Result
- sendMessageToHandler(MessageStatus.OKAY, result);
-
- break;
- }
case ACTION_PROMOTE_KEYRING: {
// Input
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
index 7a580c541..1a5c3cd96 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java
@@ -24,7 +24,6 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Message;
import android.os.Messenger;
-import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -46,13 +45,15 @@ import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.Algorithm;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.ChangeUnlockParcel;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction;
+import org.sufficientlysecure.keychain.ui.base.CryptoOperationFragment;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.Preferences;
import java.util.Iterator;
-public class CreateKeyFinalFragment extends Fragment {
+public class CreateKeyFinalFragment
+ extends CryptoOperationFragment<SaveKeyringParcel, EditKeyResult> {
public static final int REQUEST_EDIT_KEY = 0x00008007;
@@ -66,7 +67,7 @@ public class CreateKeyFinalFragment extends Fragment {
SaveKeyringParcel mSaveKeyringParcel;
- private CryptoOperationHelper<ExportKeyringParcel, ExportResult> mOperationHelper;
+ private CryptoOperationHelper<ExportKeyringParcel, ExportResult> mUploadOpHelper;
public static CreateKeyFinalFragment newInstance() {
CreateKeyFinalFragment frag = new CreateKeyFinalFragment();
@@ -139,8 +140,8 @@ public class CreateKeyFinalFragment extends Fragment {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (mOperationHelper != null) {
- mOperationHelper.handleActivityResult(requestCode, resultCode, data);
+ if (mUploadOpHelper != null) {
+ mUploadOpHelper.handleActivityResult(requestCode, resultCode, data);
}
switch (requestCode) {
case REQUEST_EDIT_KEY: {
@@ -157,6 +158,30 @@ public class CreateKeyFinalFragment extends Fragment {
}
@Override
+ protected SaveKeyringParcel createOperationInput() {
+ return mSaveKeyringParcel;
+ }
+
+ @Override
+ protected void onCryptoOperationSuccess(EditKeyResult result) {
+ if (result.mMasterKeyId != null && mUploadCheckbox.isChecked()) {
+ // result will be displayed after upload
+ uploadKey(result);
+ } else {
+ Intent data = new Intent();
+ data.putExtra(OperationResult.EXTRA_RESULT, result);
+ getActivity().setResult(Activity.RESULT_OK, data);
+ getActivity().finish();
+ }
+ }
+
+ @Override
+ protected void onCryptoOperationResult(EditKeyResult result) {
+ // do something else?
+ super.onCryptoOperationResult(result);
+ }
+
+ @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
@@ -202,57 +227,8 @@ public class CreateKeyFinalFragment extends Fragment {
private void createKey() {
- Intent intent = new Intent(getActivity(), KeychainService.class);
- intent.setAction(KeychainService.ACTION_EDIT_KEYRING);
-
- ServiceProgressHandler saveHandler = new ServiceProgressHandler(getActivity()) {
- @Override
- public void handleMessage(Message message) {
- // handle messages by standard KeychainIntentServiceHandler first
- super.handleMessage(message);
-
- if (message.arg1 == MessageStatus.OKAY.ordinal()) {
- // get returned data bundle
- Bundle returnData = message.getData();
- if (returnData == null) {
- return;
- }
- final EditKeyResult result =
- returnData.getParcelable(OperationResult.EXTRA_RESULT);
- if (result == null) {
- Log.e(Constants.TAG, "result == null");
- return;
- }
-
- if (result.mMasterKeyId != null && mUploadCheckbox.isChecked()) {
- // result will be displayed after upload
- uploadKey(result);
- } else {
- Intent data = new Intent();
- data.putExtra(OperationResult.EXTRA_RESULT, result);
- getActivity().setResult(Activity.RESULT_OK, data);
- getActivity().finish();
- }
- }
- }
- };
-
- // fill values for this action
- Bundle data = new Bundle();
-
- // get selected key entries
- data.putParcelable(KeychainService.EDIT_KEYRING_PARCEL, mSaveKeyringParcel);
-
- intent.putExtra(KeychainService.EXTRA_DATA, data);
-
- // Create a new Messenger for the communication back
- Messenger messenger = new Messenger(saveHandler);
- intent.putExtra(KeychainService.EXTRA_MESSENGER, messenger);
-
- saveHandler.showProgressDialog(getString(R.string.progress_building_key),
- ProgressDialog.STYLE_HORIZONTAL, false);
-
- getActivity().startService(intent);
+ super.setProgressMessageResource(R.string.progress_building_key);
+ super.cryptoOperation();
}
// TODO move into EditKeyOperation
@@ -274,16 +250,7 @@ public class CreateKeyFinalFragment extends Fragment {
@Override
public void onCryptoOperationSuccess(ExportResult result) {
- // TODO: upload operation needs a result!
- // TODO: then combine these results (saveKeyResult and update op result)
- //if (result.getResult() == OperationResultParcel.RESULT_OK) {
- //Notify.create(getActivity(), R.string.key_send_success,
- //Notify.Style.OK).show();
-
- Intent data = new Intent();
- data.putExtra(OperationResult.EXTRA_RESULT, saveKeyResult);
- getActivity().setResult(Activity.RESULT_OK, data);
- getActivity().finish();
+ handleResult(result);
}
@Override
@@ -293,8 +260,11 @@ public class CreateKeyFinalFragment extends Fragment {
@Override
public void onCryptoOperationError(ExportResult result) {
+ handleResult(result);
+ }
- // TODO: upload operation needs a result!
+ public void handleResult(ExportResult result) {
+ // TODO: upload operation needs a result! "result" is not currenlty used
// TODO: then combine these results (saveKeyResult and update op result)
//if (result.getResult() == OperationResultParcel.RESULT_OK) {
//Notify.create(getActivity(), R.string.key_send_success,
@@ -307,8 +277,9 @@ public class CreateKeyFinalFragment extends Fragment {
}
};
- mOperationHelper = new CryptoOperationHelper<>(this, callback, R.string.progress_uploading);
- mOperationHelper.cryptoOperation();
+
+ mUploadOpHelper = new CryptoOperationHelper<>(this, callback, R.string.progress_uploading);
+ mUploadOpHelper.cryptoOperation();
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java
index 53ab33dc5..3c837206d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/base/CryptoOperationFragment.java
@@ -84,15 +84,25 @@ public abstract class CryptoOperationFragment<T extends Parcelable, S extends Op
}
protected void onCryptoOperationError(S result) {
+ onCryptoOperationResult(result);
result.createNotify(getActivity()).show();
}
protected void onCryptoOperationCancelled() {
}
- abstract protected void onCryptoOperationSuccess(S result);
+ protected void onCryptoOperationSuccess(S result) {
+ onCryptoOperationResult(result);
+ }
+ /**
+ *
+ * To be overriden by subclasses, if desired. Provides a way to access the method by the
+ * same name in CryptoOperationHelper, if super.onCryptoOperationSuccess and
+ * super.onCryptoOperationError are called at the start of the respective functions in the
+ * subclass overriding them
+ * @param result
+ */
protected void onCryptoOperationResult(S result) {
- mOperationHelper.onCryptoOperationResult(result);
}
}