diff --git a/app/src/main/java/eu/faircode/email/AdapterContact.java b/app/src/main/java/eu/faircode/email/AdapterContact.java index ad0eb19482..503118d84f 100644 --- a/app/src/main/java/eu/faircode/email/AdapterContact.java +++ b/app/src/main/java/eu/faircode/email/AdapterContact.java @@ -48,6 +48,7 @@ import androidx.recyclerview.widget.RecyclerView; import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; +import java.util.Locale; public class AdapterContact extends RecyclerView.Adapter { private Fragment parentFragment; @@ -322,9 +323,9 @@ public class AdapterContact extends RecyclerView.Adapter(); - String query = search.toLowerCase().trim(); + String query = search.toLowerCase(Locale.ROOT).trim(); for (TupleContactEx contact : contacts) - if (contact.email.toLowerCase().contains(query) || + if (contact.email.toLowerCase(Locale.ROOT).contains(query) || (contact.name != null && contact.name.toLowerCase().contains(query))) items.add(contact); } diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index d02874dc5d..04be385108 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -137,6 +137,7 @@ import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Objects; @@ -1851,7 +1852,7 @@ public class AdapterMessage extends RecyclerView.Adapter 0) for (String keyword : message.keywords) - if (keyword.toLowerCase().contains(find)) { + if (keyword.toLowerCase(Locale.ROOT).contains(find)) { match = true; break; } @@ -222,7 +223,7 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback Build.VERSION_CODES.O && message.notifying == 0 && message.from != null && message.from.length > 0) { InternetAddress from = (InternetAddress) message.from[0]; - NotificationChannel channel = nm.getNotificationChannel("notification." + from.getAddress().toLowerCase()); + NotificationChannel channel = nm.getNotificationChannel( + "notification." + from.getAddress().toLowerCase(Locale.ROOT)); if (channel != null && channel.getImportance() == NotificationManager.IMPORTANCE_NONE) continue; } @@ -2481,7 +2483,8 @@ class Core { if (message.from != null && message.from.length > 0) { InternetAddress from = (InternetAddress) message.from[0]; - channel = nm.getNotificationChannel("notification." + from.getAddress().toLowerCase()); + channel = nm.getNotificationChannel( + "notification." + from.getAddress().toLowerCase(Locale.ROOT)); } if (channel == null) diff --git a/app/src/main/java/eu/faircode/email/EmailProvider.java b/app/src/main/java/eu/faircode/email/EmailProvider.java index d38b1a13c3..3cab3b4639 100644 --- a/app/src/main/java/eu/faircode/email/EmailProvider.java +++ b/app/src/main/java/eu/faircode/email/EmailProvider.java @@ -160,12 +160,12 @@ public class EmailProvider { static EmailProvider fromDomain(Context context, String domain, Discover discover) throws IOException { List providers = loadProfiles(context); for (EmailProvider provider : providers) - if (provider.domain != null && provider.domain.contains(domain.toLowerCase())) { + if (provider.domain != null && provider.domain.contains(domain.toLowerCase(Locale.ROOT))) { Log.i("Provider from domain=" + domain); return provider; } - EmailProvider autoconfig = _fromDomain(context, domain.toLowerCase(), discover); + EmailProvider autoconfig = _fromDomain(context, domain.toLowerCase(Locale.ROOT), discover); // Always prefer built-in profiles // - ISPDB is not always correct diff --git a/app/src/main/java/eu/faircode/email/EntityFolder.java b/app/src/main/java/eu/faircode/email/EntityFolder.java index 485f4114a2..b858d09111 100644 --- a/app/src/main/java/eu/faircode/email/EntityFolder.java +++ b/app/src/main/java/eu/faircode/email/EntityFolder.java @@ -303,7 +303,7 @@ public class EntityFolder extends EntityOrder implements Serializable { static String guessType(String fullName) { for (String guess : GUESS_FOLDER_TYPE.keySet()) - if (fullName.toLowerCase().contains(guess)) + if (fullName.toLowerCase(Locale.ROOT).contains(guess)) return GUESS_FOLDER_TYPE.get(guess); return null; } diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java index 48f47c4b7a..ece01d3bb5 100644 --- a/app/src/main/java/eu/faircode/email/EntityRule.java +++ b/app/src/main/java/eu/faircode/email/EntityRule.java @@ -44,6 +44,7 @@ import java.util.Calendar; import java.util.Date; import java.util.Enumeration; import java.util.List; +import java.util.Locale; import java.util.regex.Pattern; import javax.mail.Address; @@ -250,7 +251,8 @@ public class EntityRule { Pattern pattern = Pattern.compile(needle, Pattern.DOTALL); matched = pattern.matcher(haystack).matches(); } else - matched = haystack.toLowerCase().contains(needle.trim().toLowerCase()); + matched = haystack.toLowerCase(Locale.ROOT) + .contains(needle.trim().toLowerCase(Locale.ROOT)); Log.i("Rule=" + name + " matched=" + matched + " needle=" + needle + " haystack=" + haystack + " regex=" + regex); diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 3608ebfba9..f5d493b659 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1142,7 +1142,7 @@ public class FragmentCompose extends FragmentBase { String[] tos = new String[ato.length]; for (int i = 0; i < ato.length; i++) - tos[i] = ato[i].getAddress().toLowerCase(); + tos[i] = ato[i].getAddress().toLowerCase(Locale.ROOT); Intent intent = new Intent(OpenPgpApi.ACTION_GET_KEY_IDS); intent.putExtra(OpenPgpApi.EXTRA_USER_IDS, tos); @@ -1865,7 +1865,8 @@ public class FragmentCompose extends FragmentBase { String extension = Helper.getExtension(attachment.name); if (extension != null) - attachment.type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase()); + attachment.type = MimeTypeMap.getSingleton() + .getMimeTypeFromExtension(extension.toLowerCase(Locale.ROOT)); if (attachment.type == null) attachment.type = "application/octet-stream"; attachment.disposition = (image ? Part.INLINE : Part.ATTACHMENT); diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 0e51c486f3..b9f7f608d3 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -92,7 +92,6 @@ import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Objects; -import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; @@ -393,7 +392,7 @@ public class Helper { static String localizeFolderType(Context context, String type) { int resid = context.getResources().getIdentifier( - "title_folder_" + type.toLowerCase(), + "title_folder_" + type.toLowerCase(Locale.ROOT), "string", context.getPackageName()); return (resid > 0 ? context.getString(resid) : type); diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index f83dfc9d33..55388c963d 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -71,6 +71,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.regex.Matcher; @@ -154,10 +155,14 @@ public class HtmlHelper { for (String param : params) { String[] kv = param.split(":"); if (kv.length == 2) - switch (kv[0].trim().toLowerCase()) { + switch (kv[0].trim().toLowerCase(Locale.ROOT)) { case "color": sb.append(param).append(";"); break; + + case "background": + case "background-color": + break; } } @@ -849,8 +854,8 @@ public class HtmlHelper { if (params.length > 0) { List viewport = new ArrayList<>(); for (String param : params) - if (!param.toLowerCase().contains("maximum-scale") && - !param.toLowerCase().contains("user-scalable")) + if (!param.toLowerCase(Locale.ROOT).contains("maximum-scale") && + !param.toLowerCase(Locale.ROOT).contains("user-scalable")) viewport.add(param.trim()); if (viewport.size() == 0) diff --git a/app/src/main/java/eu/faircode/email/MailService.java b/app/src/main/java/eu/faircode/email/MailService.java index 7fd5dd838e..69b4a27e7d 100644 --- a/app/src/main/java/eu/faircode/email/MailService.java +++ b/app/src/main/java/eu/faircode/email/MailService.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Properties; import java.util.concurrent.ExecutorService; @@ -65,7 +66,7 @@ public class MailService implements AutoCloseable { properties.put("mail.event.scope", "folder"); properties.put("mail.event.executor", executor); - String checkserveridentity = Boolean.toString(!insecure).toLowerCase(); + String checkserveridentity = Boolean.toString(!insecure).toLowerCase(Locale.ROOT); if ("pop3".equals(protocol) || "pop3s".equals(protocol)) { this.debug = true; diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 3af7df9e84..bf5e092ba6 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -50,6 +50,7 @@ import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Properties; @@ -1136,7 +1137,7 @@ public class MessageHelper { try { ContentType ct = new ContentType(cpart.getContentType()); - if ("application/pgp-encrypted".equals(ct.getBaseType().toLowerCase())) { + if ("application/pgp-encrypted".equals(ct.getBaseType().toLowerCase(Locale.ROOT))) { pgp = true; continue; } @@ -1157,7 +1158,7 @@ public class MessageHelper { try { disposition = part.getDisposition(); if (disposition != null) - disposition = disposition.toLowerCase(); + disposition = disposition.toLowerCase(Locale.ROOT); } catch (MessagingException ex) { Log.w(ex); parts.warnings.add(Helper.formatThrowable(ex, false)); @@ -1213,7 +1214,7 @@ public class MessageHelper { apart.attachment = new EntityAttachment(); apart.attachment.name = apart.filename; - apart.attachment.type = ct.getBaseType().toLowerCase(); + apart.attachment.type = ct.getBaseType().toLowerCase(Locale.ROOT); apart.attachment.disposition = apart.disposition; apart.attachment.size = (long) apart.part.getSize(); apart.attachment.cid = (cid == null || cid.length == 0 ? null : MimeUtility.unfold(cid[0])); @@ -1227,9 +1228,10 @@ public class MessageHelper { if (!apart.pgp) { String extension = Helper.getExtension(apart.attachment.name); if (extension != null && - ("pdf".equals(extension.toLowerCase()) || + ("pdf".equals(extension.toLowerCase(Locale.ROOT)) || "application/octet-stream".equals(apart.attachment.type))) { - String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase()); + String type = MimeTypeMap.getSingleton() + .getMimeTypeFromExtension(extension.toLowerCase(Locale.ROOT)); if (type != null) { if (!type.equals(apart.attachment.type)) Log.w("Guessing file=" + apart.attachment.name + " type=" + type);