More BrowserSettings initialization shuffling

 Bug: 5019676
 BrowserSettings.setController required early initialization.
 Tweak it so that syncSharedSettings is called as late as possible

Change-Id: I16ab56d9f2e31faf1a108808069c29c76a2627c2
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index d4f1ba3..09c7200 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -103,6 +103,7 @@
     private AutofillHandler mAutofillHandler;
     private WeakHashMap<WebSettings, String> mCustomUserAgents;
     private static boolean sInitialized = false;
+    private boolean mNeedsSharedSync = true;
 
     // Cached values
     private int mPageCacheCapacity = 1;
@@ -134,7 +135,9 @@
 
     public void setController(Controller controller) {
         mController = controller;
-        syncSharedSettings();
+        if (sInitialized) {
+            syncSharedSettings();
+        }
 
         if (mController != null && (mSearchEngine instanceof InstantSearchEngine)) {
              ((InstantSearchEngine) mSearchEngine).setController(mController);
@@ -142,6 +145,9 @@
     }
 
     public void startManagingSettings(WebSettings settings) {
+        if (mNeedsSharedSync) {
+            syncSharedSettings();
+        }
         synchronized (mManagedSettings) {
             syncStaticSettings(settings);
             syncSetting(settings);
@@ -290,6 +296,7 @@
     }
 
     private void syncSharedSettings() {
+        mNeedsSharedSync = false;
         CookieManager.getInstance().setAcceptCookie(acceptCookies());
         if (mController != null) {
             mController.setShouldShowErrorConsole(enableJavascriptConsole());
@@ -405,6 +412,7 @@
     }
 
     public boolean isDebugEnabled() {
+        requireInitialization();
         return mPrefs.getBoolean(PREF_DEBUG_MENU, false);
     }