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

Commit 3d458ab9 authored by Jonathan Dixon's avatar Jonathan Dixon Committed by Ben Murdoch
Browse files

Hide Experimental WebView from dev settings DO NOT MERGE

Bug 10427705

The persist.webview system property is no longer needed, so removed too.

Change-Id: I99bbf2e9b9ec42f282339c72509fd99b18594ebf
parent dc333542
Loading
Loading
Loading
Loading
+11 −32
Original line number Original line Diff line number Diff line
@@ -28,19 +28,6 @@ import android.util.Log;
 * @hide
 * @hide
 */
 */
public final class WebViewFactory {
public final class WebViewFactory {
    private static final boolean DEFAULT_TO_EXPERIMENTAL_WEBVIEW = true;
    // REMEMBER: property names must be <= 31 chars total.
    private static final String EXPERIMENTAL_PROPERTY_DEFAULT_OFF = "persist.sys.webview.exp";
    private static final String EXPERIMENTAL_PROPERTY_DEFAULT_ON =
            "persist.sys.webview." + Build.ID;

    // Modify the persisted property name when the new webview is on-by-default, so that any user
    // setting override only lives as long as that build.
    private static final String LONG_PROPERTY_NAME = DEFAULT_TO_EXPERIMENTAL_WEBVIEW ?
            EXPERIMENTAL_PROPERTY_DEFAULT_ON : EXPERIMENTAL_PROPERTY_DEFAULT_OFF;
    private static final String WEBVIEW_EXPERIMENTAL_PROPERTY =
            LONG_PROPERTY_NAME.length() > SystemProperties.PROP_NAME_MAX ?
            LONG_PROPERTY_NAME.substring(0, SystemProperties.PROP_NAME_MAX) : LONG_PROPERTY_NAME;


    private static final String FORCE_PROVIDER_PROPERTY = "webview.force_provider";
    private static final String FORCE_PROVIDER_PROPERTY = "webview.force_provider";
    private static final String FORCE_PROVIDER_PROPERTY_VALUE_CHROMIUM = "chromium";
    private static final String FORCE_PROVIDER_PROPERTY_VALUE_CHROMIUM = "chromium";
@@ -73,32 +60,25 @@ public final class WebViewFactory {
    private static final Object sProviderLock = new Object();
    private static final Object sProviderLock = new Object();


    public static boolean isExperimentalWebViewAvailable() {
    public static boolean isExperimentalWebViewAvailable() {
        try {
        // TODO: Remove callers of this method then remove it.
            // Pass false so we don't initialize the class at this point, as this will be wasted if
        return false;  // Hide the toggle in Developer Settings.
            // it's not enabled.
            Class.forName(CHROMIUM_WEBVIEW_FACTORY, false, WebViewFactory.class.getClassLoader());
            return true;
        } catch (ClassNotFoundException e) {
            return false;
        }
    }
    }


    /** @hide */
    /** @hide */
    public static void setUseExperimentalWebView(boolean enable) {
    public static void setUseExperimentalWebView(boolean enable) {
        SystemProperties.set(WEBVIEW_EXPERIMENTAL_PROPERTY, enable ? "true" : "false");
        // TODO: Remove callers of this method then remove it.
        Log.i(LOGTAG, "Use Experimental WebView changed: "
                + SystemProperties.get(WebViewFactory.WEBVIEW_EXPERIMENTAL_PROPERTY, ""));
    }
    }


    /** @hide */
    /** @hide */
    public static boolean useExperimentalWebView() {
    public static boolean useExperimentalWebView() {
        return SystemProperties.getBoolean(WEBVIEW_EXPERIMENTAL_PROPERTY,
        // TODO: Remove callers of this method then remove it.
            DEFAULT_TO_EXPERIMENTAL_WEBVIEW);
        return isChromiumWebViewEnabled();
    }
    }


    /** @hide */
    /** @hide */
    public static boolean isUseExperimentalWebViewSet() {
    public static boolean isUseExperimentalWebViewSet() {
        return !SystemProperties.get(WEBVIEW_EXPERIMENTAL_PROPERTY).isEmpty();
        // TODO: Remove callers of this method then remove it.
        return false;  // User has not modifed Developer Settings
    }
    }


    static WebViewFactoryProvider getProvider() {
    static WebViewFactoryProvider getProvider() {
@@ -140,21 +120,20 @@ public final class WebViewFactory {


    // We allow a system property to specify that we should use the experimental Chromium powered
    // We allow a system property to specify that we should use the experimental Chromium powered
    // WebView. This enables us to switch between implementations at runtime.
    // WebView. This enables us to switch between implementations at runtime.
    private static boolean isExperimentalWebViewEnabled() {
    private static boolean isChromiumWebViewEnabled() {
        if (!isExperimentalWebViewAvailable()) return false;
        String forceProviderName = SystemProperties.get(FORCE_PROVIDER_PROPERTY);
        String forceProviderName = SystemProperties.get(FORCE_PROVIDER_PROPERTY);
        if (forceProviderName.isEmpty()) return useExperimentalWebView();
        if (forceProviderName.isEmpty()) return true;


        Log.i(LOGTAG, String.format("Provider overridden by property: %s=%s",
        Log.i(LOGTAG, String.format("Provider overridden by property: %s=%s",
                FORCE_PROVIDER_PROPERTY, forceProviderName));
                FORCE_PROVIDER_PROPERTY, forceProviderName));
        if (forceProviderName.equals(FORCE_PROVIDER_PROPERTY_VALUE_CHROMIUM)) return true;
        if (forceProviderName.equals(FORCE_PROVIDER_PROPERTY_VALUE_CHROMIUM)) return true;
        if (forceProviderName.equals(FORCE_PROVIDER_PROPERTY_VALUE_CLASSIC)) return false;
        if (forceProviderName.equals(FORCE_PROVIDER_PROPERTY_VALUE_CLASSIC)) return false;
        Log.e(LOGTAG, String.format("Unrecognized provider: %s", forceProviderName));
        Log.e(LOGTAG, String.format("Unrecognized provider: %s", forceProviderName));
        return useExperimentalWebView();
        return true;
    }
    }


    private static Class<WebViewFactoryProvider> getFactoryClass() throws ClassNotFoundException {
    private static Class<WebViewFactoryProvider> getFactoryClass() throws ClassNotFoundException {
        if (isExperimentalWebViewEnabled()) {
        if (isChromiumWebViewEnabled()) {
            return (Class<WebViewFactoryProvider>) Class.forName(CHROMIUM_WEBVIEW_FACTORY);
            return (Class<WebViewFactoryProvider>) Class.forName(CHROMIUM_WEBVIEW_FACTORY);
        } else  {
        } else  {
            return (Class<WebViewFactoryProvider>) Class.forName(DEFAULT_WEBVIEW_FACTORY);
            return (Class<WebViewFactoryProvider>) Class.forName(DEFAULT_WEBVIEW_FACTORY);