From eb5f72e46634dc90f89099bec4460250b32bbb3a Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 15 Jun 2022 18:10:01 +0200 Subject: [PATCH] Algorithmic darkening requires WebView 102.* --- .../java/eu/faircode/email/ActivityAMP.java | 6 ++-- .../eu/faircode/email/AdapterMessage.java | 21 +++++++++----- .../email/FragmentDialogOpenFull.java | 4 +-- .../email/FragmentOptionsPrivacy.java | 2 +- .../main/java/eu/faircode/email/Helper.java | 1 + app/src/main/java/eu/faircode/email/Log.java | 2 +- .../java/eu/faircode/email/WebViewEx.java | 28 ++++++++----------- 7 files changed, 34 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityAMP.java b/app/src/main/java/eu/faircode/email/ActivityAMP.java index 8b5b59e47b..bbe0c30aee 100644 --- a/app/src/main/java/eu/faircode/email/ActivityAMP.java +++ b/app/src/main/java/eu/faircode/email/ActivityAMP.java @@ -95,7 +95,7 @@ public class ActivityAMP extends ActivityBase { settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); - if (WebViewEx.isFeatureSupported(WebViewFeature.SAFE_BROWSING_ENABLE)) + if (WebViewEx.isFeatureSupported(this, WebViewFeature.SAFE_BROWSING_ENABLE)) WebSettingsCompat.setSafeBrowsingEnabled(settings, safe_browsing); setDarkMode(); @@ -127,7 +127,7 @@ public class ActivityAMP extends ActivityBase { @Override public boolean onPrepareOptionsMenu(Menu menu) { boolean dark = Helper.isDarkTheme(this); - boolean canDarken = WebViewEx.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING); + boolean canDarken = WebViewEx.isFeatureSupported(this, WebViewFeature.ALGORITHMIC_DARKENING); menu.findItem(R.id.menu_force_light) .setVisible(dark && canDarken) .getIcon().setLevel(force_light ? 1 : 0); @@ -160,7 +160,7 @@ public class ActivityAMP extends ActivityBase { private void setDarkMode() { WebSettings settings = wvAmp.getSettings(); boolean dark = (Helper.isDarkTheme(this) && !force_light); - boolean canDarken = WebViewEx.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING); + boolean canDarken = WebViewEx.isFeatureSupported(this, WebViewFeature.ALGORITHMIC_DARKENING); if (canDarken) WebSettingsCompat.setAlgorithmicDarkeningAllowed(settings, dark); } diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 83b8896734..53f4d0741a 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -2163,8 +2163,8 @@ public class AdapterMessage extends RecyclerView.Adapter 0 || tos > 0) ? View.VISIBLE : View.GONE); ibTranslate.setVisibility(tools && !outbox && button_translate && DeepL.isAvailable(context) && message.content ? View.VISIBLE : View.GONE); - ibForceLight.setVisibility(tools && full && dark && canDarken && button_force_light && message.content ? View.VISIBLE : View.GONE); - ibForceLight.setImageLevel(force_light ? 1 : 0); + ibForceLight.setVisibility(tools && full && dark && button_force_light && message.content ? View.VISIBLE : View.GONE); + ibForceLight.setImageLevel(!canDarken || force_light ? 1 : 0); ibImportance.setVisibility(tools && button_importance && !outbox && seen ? View.VISIBLE : View.GONE); ibHide.setVisibility(tools && button_hide && !outbox ? View.VISIBLE : View.GONE); ibSeen.setVisibility(tools && button_seen && !outbox && seen ? View.VISIBLE : View.GONE); @@ -6226,10 +6226,17 @@ public class AdapterMessage extends RecyclerView.Adapter 1.01); } - public static boolean isFeatureSupported(String feature) { + public static boolean isFeatureSupported(Context context, String feature) { + if (WebViewFeature.ALGORITHMIC_DARKENING.equals(feature)) + try { + PackageInfo pkg = WebViewCompat.getCurrentWebViewPackage(context); + if (pkg != null && pkg.versionCode / 100000 < 5005) // Version 102.* + return false; + } catch (Throwable ex) { + Log.e(ex); + } + try { return WebViewFeature.isFeatureSupported(feature); } catch (Throwable ex) { @@ -403,19 +412,6 @@ public class WebViewEx extends WebView implements DownloadListener, View.OnLongC return (large ? "Mozilla/5.0" : "Mozilla/5.0 (Mobile)"); } - static int getVersionCode(Context context) { - try { - // version / 100000 > 5005 - PackageInfo pkg = WebViewCompat.getCurrentWebViewPackage(context); - if (pkg == null) - return -1; - return pkg.versionCode; - } catch (Throwable ex) { - Log.e(ex); - return -1; - } - } - interface IWebView { void onSizeChanged(int w, int h, int ow, int oh);