diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 0347ef5..83db214 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -16,6 +16,7 @@
 
 package com.android.browser;
 
+import com.android.browser.homepages.HomeProvider;
 import com.android.common.speech.LoggingEvents;
 
 import android.app.Activity;
@@ -50,6 +51,7 @@
 import android.webkit.WebBackForwardListClient;
 import android.webkit.WebChromeClient;
 import android.webkit.WebHistoryItem;
+import android.webkit.WebResourceResponse;
 import android.webkit.WebStorage;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
@@ -792,6 +794,14 @@
         }
 
         @Override
+        public WebResourceResponse shouldInterceptRequest(WebView view,
+                String url) {
+            WebResourceResponse res = HomeProvider.shouldInterceptRequest(
+                    mActivity, url);
+            return res;
+        }
+
+        @Override
         public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
             if (!mInForeground) {
                 return false;
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 9b344ec..d50d94e 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -20,6 +20,7 @@
 
 import android.app.ActionBar;
 import android.app.Activity;
+import android.os.Bundle;
 import android.util.Log;
 import android.view.ActionMode;
 import android.view.Gravity;
@@ -71,6 +72,14 @@
     }
 
     @Override
+    public void showComboView(boolean startWithHistory, Bundle extras) {
+        super.showComboView(startWithHistory, extras);
+        if (mUseQuickControls) {
+            mActionBar.show();
+        }
+    }
+
+    @Override
     public void hideComboView() {
         super.hideComboView();
         // ComboView changes the action bar, set it back up to what we want
diff --git a/src/com/android/browser/homepages/HomeProvider.java b/src/com/android/browser/homepages/HomeProvider.java
index 5c368eb..98fcfbe 100644
--- a/src/com/android/browser/homepages/HomeProvider.java
+++ b/src/com/android/browser/homepages/HomeProvider.java
@@ -16,15 +16,20 @@
  */
 package com.android.browser.homepages;
 
+import com.android.browser.BrowserSettings;
+
 import android.content.ContentProvider;
 import android.content.ContentValues;
+import android.content.Context;
 import android.content.res.AssetFileDescriptor;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.ParcelFileDescriptor;
 import android.util.Log;
+import android.webkit.WebResourceResponse;
 
 import java.io.IOException;
+import java.io.InputStream;
 
 public class HomeProvider extends ContentProvider {
 
@@ -78,4 +83,20 @@
         }
     }
 
+    public static WebResourceResponse shouldInterceptRequest(Context context,
+            String url) {
+        try {
+            boolean useMostVisited = BrowserSettings.getInstance().useMostVisitedHomepage();
+            if (useMostVisited && url.startsWith("content://")) {
+                Uri uri = Uri.parse(url);
+                if (AUTHORITY.equals(uri.getAuthority())) {
+                    InputStream ins = context.getContentResolver()
+                            .openInputStream(uri);
+                    return new WebResourceResponse("text/html", "utf-8", ins);
+                }
+            }
+        } catch (Exception e) {}
+        return null;
+    }
+
 }
