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

Commit 16d041cc authored by Kristian Monsen's avatar Kristian Monsen Committed by Steve Block
Browse files

Adds CookieManager methods to configure policy for cookies for file scheme URLs

Needs https://android-git.corp.google.com/g/83647 in external/webkit,
which disallows such cookies by default and provides configuration
methods native side.

Also updates TestShellActivity to allow such cookies, as they are
required for the page cycler.

Bug: 2944150
Change-Id: Idcc7e2812fab33e6a2a8766a2176bc3278e617da
parent 36f43908
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -223692,6 +223692,17 @@
 visibility="public"
>
</method>
<method name="allowFileSchemeCookies"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getCookie"
 return="java.lang.String"
 abstract="false"
@@ -223773,6 +223784,19 @@
<parameter name="accept" type="boolean">
</parameter>
</method>
<method name="setAcceptFileSchemeCookies"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="accept" type="boolean">
</parameter>
</method>
<method name="setCookie"
 return="void"
 abstract="false"
+28 −0
Original line number Diff line number Diff line
@@ -649,6 +649,32 @@ public final class CookieManager {
        }
    }

    /**
     * Whether cookies are accepted for file scheme URLs.
     */
    public static boolean allowFileSchemeCookies() {
        if (JniUtil.useChromiumHttpStack()) {
            return nativeAcceptFileSchemeCookies();
        } else {
            return true;
        }
    }

    /**
     * Sets whether cookies are accepted for file scheme URLs.
     *
     * Use of cookies with file scheme URLs is potentially insecure. Do not use this feature unless
     * you can be sure that no unintentional sharing of cookie data can take place.
     * <p>
     * Note that calls to this method will have no effect if made after a WebView or CookieManager
     * instance has been created.
     */
    public static void setAcceptFileSchemeCookies(boolean accept) {
        if (JniUtil.useChromiumHttpStack()) {
            nativeSetAcceptFileSchemeCookies(accept);
        }
    }

    /**
     * Package level api, called from CookieSyncManager
     *
@@ -1107,4 +1133,6 @@ public final class CookieManager {
    private static native void nativeSetAcceptCookie(boolean accept);
    private static native void nativeSetCookie(String url, String value);
    private static native void nativeFlushCookieStore();
    private static native boolean nativeAcceptFileSchemeCookies();
    private static native void nativeSetAcceptFileSchemeCookies(boolean accept);
}
+2 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.os.Message;
import android.util.Log;
import android.view.ViewGroup;
import android.view.Window;
import android.webkit.CookieManager;
import android.webkit.ConsoleMessage;
import android.webkit.GeolocationPermissions;
import android.webkit.HttpAuthHandler;
@@ -130,6 +131,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
        contentView.setOrientation(LinearLayout.VERTICAL);
        setContentView(contentView);

        CookieManager.setAcceptFileSchemeCookies(true);
        mWebView = new WebView(this);
        mEventSender = new WebViewEventSender(mWebView);
        mCallbackProxy = new CallbackProxy(mEventSender, this);