Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 115fb1fb authored by Michael Bai's avatar Michael Bai Committed by Android (Google) Code Review
Browse files

Merge "WebView: Add set/getAlgorithmicDarkening APIs"

parents 4ab2c3c6 95a0c2b0
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -55228,6 +55228,7 @@ package android.webkit {
  public abstract class WebSettings {
    ctor public WebSettings();
    method @Deprecated public abstract boolean enableSmoothTransition();
    method public boolean getAllowAlgorithmicDarkening();
    method public abstract boolean getAllowContentAccess();
    method public abstract boolean getAllowFileAccess();
    method public abstract boolean getAllowFileAccessFromFileURLs();
@@ -55249,7 +55250,7 @@ package android.webkit {
    method public abstract boolean getDomStorageEnabled();
    method public abstract String getFantasyFontFamily();
    method public abstract String getFixedFontFamily();
    method public int getForceDark();
    method @Deprecated public int getForceDark();
    method public abstract boolean getJavaScriptCanOpenWindowsAutomatically();
    method public abstract boolean getJavaScriptEnabled();
    method public abstract android.webkit.WebSettings.LayoutAlgorithm getLayoutAlgorithm();
@@ -55272,6 +55273,7 @@ package android.webkit {
    method public abstract int getTextZoom();
    method public abstract boolean getUseWideViewPort();
    method public abstract String getUserAgentString();
    method public void setAllowAlgorithmicDarkening(boolean);
    method public abstract void setAllowContentAccess(boolean);
    method public abstract void setAllowFileAccess(boolean);
    method @Deprecated public abstract void setAllowFileAccessFromFileURLs(boolean);
@@ -55293,7 +55295,7 @@ package android.webkit {
    method @Deprecated public abstract void setEnableSmoothTransition(boolean);
    method public abstract void setFantasyFontFamily(String);
    method public abstract void setFixedFontFamily(String);
    method public void setForceDark(int);
    method @Deprecated public void setForceDark(int);
    method @Deprecated public abstract void setGeolocationDatabasePath(String);
    method public abstract void setGeolocationEnabled(boolean);
    method public abstract void setJavaScriptCanOpenWindowsAutomatically(boolean);
@@ -55324,9 +55326,9 @@ package android.webkit {
    method public abstract void setUserAgentString(@Nullable String);
    method public abstract boolean supportMultipleWindows();
    method public abstract boolean supportZoom();
    field public static final int FORCE_DARK_AUTO = 1; // 0x1
    field public static final int FORCE_DARK_OFF = 0; // 0x0
    field public static final int FORCE_DARK_ON = 2; // 0x2
    field @Deprecated public static final int FORCE_DARK_AUTO = 1; // 0x1
    field @Deprecated public static final int FORCE_DARK_OFF = 0; // 0x0
    field @Deprecated public static final int FORCE_DARK_ON = 2; // 0x2
    field public static final int LOAD_CACHE_ELSE_NETWORK = 1; // 0x1
    field public static final int LOAD_CACHE_ONLY = 3; // 0x3
    field public static final int LOAD_DEFAULT = -1; // 0xffffffff
+1 −0
Original line number Diff line number Diff line
@@ -15749,6 +15749,7 @@ package android.webkit {
    method @Deprecated public abstract void setUseWebViewBackgroundForOverscrollBackground(boolean);
    method @Deprecated public abstract void setUserAgent(int);
    method public abstract void setVideoOverlayForEmbeddedEncryptedVideoEnabled(boolean);
    field public static final long ENABLE_SIMPLIFIED_DARK_MODE = 214741472L; // 0xcccb1e0L
  }
  public class WebStorage {
+70 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ package android.webkit;
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;

@@ -134,6 +136,20 @@ public abstract class WebSettings {
    @Retention(RetentionPolicy.SOURCE)
    public @interface CacheMode {}

    /**
     * Enable web content to apply light or dark style according to the app's theme
     * and WebView to attempt to darken web content by algorithmic darkening when
     * appropriate.
     *
     * Refer to {@link #setAllowAlgorithmicDarkening} for detail.
     *
     * @hide
     */
    @ChangeId
    @EnabledSince(targetSdkVersion = android.os.Build.VERSION_CODES.TIRAMISU)
    @SystemApi
    public static final long ENABLE_SIMPLIFIED_DARK_MODE = 214741472L;

    /**
     * Default cache usage mode. If the navigation type doesn't impose any
     * specific behavior, use cached resources when they are available
@@ -239,6 +255,7 @@ public abstract class WebSettings {
     * automatically darkened.
     *
     * @see #setForceDark
     * @deprecated refer to {@link #setForceDark}
     */
    public static final int FORCE_DARK_OFF = 0;

@@ -250,6 +267,7 @@ public abstract class WebSettings {
     * be inverted.
     *
     * @see #setForceDark
     * @deprecated refer to {@link #setForceDark}
     */
    public static final int FORCE_DARK_AUTO = 1;

@@ -258,6 +276,7 @@ public abstract class WebSettings {
     * as to emulate a dark theme.
     *
     * @see #setForceDark
     * @deprecated refer to {@link #setForceDark}
     */
    public static final int FORCE_DARK_ON = 2;

@@ -1533,6 +1552,13 @@ public abstract class WebSettings {
     *
     * @param forceDark the force dark mode to set.
     * @see #getForceDark
     * @deprecated The "force dark" model previously implemented by WebView was complex
     * and didn't interoperate well with current Web standards for
     * prefers-color-scheme and color-scheme. In apps with
     * {@code targetSdkVersion} ≥ {@link android.os.Build.VERSION_CODES#TIRAMISU}
     * this API is a no-op and WebView will always use the dark style defined by web content
     * authors if the app's theme is dark. To customize the behavior, refer to
     * {@link #setAllowAlgorithmicDarkening}.
     */
    public void setForceDark(@ForceDark int forceDark) {
        // Stub implementation to satisfy Roboelectrc shadows that don't override this yet.
@@ -1544,12 +1570,56 @@ public abstract class WebSettings {
     *
     * @return the currently set force dark mode.
     * @see #setForceDark
     * @deprecated refer to {@link #setForceDark}.
     */
    public @ForceDark int getForceDark() {
        // Stub implementation to satisfy Roboelectrc shadows that don't override this yet.
        return FORCE_DARK_AUTO;
    }

    /**
     * Control whether algorithmic darkening is allowed.
     *
     * <p class="note">
     * <b>Note:</b> This API and the behaviour described only apply to apps with
     * {@code targetSdkVersion} &ge; {@link android.os.Build.VERSION_CODES#TIRAMISU}.
     *
     * <p>
     * WebView always sets the media query {@code prefers-color-scheme} according to the app's
     * theme attribute {@link android.R.styleable#Theme_isLightTheme isLightTheme}, i.e.
     * {@code prefers-color-scheme} is {@code light} if isLightTheme is true or not specified,
     * otherwise it is {@code dark}. This means that the web content's light or dark style will
     * be applied automatically to match the app's theme if the content supports it.
     *
     * <p>
     * Algorithmic darkening is disallowed by default.
     * <p>
     * If the app's theme is dark and it allows algorithmic darkening, WebView will attempt to
     * darken web content using an algorithm, if the content doesn't define its own dark styles
     * and doesn't explicitly disable darkening.
     *
     * <p>
     * If Android is applying Force Dark to WebView then WebView will ignore the value of
     * this setting and behave as if it were set to true.
     *
     * @param allow allow algorithmic darkening or not.
     */
    public void setAllowAlgorithmicDarkening(boolean allow) {
        // Stub implementation to satisfy Roboelectrc shadows that don't override this yet.
    }

    /**
     * Get if algorithmic darkening is allowed or not for this WebView.
     * The default is false.
     *
     * @return if the algorithmic darkening is allowed or not.
     * @see #setAllowAlgorithmicDarkening
     */
    public boolean getAllowAlgorithmicDarkening() {
        // Stub implementation to satisfy Roboelectrc shadows that don't override this yet.
        return false;
    }

    /**
     * @hide
     */