Algorithmic darkening requires WebView 102.*

This commit is contained in:
M66B
2022-06-15 18:10:01 +02:00
parent 251695fb5d
commit eb5f72e466
7 changed files with 34 additions and 30 deletions

View File

@@ -83,7 +83,7 @@ public class WebViewEx extends WebView implements DownloadListener, View.OnLongC
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
if (WebViewEx.isFeatureSupported(WebViewFeature.SAFE_BROWSING_ENABLE))
if (WebViewEx.isFeatureSupported(context, WebViewFeature.SAFE_BROWSING_ENABLE))
WebSettingsCompat.setSafeBrowsingEnabled(settings, safe_browsing);
}
@@ -120,7 +120,7 @@ public class WebViewEx extends WebView implements DownloadListener, View.OnLongC
// https://developer.android.com/reference/android/webkit/WebSettings#setAlgorithmicDarkeningAllowed(boolean)
// https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme
boolean canDarken = WebViewEx.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING);
boolean canDarken = WebViewEx.isFeatureSupported(context, WebViewFeature.ALGORITHMIC_DARKENING);
if (canDarken)
WebSettingsCompat.setAlgorithmicDarkeningAllowed(settings, dark && !force_light);
setBackgroundColor(canDarken && dark && !force_light ? Color.TRANSPARENT : Color.WHITE);
@@ -354,7 +354,16 @@ public class WebViewEx extends WebView implements DownloadListener, View.OnLongC
return (yscale > 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);