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

Commit 3f98f7bd authored by Kristian Monsen's avatar Kristian Monsen Committed by Android (Google) Code Review
Browse files

Merge "Make CookieManager.removeSessionCookies async"

parents 9f02357a 85173055
Loading
Loading
Loading
Loading
+30 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.webkit;
import android.net.ParseException;
import android.net.WebAddress;
import android.net.http.AndroidHttpClient;
import android.os.AsyncTask;
import android.util.Log;


@@ -102,6 +103,8 @@ public final class CookieManager {
    // http:/b/3118772
    private static Boolean sUseChromiumHttpStack;

    private int pendingCookieOperations = 0;

    /**
     * This contains a list of 2nd-level domains that aren't allowed to have
     * wildcards when combined with country-codes. For example: [.co.uk].
@@ -523,12 +526,37 @@ public final class CookieManager {
        }
    }

    synchronized void waitForCookieOperationsToComplete() {
        while (pendingCookieOperations > 0) {
            try {
                wait();
            } catch (InterruptedException e) { }
        }
    }

    private synchronized void signalCookieOperationsComplete() {
        pendingCookieOperations--;
        assert pendingCookieOperations > -1;
        notify();
    }

    private synchronized void signalCookieOperationsStart() {
        pendingCookieOperations++;
    }

    /**
     * Remove all session cookies, which are cookies without expiration date
     */
    public void removeSessionCookie() {
        signalCookieOperationsStart();
        if (useChromiumHttpStack()) {
            new AsyncTask<Void, Void, Void>() {
                protected Void doInBackground(Void... none) {
                    nativeRemoveSessionCookie();
                    signalCookieOperationsComplete();
                    return null;
                }
            }.execute();
            return;
        }

@@ -548,6 +576,7 @@ public final class CookieManager {
                        }
                    }
                    CookieSyncManager.getInstance().clearSessionCookies();
                    signalCookieOperationsComplete();
                }
            }
        };
+3 −0
Original line number Diff line number Diff line
@@ -1056,17 +1056,20 @@ final class WebViewCore {
                            break;

                        case LOAD_URL: {
                            CookieManager.getInstance().waitForCookieOperationsToComplete();
                            GetUrlData param = (GetUrlData) msg.obj;
                            loadUrl(param.mUrl, param.mExtraHeaders);
                            break;
                        }

                        case POST_URL: {
                            CookieManager.getInstance().waitForCookieOperationsToComplete();
                            PostUrlData param = (PostUrlData) msg.obj;
                            mBrowserFrame.postUrl(param.mUrl, param.mPostData);
                            break;
                        }
                        case LOAD_DATA:
                            CookieManager.getInstance().waitForCookieOperationsToComplete();
                            BaseUrlData loadParams = (BaseUrlData) msg.obj;
                            String baseUrl = loadParams.mBaseUrl;
                            if (baseUrl != null) {