Automatically construct CloudSearchPrefs using auto-value

This commit is contained in:
Wiktor Kwapisiewicz
2018-05-22 21:31:38 +02:00
parent f6b3887f93
commit fe78850b3d
3 changed files with 43 additions and 63 deletions

View File

@@ -42,16 +42,16 @@ public class CloudSearch {
// it's a Vector for sync, multiple threads might report problems // it's a Vector for sync, multiple threads might report problems
final Vector<KeyserverClient.CloudSearchFailureException> problems = new Vector<>(); final Vector<KeyserverClient.CloudSearchFailureException> problems = new Vector<>();
if (cloudPrefs.searchKeyserver) { if (cloudPrefs.isKeyserverEnabled()) {
servers.add(HkpKeyserverClient.fromHkpKeyserverAddress(cloudPrefs.keyserver)); servers.add(HkpKeyserverClient.fromHkpKeyserverAddress(cloudPrefs.getKeyserver()));
} }
if (cloudPrefs.searchKeybase) { if (cloudPrefs.isKeybaseEnabled()) {
servers.add(KeybaseKeyserverClient.getInstance()); servers.add(KeybaseKeyserverClient.getInstance());
} }
if (cloudPrefs.searchFacebook) { if (cloudPrefs.isFacebookEnabled()) {
servers.add(FacebookKeyserverClient.getInstance()); servers.add(FacebookKeyserverClient.getInstance());
} }
if (cloudPrefs.searchWebKeyDirectory) { if (cloudPrefs.isWebKeyDirectoryEnabled()) {
servers.add(WebKeyDirectoryClient.getInstance()); servers.add(WebKeyDirectoryClient.getInstance());
} }

View File

@@ -207,14 +207,14 @@ public class ImportKeysActivity extends BaseActivity implements ImportKeysListen
String fbUsername = FacebookKeyserverClient.getUsernameFromUri(dataUri); String fbUsername = FacebookKeyserverClient.getUsernameFromUri(dataUri);
Preferences.CloudSearchPrefs cloudSearchPrefs = Preferences.CloudSearchPrefs cloudSearchPrefs =
new Preferences.CloudSearchPrefs(false, true, true, false, null); Preferences.CloudSearchPrefs.createSocialOnly();
// search immediately // search immediately
startListFragment(null, null, fbUsername, cloudSearchPrefs); startListFragment(null, null, fbUsername, cloudSearchPrefs);
break; break;
} }
case ACTION_IMPORT_KEY_FROM_WEB_KEY_DIRECTORY: { case ACTION_IMPORT_KEY_FROM_WEB_KEY_DIRECTORY: {
Preferences.CloudSearchPrefs cloudSearchPrefs = Preferences.CloudSearchPrefs cloudSearchPrefs =
new Preferences.CloudSearchPrefs(false, false, false, true, null); Preferences.CloudSearchPrefs.createWebKeyDirectoryOnly();
// search immediately // search immediately
startListFragment(null, null, dataUri.toString(), cloudSearchPrefs); startListFragment(null, null, dataUri.toString(), cloudSearchPrefs);
break; break;
@@ -223,8 +223,7 @@ public class ImportKeysActivity extends BaseActivity implements ImportKeysListen
// get keyserver from URL // get keyserver from URL
HkpKeyserverAddress keyserver = HkpKeyserverAddress.createFromUri( HkpKeyserverAddress keyserver = HkpKeyserverAddress.createFromUri(
dataUri.getScheme() + "://" + dataUri.getAuthority()); dataUri.getScheme() + "://" + dataUri.getAuthority());
Preferences.CloudSearchPrefs cloudSearchPrefs = new Preferences.CloudSearchPrefs( Preferences.CloudSearchPrefs cloudSearchPrefs = Preferences.CloudSearchPrefs.createKeyserverOnly(keyserver);
true, false, false, false, keyserver);
Timber.d("Using keyserver: " + keyserver); Timber.d("Using keyserver: " + keyserver);
// process URL to get operation and query // process URL to get operation and query

View File

@@ -18,28 +18,27 @@
package org.sufficientlysecure.keychain.util; package org.sufficientlysecure.keychain.util;
import java.net.Proxy;
import java.util.ArrayList;
import java.util.ListIterator;
import android.accounts.Account; import android.accounts.Account;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor; import android.content.SharedPreferences.Editor;
import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import android.preference.PreferenceManager; 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;
import org.sufficientlysecure.keychain.Constants.Pref; import org.sufficientlysecure.keychain.Constants.Pref;
import org.sufficientlysecure.keychain.KeychainApplication; import org.sufficientlysecure.keychain.KeychainApplication;
import org.sufficientlysecure.keychain.keyimport.HkpKeyserverAddress; import org.sufficientlysecure.keychain.keyimport.HkpKeyserverAddress;
import org.sufficientlysecure.keychain.service.KeyserverSyncAdapterService; import org.sufficientlysecure.keychain.service.KeyserverSyncAdapterService;
import timber.log.Timber; import timber.log.Timber;
import java.net.Proxy;
import java.util.ArrayList;
import java.util.ListIterator;
/** /**
* Singleton Implementation of a Preference Helper * Singleton Implementation of a Preference Helper
@@ -345,7 +344,7 @@ public class Preferences {
// cloud prefs // cloud prefs
public CloudSearchPrefs getCloudSearchPrefs() { 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), mSharedPreferences.getBoolean(Pref.SEARCH_KEYBASE, true),
false, false,
true, true,
@@ -362,62 +361,44 @@ public class Preferences {
editor.commit(); editor.commit();
} }
public static class CloudSearchPrefs implements Parcelable { @AutoValue
public final boolean searchKeyserver; public static abstract class CloudSearchPrefs implements Parcelable {
public final boolean searchKeybase; public abstract boolean isKeyserverEnabled();
public final boolean searchFacebook; public abstract boolean isKeybaseEnabled();
public final boolean searchWebKeyDirectory; public abstract boolean isFacebookEnabled();
public final HkpKeyserverAddress keyserver; public abstract boolean isWebKeyDirectoryEnabled();
@Nullable
public abstract HkpKeyserverAddress getKeyserver();
/** /**
* @param searchKeyserver should passed keyserver be searched * @param searchKeyserver should passed keyserver be searched
* @param searchKeybase should keybase.io be searched * @param searchKeybase should keybase.io be searched
* @param keyserver the keyserver url authority to search on * @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, public static CloudSearchPrefs create(boolean searchKeyserver, boolean searchKeybase,
boolean searchFacebook, boolean searchWebKeyDirectory, boolean searchFacebook, boolean searchWebKeyDirectory,
HkpKeyserverAddress keyserver) { @Nullable HkpKeyserverAddress keyserver) {
this.searchKeyserver = searchKeyserver; return new AutoValue_Preferences_CloudSearchPrefs(searchKeyserver,
this.searchKeybase = searchKeybase; searchKeybase,
this.searchFacebook = searchFacebook; searchFacebook,
this.searchWebKeyDirectory = searchWebKeyDirectory; searchWebKeyDirectory,
this.keyserver = keyserver; keyserver);
} }
protected CloudSearchPrefs(Parcel in) { public static CloudSearchPrefs createWebKeyDirectoryOnly() {
searchKeyserver = in.readByte() != 0x00; return create(false, false, false, true, null);
searchKeybase = in.readByte() != 0x00;
searchFacebook = in.readByte() != 0x00;
searchWebKeyDirectory = in.readByte() != 0x00;
keyserver = in.readParcelable(HkpKeyserverAddress.class.getClassLoader());
} }
@Override public static CloudSearchPrefs createKeyserverOnly(HkpKeyserverAddress keyserver) {
public int describeContents() { return create(true, false, false, false, keyserver);
return 0;
} }
@Override public static CloudSearchPrefs createSocialOnly() {
public void writeToParcel(Parcel dest, int flags) { return create(false, true, true, false, null);
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 final Parcelable.Creator<CloudSearchPrefs> CREATOR
= new Parcelable.Creator<CloudSearchPrefs>() {
@Override
public CloudSearchPrefs createFromParcel(Parcel in) {
return new CloudSearchPrefs(in);
}
@Override
public CloudSearchPrefs[] newArray(int size) {
return new CloudSearchPrefs[size];
}
};
} }
// sync preferences // sync preferences