diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2014-06-18 21:09:20 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2014-06-18 21:14:39 +0200 |
commit | 825f37eee4be6a4dc527391e6238668e6d147a36 (patch) | |
tree | c4c5babd16b881e925a239da440ad155174d39df /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service | |
parent | 5f20b8de1a052d366e5dcb24f2539062ae903156 (diff) | |
parent | 8ffc959f073c5ebd657c00a148606aa528a0caa0 (diff) | |
download | open-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')
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); } |