Merge "Make sure timers are running during pre-login."
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 8ca151a..da98a1c 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -317,7 +317,10 @@
             if (urlData.isEmpty()) {
                 loadUrl(webView, mSettings.getHomePage());
             } else {
-                loadUrlDataIn(t, urlData);
+                // monkey protection against delayed start
+                if (t != null) {
+                    loadUrlDataIn(t, urlData);
+                }
             }
         } else {
             mTabControl.restoreState(icicle, currentTab, restoreIncognitoTabs,
@@ -2088,9 +2091,12 @@
     }
 
     protected void setActiveTab(Tab tab) {
-        mTabControl.setCurrentTab(tab);
-        // the tab is guaranteed to have a webview after setCurrentTab
-        mUi.setActiveTab(tab);
+        // monkey protection against delayed start
+        if (tab != null) {
+            mTabControl.setCurrentTab(tab);
+            // the tab is guaranteed to have a webview after setCurrentTab
+            mUi.setActiveTab(tab);
+        }
     }
 
     protected void closeEmptyChildTab() {
diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/TitleBarXLarge.java
index 1c44f81..85935a0 100644
--- a/src/com/android/browser/TitleBarXLarge.java
+++ b/src/com/android/browser/TitleBarXLarge.java
@@ -297,7 +297,7 @@
                 mVoiceSearchIndicator.setVisibility(View.VISIBLE);
             }
             mWebIcon.setImageResource(R.drawable.ic_search_holo_dark);
-            updateSearchMode();
+            updateSearchMode(false);
         } else {
             mGoButton.setVisibility(View.GONE);
             mVoiceSearch.setVisibility(View.GONE);
@@ -347,8 +347,8 @@
         }
     }
 
-    private void updateSearchMode() {
-        setSearchMode(TextUtils.isEmpty(mUrlInput.getText()));
+    private void updateSearchMode(boolean userEdited) {
+        setSearchMode(!userEdited || TextUtils.isEmpty(mUrlInput.getText()));
     }
 
     private void setSearchMode(boolean voiceSearchEnabled) {
@@ -375,7 +375,7 @@
     public void afterTextChanged(Editable s) {
         if (mUrlInput.hasFocus()) {
             // check if input field is empty and adjust voice search state
-            updateSearchMode();
+            updateSearchMode(true);
             // clear voice mode when user types
             setInVoiceMode(false, null);
         }