diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index e3f31c0..fc70a76 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -137,9 +137,6 @@
     // add for carrier feature
     private static Context sResPackageCtx;
 
-    //Determine if WebView is Initialized or not
-    private boolean mWebViewInitialized;
-
     public static void initialize(final Context context) {
         sInstance = new BrowserSettings(context);
     }
@@ -164,7 +161,6 @@
             Log.e("Res_Update", "Create Res Apk Failed");
         }
         BackgroundHandler.execute(mSetup);
-        mWebViewInitialized = false;
     }
 
     public void setController(Controller controller) {
@@ -198,10 +194,6 @@
         }
     }
 
-    public void initializeCookieSettings() {
-        CookieManager.getInstance().setAcceptCookie(acceptCookies());
-        mWebViewInitialized = true;
-    }
     private Runnable mSetup = new Runnable() {
 
         @Override
@@ -445,9 +437,8 @@
 
     private void syncSharedSettings() {
         mNeedsSharedSync = false;
-        if (mWebViewInitialized) {
-            CookieManager.getInstance().setAcceptCookie(acceptCookies());
-        }
+        CookieManager.getInstance().setAcceptCookie(acceptCookies());
+
         if (mController != null) {
             mController.setShouldShowErrorConsole(enableJavascriptConsole());
         }
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index c0ffd83..e3a7308 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -267,11 +267,6 @@
         mIntentHandler = new IntentHandler(mActivity, this);
         mPageDialogsHandler = new PageDialogsHandler(mActivity, this);
 
-        // Creating dummy Webview for browser to force loading of library;
-        // in order for CookieManager calls to be invoked properly and
-        // awBrowserContext to be initialized
-        (mFactory.createWebView(false)).destroy();
-
         startHandler();
         mBookmarksObserver = new ContentObserver(mHandler) {
             @Override
@@ -319,7 +314,6 @@
         final long currentTabId =
                 mTabControl.canRestoreState(icicle, restoreIncognitoTabs);
 
-        mSettings.initializeCookieSettings();
         if (currentTabId == -1) {
             // Not able to restore so we go ahead and clear session cookies.  We
             // must do this before trying to login the user as we don't want to
diff --git a/src/com/android/browser/Preloader.java b/src/com/android/browser/Preloader.java
index 7d8c367..99909b3 100644
--- a/src/com/android/browser/Preloader.java
+++ b/src/com/android/browser/Preloader.java
@@ -54,6 +54,10 @@
         mSession = null;
         mFactory = new BrowserWebViewFactory(context);
 
+        // Creating dummy Webview for browser to force loading of library;
+        // This will thereby prevent any singleton calls invoked directly
+        // even without the webview creation
+        (mFactory.instantiateWebView(null, android.R.attr.webViewStyle, false)).destroy();
     }
 
     private PreloaderSession getSession(String id) {
