diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java index 1c9daf7c9..6d0db66ba 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/FacebookKeyserver.java @@ -52,10 +52,6 @@ public class FacebookKeyserver extends Keyserver { private static final String FB_HOST = "facebook.com"; private static final String FB_HOST_WWW = "www." + FB_HOST; - public static final String FB_URL = "https://" + FB_HOST_WWW; - - public static final String ORIGIN = FB_URL; - public FacebookKeyserver() { } 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 c80201cfb..fe9891193 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java @@ -172,7 +172,7 @@ public class ImportKeysActivity extends BaseActivity implements ImportKeysListen if (query != null && query.length() > 0) { // display keyserver fragment with query - startTopCloudFragment(query, false, null); + startTopCloudFragment(query, null); // action: search immediately startListFragment(null, null, query, null); @@ -190,9 +190,6 @@ public class ImportKeysActivity extends BaseActivity implements ImportKeysListen if (isFingerprintValid(fingerprint)) { String query = "0x" + fingerprint; - // display keyserver fragment with query - startTopCloudFragment(query, true, null); - // action: search immediately startListFragment(null, null, query, null); } @@ -210,27 +207,35 @@ public class ImportKeysActivity extends BaseActivity implements ImportKeysListen Preferences.CloudSearchPrefs cloudSearchPrefs = new Preferences.CloudSearchPrefs(false, true, true, null); - // we allow our users to edit the query if they wish - startTopCloudFragment(fbUsername, false, cloudSearchPrefs); // search immediately startListFragment(null, null, fbUsername, cloudSearchPrefs); break; } case ACTION_SEARCH_KEYSERVER_FROM_URL: { - // need to process URL to get search query and keyserver authority - String query = dataUri.getQueryParameter("search"); - // if query not specified, we still allow users to search the keyserver in the link - if (query == null) { - Notify.create(this, R.string.import_url_warn_no_search_parameter, Notify.LENGTH_INDEFINITE, - Notify.Style.WARN).show(); - } - ParcelableHkpKeyserver keyserver = new ParcelableHkpKeyserver(dataUri.getAuthority()); + // get keyserver from URL + ParcelableHkpKeyserver keyserver = new ParcelableHkpKeyserver( + dataUri.getScheme() + "://" + dataUri.getAuthority()); Preferences.CloudSearchPrefs cloudSearchPrefs = new Preferences.CloudSearchPrefs( - true, true, true, keyserver); - // we allow our users to edit the query if they wish - startTopCloudFragment(query, false, cloudSearchPrefs); - // search immediately (if query is not null) - startListFragment(null, null, query, cloudSearchPrefs); + true, false, false, keyserver); + Log.d(Constants.TAG, "Using keyserver: " + keyserver); + + // process URL to get operation and query + String operation = dataUri.getQueryParameter("op"); + String query = dataUri.getQueryParameter("search"); + + // if query or operation not specified, we still allow users to search + if (query == null || operation == null) { + startTopCloudFragment(null, cloudSearchPrefs); + startListFragment(null, null, null, cloudSearchPrefs); + } else { + if (operation.equalsIgnoreCase("get")) { + // don't allow searching here, only one key! + startListFragment(null, null, query, cloudSearchPrefs); + } else { // for example: operation: index + startTopCloudFragment(query, cloudSearchPrefs); + startListFragment(null, null, query, cloudSearchPrefs); + } + } break; } case ACTION_IMPORT_KEY_FROM_FILE: @@ -241,7 +246,7 @@ public class ImportKeysActivity extends BaseActivity implements ImportKeysListen break; } default: { - startTopCloudFragment(null, false, null); + startTopCloudFragment(null, null); startListFragment(null, null, null, null); break; } @@ -279,21 +284,19 @@ public class ImportKeysActivity extends BaseActivity implements ImportKeysListen } /** - * loads the CloudFragment, which consists of the search bar, search button and settings icon - * visually. + * loads the CloudFragment, which enables the search bar * * @param query search query - * @param disableQueryEdit if true, user will not be able to edit the search query * @param cloudSearchPrefs keyserver authority to use for search, if null will use keyserver * specified in user preferences */ - private void startTopCloudFragment(String query, boolean disableQueryEdit, + private void startTopCloudFragment(String query, Preferences.CloudSearchPrefs cloudSearchPrefs) { FragmentManager fM = getSupportFragmentManager(); if (fM.findFragmentByTag(TAG_FRAG_TOP) == null) { Fragment importCloudFragment = ImportKeysCloudFragment.newInstance(query, - disableQueryEdit, cloudSearchPrefs); + cloudSearchPrefs); fM.beginTransaction().add(importCloudFragment, TAG_FRAG_TOP).commit(); } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysCloudFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysCloudFragment.java index 7458b2f1c..47f2976fe 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysCloudFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysCloudFragment.java @@ -57,7 +57,6 @@ import static android.support.v7.widget.SearchView.OnSuggestionListener; public class ImportKeysCloudFragment extends Fragment { public static final String ARG_QUERY = "query"; - public static final String ARG_DISABLE_QUERY_EDIT = "disable_query_edit"; public static final String ARG_CLOUD_SEARCH_PREFS = "cloud_search_prefs"; private static final String CURSOR_SUGGESTION = "suggestion"; @@ -74,18 +73,16 @@ public class ImportKeysCloudFragment extends Fragment { * Creates new instance of this fragment * * @param query query to search for - * @param disableQueryEdit if true, user cannot edit query * @param cloudSearchPrefs search parameters to use. If null will retrieve from user's * preferences. */ - public static ImportKeysCloudFragment newInstance(String query, boolean disableQueryEdit, + public static ImportKeysCloudFragment newInstance(String query, CloudSearchPrefs cloudSearchPrefs) { ImportKeysCloudFragment frag = new ImportKeysCloudFragment(); Bundle args = new Bundle(); args.putString(ARG_QUERY, query); - args.putBoolean(ARG_DISABLE_QUERY_EDIT, disableQueryEdit); args.putParcelable(ARG_CLOUD_SEARCH_PREFS, cloudSearchPrefs); frag.setArguments(args); @@ -104,6 +101,8 @@ public class ImportKeysCloudFragment extends Fragment { new int[]{android.R.id.text1}, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); setHasOptionsMenu(true); + + // no view, just search view return null; } @@ -173,6 +172,11 @@ public class ImportKeysCloudFragment extends Fragment { searchItem.expandActionView(); + String query = getArguments().getString(ARG_QUERY); + if (query != null) { + searchView.setQuery(query, false); + } + super.onCreateOptionsMenu(menu, inflater); } diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index a7ff7feff..3ef164443 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -539,9 +539,6 @@ "Refresh" "Go to key" - - "No search query defined. You can still manually search on this keyserver." - "Details" ", with warnings"