diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java
index e2348a5..9215fe5 100644
--- a/src/com/android/browser/BrowserWebView.java
+++ b/src/com/android/browser/BrowserWebView.java
@@ -60,6 +60,16 @@
      * @param defStyle
      */
     public BrowserWebView(
+            Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing, boolean backgroundTab) {
+        super(context, attrs, defStyle, privateBrowsing, backgroundTab);
+    }
+
+    /**
+     * @param context
+     * @param attrs
+     * @param defStyle
+     */
+    public BrowserWebView(
             Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) {
         super(context, attrs, defStyle, privateBrowsing);
     }
diff --git a/src/com/android/browser/BrowserWebViewFactory.java b/src/com/android/browser/BrowserWebViewFactory.java
index 82dd208..26b6950 100644
--- a/src/com/android/browser/BrowserWebViewFactory.java
+++ b/src/com/android/browser/BrowserWebViewFactory.java
@@ -36,8 +36,8 @@
     }
 
     protected WebView instantiateWebView(AttributeSet attrs, int defStyle,
-            boolean privateBrowsing) {
-        return new BrowserWebView(mContext, attrs, defStyle, privateBrowsing);
+            boolean privateBrowsing, boolean backgroundTab) {
+        return new BrowserWebView(mContext, attrs, defStyle, privateBrowsing, backgroundTab);
     }
 
     @Override
@@ -47,7 +47,12 @@
 
     @Override
     public WebView createWebView(boolean privateBrowsing) {
-        WebView w = instantiateWebView(null, android.R.attr.webViewStyle, privateBrowsing);
+        return createWebView(privateBrowsing, false);
+    }
+
+    @Override
+    public WebView createWebView(boolean privateBrowsing, boolean backgroundTab) {
+        WebView w = instantiateWebView(null, android.R.attr.webViewStyle, privateBrowsing, backgroundTab);
         initWebViewSettings(w);
         return w;
     }
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 733e122..f0aa557 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -2953,7 +2953,7 @@
             boolean useCurrent) {
         Tab tab = null;
         if (mTabControl.canCreateNewTab()) {
-            tab = mTabControl.createNewTab(incognito);
+            tab = mTabControl.createNewTab(incognito, !setActive);
             addTab(tab);
             if (setActive) {
                 setActiveTab(tab);
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 0d16b59..bdf21da 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -202,17 +202,25 @@
      *         number of open tabs.
      */
     Tab createNewTab(boolean privateBrowsing) {
-        return createNewTab(null, privateBrowsing);
+        return createNewTab(null, privateBrowsing, false);
+    }
+
+    Tab createNewTab(boolean privateBrowsing, boolean backgroundTab) {
+        return createNewTab(null, privateBrowsing, backgroundTab);
     }
 
     Tab createNewTab(Bundle state, boolean privateBrowsing) {
+        return createNewTab(null, privateBrowsing, false);
+    }
+
+    Tab createNewTab(Bundle state, boolean privateBrowsing, boolean backgroundTab) {
         int size = mTabs.size();
         // Return false if we have maxed out on tabs
         if (!canCreateNewTab()) {
             return null;
         }
 
-        final WebView w = createNewWebView(privateBrowsing);
+        final WebView w = createNewWebView(privateBrowsing, backgroundTab);
 
         // Create a new tab and add it to the tab list
         Tab t = new Tab(mController, w, state);
@@ -661,7 +669,11 @@
      *        WebView.
      */
     private WebView createNewWebView(boolean privateBrowsing) {
-        return mController.getWebViewFactory().createWebView(privateBrowsing);
+        return createNewWebView(privateBrowsing, false);
+    }
+
+    private WebView createNewWebView(boolean privateBrowsing, boolean backgroundTab) {
+        return mController.getWebViewFactory().createWebView(privateBrowsing, backgroundTab);
     }
 
     /**
diff --git a/src/com/android/browser/WebViewFactory.java b/src/com/android/browser/WebViewFactory.java
index 3ebd573..12327da 100644
--- a/src/com/android/browser/WebViewFactory.java
+++ b/src/com/android/browser/WebViewFactory.java
@@ -25,6 +25,8 @@
 
     public WebView createWebView(boolean privateBrowsing);
 
+    public WebView createWebView(boolean privateBrowsing, boolean backgroundTab);
+
     public WebView createSubWebView(boolean privateBrowsing);
 
 }
