diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2016-02-01 15:22:36 +0100 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2016-02-05 16:10:47 +0100 |
commit | b1ea1261425e05d7eaa803e6ea72c1f0bbb5ae32 (patch) | |
tree | adcf6f9d8bcfb76f0b3a22964de3e461fed49d34 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider | |
parent | e3b8cea04d43d9aafec544f56aa46ccf691a575d (diff) | |
download | open-keychain-b1ea1261425e05d7eaa803e6ea72c1f0bbb5ae32.tar.gz open-keychain-b1ea1261425e05d7eaa803e6ea72c1f0bbb5ae32.tar.bz2 open-keychain-b1ea1261425e05d7eaa803e6ea72c1f0bbb5ae32.zip |
performance: avoid expensive getSecretKeyType call, use cached where possible
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider')
2 files changed, 6 insertions, 4 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java index 7c9ef719e..604a5a027 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/CachedPublicKeyRing.java @@ -74,7 +74,7 @@ public class CachedPublicKeyRing extends KeyRing { public long extractOrGetMasterKeyId() throws PgpKeyNotFoundException { // try extracting from the uri first String firstSegment = mUri.getPathSegments().get(1); - if (!firstSegment.equals("find")) try { + if (!"find".equals(firstSegment)) try { return Long.parseLong(firstSegment); } catch (NumberFormatException e) { // didn't work? oh well. diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java index 375775ff1..505d3eb83 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/ProviderHelper.java @@ -34,6 +34,7 @@ import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.operations.results.ImportKeyResult; import org.sufficientlysecure.keychain.pgp.WrappedUserAttribute; +import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException; import org.sufficientlysecure.keychain.provider.KeychainContract.UserPackets; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.util.ParcelableFileCache.IteratorWithSize; @@ -254,8 +255,9 @@ public class ProviderHelper { KeyRings.MASTER_KEY_ID, FIELD_TYPE_INTEGER); } - public CachedPublicKeyRing getCachedPublicKeyRing(Uri queryUri) { - return new CachedPublicKeyRing(this, queryUri); + public CachedPublicKeyRing getCachedPublicKeyRing(Uri queryUri) throws PgpKeyNotFoundException { + long masterKeyId = new CachedPublicKeyRing(this, queryUri).extractOrGetMasterKeyId(); + return getCachedPublicKeyRing(masterKeyId); } public CachedPublicKeyRing getCachedPublicKeyRing(long id) { @@ -828,7 +830,7 @@ public class ProviderHelper { mIndent += 1; for (CanonicalizedSecretKey sub : keyRing.secretKeyIterator()) { long id = sub.getKeyId(); - SecretKeyType mode = sub.getSecretKeyType(); + SecretKeyType mode = sub.getSecretKeyTypeSuperExpensive(); values.put(Keys.HAS_SECRET, mode.getNum()); int upd = mContentResolver.update(uri, values, Keys.KEY_ID + " = ?", new String[]{Long.toString(id)}); |