aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-06-18 21:09:20 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-06-18 21:14:39 +0200
commit825f37eee4be6a4dc527391e6238668e6d147a36 (patch)
treec4c5babd16b881e925a239da440ad155174d39df /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service
parent5f20b8de1a052d366e5dcb24f2539062ae903156 (diff)
parent8ffc959f073c5ebd657c00a148606aa528a0caa0 (diff)
downloadopen-keychain-825f37eee4be6a4dc527391e6238668e6d147a36.tar.gz
open-keychain-825f37eee4be6a4dc527391e6238668e6d147a36.tar.bz2
open-keychain-825f37eee4be6a4dc527391e6238668e6d147a36.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java22
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java7
2 files changed, 23 insertions, 6 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java
index 8db9294df..6c4d59a77 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java
@@ -30,10 +30,14 @@ import org.sufficientlysecure.keychain.helper.ContactHelper;
import org.sufficientlysecure.keychain.helper.EmailKeyHelper;
import org.sufficientlysecure.keychain.util.Log;
+import java.util.concurrent.atomic.AtomicBoolean;
+
public class ContactSyncAdapterService extends Service {
private class ContactSyncAdapter extends AbstractThreadedSyncAdapter {
+ private final AtomicBoolean importDone = new AtomicBoolean(false);
+
public ContactSyncAdapter() {
super(ContactSyncAdapterService.this, true);
}
@@ -41,6 +45,8 @@ public class ContactSyncAdapterService extends Service {
@Override
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider,
final SyncResult syncResult) {
+ importDone.set(false);
+ KeychainApplication.setupAccountAsNeeded(ContactSyncAdapterService.this);
EmailKeyHelper.importContacts(getContext(), new Messenger(new Handler(Looper.getMainLooper(),
new Handler.Callback() {
@Override
@@ -48,11 +54,16 @@ public class ContactSyncAdapterService extends Service {
Bundle data = msg.getData();
switch (msg.arg1) {
case KeychainIntentServiceHandler.MESSAGE_OKAY:
+ Log.d(Constants.TAG, "Syncing... Done.");
+ synchronized (importDone) {
+ importDone.set(true);
+ importDone.notifyAll();
+ }
return true;
case KeychainIntentServiceHandler.MESSAGE_UPDATE_PROGRESS:
if (data.containsKey(KeychainIntentServiceHandler.DATA_PROGRESS) &&
data.containsKey(KeychainIntentServiceHandler.DATA_PROGRESS_MAX)) {
- Log.d(Constants.TAG, "Progress: " +
+ Log.d(Constants.TAG, "Syncing... Progress: " +
data.getInt(KeychainIntentServiceHandler.DATA_PROGRESS) + "/" +
data.getInt(KeychainIntentServiceHandler.DATA_PROGRESS_MAX));
return false;
@@ -63,7 +74,14 @@ public class ContactSyncAdapterService extends Service {
}
}
})));
- KeychainApplication.setupAccountAsNeeded(ContactSyncAdapterService.this);
+ synchronized (importDone) {
+ try {
+ if (!importDone.get()) importDone.wait();
+ } catch (InterruptedException e) {
+ Log.w(Constants.TAG, e);
+ return;
+ }
+ }
ContactHelper.writeKeysToContacts(ContactSyncAdapterService.this);
}
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
index 25a9387f4..7e2cdcd15 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
@@ -482,7 +482,7 @@ public class KeychainIntentService extends IntentService
/* Operation */
ProviderHelper providerHelper = new ProviderHelper(this);
- PgpKeyOperation keyOperations = new PgpKeyOperation(new ProgressScaler(this, 0, 90, 100));
+ PgpKeyOperation keyOperations = new PgpKeyOperation(new ProgressScaler(this, 10, 50, 100));
try {
String passphrase = data.getString(SAVE_KEYRING_PASSPHRASE);
WrappedSecretKeyRing secRing = providerHelper.getWrappedSecretKeyRing(masterKeyId);
@@ -490,12 +490,11 @@ public class KeychainIntentService extends IntentService
OperationLog log = new OperationLog();
UncachedKeyRing ring = keyOperations.modifySecretKeyRing(secRing, saveParcel,
passphrase, log, 0);
- setProgress(R.string.progress_saving_key_ring, 90, 100);
- providerHelper.saveSecretKeyRing(ring);
+ providerHelper.saveSecretKeyRing(ring, new ProgressScaler(this, 60, 95, 100));
} catch (ProviderHelper.NotFoundException e) {
// UncachedKeyRing ring = keyOperations.(saveParcel); //new Keyring
// save the pair
- setProgress(R.string.progress_saving_key_ring, 90, 100);
+ setProgress(R.string.progress_saving_key_ring, 95, 100);
// providerHelper.saveSecretKeyRing(ring);
sendErrorToHandler(e);
}