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

Commit 4730dda8 authored by Jonathan Dixon's avatar Jonathan Dixon Committed by Android Git Automerger
Browse files

am 46507f4b: Merge "Decouple construction of WebView, CookieSyncManager,...

am 46507f4b: Merge "Decouple construction of WebView, CookieSyncManager, WebViewDatabase" into klp-dev

* commit '46507f4b':
  Decouple construction of WebView, CookieSyncManager, WebViewDatabase
parents 31ea028e 46507f4b
Loading
Loading
Loading
Loading
+20 −11
Original line number Diff line number Diff line
@@ -59,8 +59,10 @@ public final class CookieSyncManager extends WebSyncManager {

    private static CookieSyncManager sRef;

    private CookieSyncManager(Context context) {
        super(context, "CookieSyncManager");
    private static boolean sGetInstanceAllowed = false;

    private CookieSyncManager() {
        super("CookieSyncManager");
    }

    /**
@@ -71,7 +73,10 @@ public final class CookieSyncManager extends WebSyncManager {
     * @return CookieSyncManager
     */
    public static synchronized CookieSyncManager getInstance() {
        checkInstanceIsCreated();
        checkInstanceIsAllowed();
        if (sRef == null) {
            sRef = new CookieSyncManager();
        }
        return sRef;
    }

@@ -80,16 +85,13 @@ public final class CookieSyncManager extends WebSyncManager {
     * @param context
     * @return CookieSyncManager
     */
    public static synchronized CookieSyncManager createInstance(
            Context context) {
    public static synchronized CookieSyncManager createInstance(Context context) {
        if (context == null) {
            throw new IllegalArgumentException("Invalid context argument");
        }

        if (sRef == null) {
            sRef = new CookieSyncManager(context);
        }
        return sRef;
        setGetInstanceIsAllowed();
        return getInstance();
    }

    protected void syncFromRamToFlash() {
@@ -110,8 +112,15 @@ public final class CookieSyncManager extends WebSyncManager {
        }
    }

    private static void checkInstanceIsCreated() {
        if (sRef == null) {
    static void setGetInstanceIsAllowed() {
        sGetInstanceAllowed = true;
    }

    private static void checkInstanceIsAllowed() {
        // Prior to Android KK, calling createInstance() or constructing a WebView is
        // a hard pre-condition for calling getInstance(). We retain that contract to aid
        // developers targeting a range of SDK levels.
        if (!sGetInstanceAllowed) {
            throw new IllegalStateException(
                    "CookieSyncManager::createInstance() needs to be called "
                            + "before CookieSyncManager::getInstance()");
+10 −11
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ abstract class WebSyncManager implements Runnable {
    private String mThreadName;
    // handler of the sync thread
    protected Handler mHandler;
    // database for the persistent storage
    // database for the persistent storage. Always null.
    protected WebViewDatabase mDataBase;
    // Ref count for calls to start/stop sync
    private int mStartSyncRefCount;
@@ -60,16 +60,15 @@ abstract class WebSyncManager implements Runnable {
    }

    protected WebSyncManager(Context context, String name) {
        this(name);
    }

    /** @hide */
    WebSyncManager(String name) {
        mThreadName = name;
        if (context != null) {
            mDataBase = WebViewDatabase.getInstance(context);
        mSyncThread = new Thread(this);
        mSyncThread.setName(mThreadName);
        mSyncThread.start();
        } else {
            throw new IllegalStateException(
                    "WebSyncManager can't be created without context");
        }
    }

    protected Object clone() throws CloneNotSupportedException {
+2 −2
Original line number Diff line number Diff line
@@ -506,8 +506,8 @@ public class WebView extends AbsoluteLayout

        ensureProviderCreated();
        mProvider.init(javaScriptInterfaces, privateBrowsing);
        // Post condition of creating a webview is the CookieSyncManager instance exists.
        CookieSyncManager.createInstance(getContext());
        // Post condition of creating a webview is the CookieSyncManager.getInstance() is allowed.
        CookieSyncManager.setGetInstanceIsAllowed();
    }

    /**