diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java index de6807e4a..51c840d89 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/CloudSearch.java @@ -42,16 +42,16 @@ public class CloudSearch { // it's a Vector for sync, multiple threads might report problems final Vector problems = new Vector<>(); - if (cloudPrefs.searchKeyserver) { - servers.add(HkpKeyserverClient.fromHkpKeyserverAddress(cloudPrefs.keyserver)); + if (cloudPrefs.isKeyserverEnabled()) { + servers.add(HkpKeyserverClient.fromHkpKeyserverAddress(cloudPrefs.getKeyserver())); } - if (cloudPrefs.searchKeybase) { + if (cloudPrefs.isKeybaseEnabled()) { servers.add(KeybaseKeyserverClient.getInstance()); } - if (cloudPrefs.searchFacebook) { + if (cloudPrefs.isFacebookEnabled()) { servers.add(FacebookKeyserverClient.getInstance()); } - if (cloudPrefs.searchWebKeyDirectory) { + if (cloudPrefs.isWebKeyDirectoryEnabled()) { servers.add(WebKeyDirectoryClient.getInstance()); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java index f2d718b8a..eef8589cd 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java @@ -207,14 +207,14 @@ public class ImportKeysActivity extends BaseActivity implements ImportKeysListen String fbUsername = FacebookKeyserverClient.getUsernameFromUri(dataUri); Preferences.CloudSearchPrefs cloudSearchPrefs = - new Preferences.CloudSearchPrefs(false, true, true, false, null); + Preferences.CloudSearchPrefs.createSocialOnly(); // search immediately startListFragment(null, null, fbUsername, cloudSearchPrefs); break; } case ACTION_IMPORT_KEY_FROM_WEB_KEY_DIRECTORY: { Preferences.CloudSearchPrefs cloudSearchPrefs = - new Preferences.CloudSearchPrefs(false, false, false, true, null); + Preferences.CloudSearchPrefs.createWebKeyDirectoryOnly(); // search immediately startListFragment(null, null, dataUri.toString(), cloudSearchPrefs); break; @@ -223,8 +223,7 @@ public class ImportKeysActivity extends BaseActivity implements ImportKeysListen // get keyserver from URL HkpKeyserverAddress keyserver = HkpKeyserverAddress.createFromUri( dataUri.getScheme() + "://" + dataUri.getAuthority()); - Preferences.CloudSearchPrefs cloudSearchPrefs = new Preferences.CloudSearchPrefs( - true, false, false, false, keyserver); + Preferences.CloudSearchPrefs cloudSearchPrefs = Preferences.CloudSearchPrefs.createKeyserverOnly(keyserver); Timber.d("Using keyserver: " + keyserver); // process URL to get operation and query diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java index 233eddf5f..4da18b909 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/Preferences.java @@ -18,28 +18,27 @@ package org.sufficientlysecure.keychain.util; -import java.net.Proxy; -import java.util.ArrayList; -import java.util.ListIterator; - import android.accounts.Account; import android.annotation.SuppressLint; import android.content.ContentResolver; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; -import android.os.Parcel; import android.os.Parcelable; import android.preference.PreferenceManager; - +import android.support.annotation.Nullable; +import com.google.auto.value.AutoValue; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.Constants.Pref; import org.sufficientlysecure.keychain.KeychainApplication; import org.sufficientlysecure.keychain.keyimport.HkpKeyserverAddress; import org.sufficientlysecure.keychain.service.KeyserverSyncAdapterService; - import timber.log.Timber; +import java.net.Proxy; +import java.util.ArrayList; +import java.util.ListIterator; + /** * Singleton Implementation of a Preference Helper @@ -345,7 +344,7 @@ public class Preferences { // cloud prefs public CloudSearchPrefs getCloudSearchPrefs() { - return new CloudSearchPrefs(mSharedPreferences.getBoolean(Pref.SEARCH_KEYSERVER, true), + return CloudSearchPrefs.create(mSharedPreferences.getBoolean(Pref.SEARCH_KEYSERVER, true), mSharedPreferences.getBoolean(Pref.SEARCH_KEYBASE, true), false, true, @@ -362,62 +361,44 @@ public class Preferences { editor.commit(); } - public static class CloudSearchPrefs implements Parcelable { - public final boolean searchKeyserver; - public final boolean searchKeybase; - public final boolean searchFacebook; - public final boolean searchWebKeyDirectory; - public final HkpKeyserverAddress keyserver; + @AutoValue + public static abstract class CloudSearchPrefs implements Parcelable { + public abstract boolean isKeyserverEnabled(); + public abstract boolean isKeybaseEnabled(); + public abstract boolean isFacebookEnabled(); + public abstract boolean isWebKeyDirectoryEnabled(); + + @Nullable + public abstract HkpKeyserverAddress getKeyserver(); /** - * @param searchKeyserver should passed keyserver be searched - * @param searchKeybase should keybase.io be searched - * @param keyserver the keyserver url authority to search on + * @param searchKeyserver should passed keyserver be searched + * @param searchKeybase should keybase.io be searched + * @param searchFacebook should Facebook be searched + * @param searchWebKeyDirectory should WKD be searched + * @param keyserver the keyserver url authority to search on */ - public CloudSearchPrefs(boolean searchKeyserver, boolean searchKeybase, - boolean searchFacebook, boolean searchWebKeyDirectory, - HkpKeyserverAddress keyserver) { - this.searchKeyserver = searchKeyserver; - this.searchKeybase = searchKeybase; - this.searchFacebook = searchFacebook; - this.searchWebKeyDirectory = searchWebKeyDirectory; - this.keyserver = keyserver; + public static CloudSearchPrefs create(boolean searchKeyserver, boolean searchKeybase, + boolean searchFacebook, boolean searchWebKeyDirectory, + @Nullable HkpKeyserverAddress keyserver) { + return new AutoValue_Preferences_CloudSearchPrefs(searchKeyserver, + searchKeybase, + searchFacebook, + searchWebKeyDirectory, + keyserver); } - protected CloudSearchPrefs(Parcel in) { - searchKeyserver = in.readByte() != 0x00; - searchKeybase = in.readByte() != 0x00; - searchFacebook = in.readByte() != 0x00; - searchWebKeyDirectory = in.readByte() != 0x00; - keyserver = in.readParcelable(HkpKeyserverAddress.class.getClassLoader()); + public static CloudSearchPrefs createWebKeyDirectoryOnly() { + return create(false, false, false, true, null); } - @Override - public int describeContents() { - return 0; + public static CloudSearchPrefs createKeyserverOnly(HkpKeyserverAddress keyserver) { + return create(true, false, false, false, keyserver); } - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeByte((byte) (searchKeyserver ? 0x01 : 0x00)); - dest.writeByte((byte) (searchKeybase ? 0x01 : 0x00)); - dest.writeByte((byte) (searchFacebook ? 0x01 : 0x00)); - dest.writeByte((byte) (searchWebKeyDirectory ? 0x01 : 0x00)); - dest.writeParcelable(keyserver, flags); + public static CloudSearchPrefs createSocialOnly() { + return create(false, true, true, false, null); } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - @Override - public CloudSearchPrefs createFromParcel(Parcel in) { - return new CloudSearchPrefs(in); - } - - @Override - public CloudSearchPrefs[] newArray(int size) { - return new CloudSearchPrefs[size]; - } - }; } // sync preferences