#398 Check the URL (and draw the check) only on blur

Checking the URL on every text change can lead to privacy issues (e.g. if a subdomain is also an existing domain and a request is done to this domain).
This commit is contained in:
Niedermann IT-Dienstleistungen 2018-08-24 10:35:15 +02:00
parent ba19a6b63a
commit 2afc19ec58

View file

@ -76,6 +76,13 @@ public class SettingsActivity extends AppCompatActivity {
} }
} }
field_url.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
new URLValidatorAsyncTask().execute(getNormalizedUrl());
}
});
field_url.addTextChangedListener(new TextWatcher() { field_url.addTextChangedListener(new TextWatcher() {
@Override @Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@ -83,15 +90,7 @@ public class SettingsActivity extends AppCompatActivity {
@Override @Override
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
String url = field_url.getText().toString().trim(); String url = getNormalizedUrl();
if (!url.endsWith("/")) {
url += "/";
}
if (!url.startsWith("http://") && !url.startsWith("https://")) {
url = "https://" + url;
}
new URLValidatorAsyncTask().execute(url);
if (NotesClientUtil.isHttp(url)) { if (NotesClientUtil.isHttp(url)) {
urlWarnHttp.setVisibility(View.VISIBLE); urlWarnHttp.setVisibility(View.VISIBLE);
@ -202,6 +201,23 @@ public class SettingsActivity extends AppCompatActivity {
} }
} }
/**
* Takes care about protocol and a slash at the end.
* @return normalized Url
*/
private String getNormalizedUrl() {
String url = field_url.getText().toString().trim();
if (!url.endsWith("/")) {
url += "/";
}
if (!url.startsWith("http://") && !url.startsWith("https://")) {
url = "https://" + url;
}
return url;
}
/************************************ Async Tasks ************************************/ /************************************ Async Tasks ************************************/
/** /**