diff --git a/res/layout-sw600dp/title_bar_autologin.xml b/res/layout-sw600dp/title_bar_autologin.xml
index 783b4c3..1065756 100644
--- a/res/layout-sw600dp/title_bar_autologin.xml
+++ b/res/layout-sw600dp/title_bar_autologin.xml
@@ -16,6 +16,8 @@
 -->
 <com.android.browser.AutologinBar
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
     android:background="#FBF0A0"
     android:gravity="center_vertical"
     android:visibility="gone">
diff --git a/res/layout-sw600dp/title_bar_snapshot.xml b/res/layout-sw600dp/title_bar_snapshot.xml
index e844c36..69e3864 100644
--- a/res/layout-sw600dp/title_bar_snapshot.xml
+++ b/res/layout-sw600dp/title_bar_snapshot.xml
@@ -16,6 +16,8 @@
 -->
 <com.android.browser.SnapshotBar
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
     android:orientation="horizontal"
     android:background="@drawable/bg_urlbar">
     <ImageButton
diff --git a/res/layout/title_bar.xml b/res/layout/title_bar.xml
index cf500c8..acc49e6 100644
--- a/res/layout/title_bar.xml
+++ b/res/layout/title_bar.xml
@@ -24,14 +24,14 @@
         android:id="@+id/taburlbar"
         android:layout_width="match_parent"
         android:layout_height="@dimen/toolbar_height" />
-    <include
-        layout="@layout/title_bar_snapshot"
-        android:id="@+id/snapshotbar"
+    <ViewStub
+        android:id="@+id/snapshotbar_stub"
+        android:layout="@layout/title_bar_snapshot"
         android:layout_width="match_parent"
         android:layout_height="@dimen/toolbar_height" />
-    <include
-        layout="@layout/title_bar_autologin"
-        android:id="@+id/autologin"
+    <ViewStub
+        android:id="@+id/autologin_stub"
+        android:layout="@layout/title_bar_autologin"
         android:paddingTop="3dip"
         android:layout_below="@id/taburlbar"
         android:layout_width="match_parent"
diff --git a/res/layout/title_bar_autologin.xml b/res/layout/title_bar_autologin.xml
index 839f875..22da630 100644
--- a/res/layout/title_bar_autologin.xml
+++ b/res/layout/title_bar_autologin.xml
@@ -16,6 +16,8 @@
 -->
 <com.android.browser.AutologinBar
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
     android:background="#FBF0A0"
     android:gravity="center_vertical"
     android:visibility="gone"
diff --git a/res/layout/title_bar_snapshot.xml b/res/layout/title_bar_snapshot.xml
index 9d9d7c9..4d6128c 100644
--- a/res/layout/title_bar_snapshot.xml
+++ b/res/layout/title_bar_snapshot.xml
@@ -16,6 +16,8 @@
 -->
 <com.android.browser.SnapshotBar
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
     android:orientation="horizontal"
     android:background="@drawable/bg_urlbar">
     <ImageView
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
index 9848a39..8fa4d43 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -25,6 +25,7 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.ViewStub;
 import android.view.animation.Animation;
 import android.view.animation.Animation.AnimationListener;
 import android.view.animation.AnimationUtils;
@@ -72,11 +73,27 @@
         LayoutInflater factory = LayoutInflater.from(context);
         factory.inflate(R.layout.title_bar, this);
         mProgress = (PageProgressView) findViewById(R.id.progress);
-        mAutoLogin = (AutologinBar) findViewById(R.id.autologin);
-        mAutoLogin.setTitleBar(this);
         mNavBar = (NavigationBarBase) findViewById(R.id.taburlbar);
         mNavBar.setTitleBar(this);
-        mSnapshotBar = (SnapshotBar) findViewById(R.id.snapshotbar);
+    }
+
+    private void inflateAutoLoginBar() {
+        if (mAutoLogin != null) {
+            return;
+        }
+
+        ViewStub stub = (ViewStub) findViewById(R.id.autologin_stub);
+        mAutoLogin = (AutologinBar) stub.inflate();
+        mAutoLogin.setTitleBar(this);
+    }
+
+    private void inflateSnapshotBar() {
+        if (mSnapshotBar != null) {
+            return;
+        }
+
+        ViewStub stub = (ViewStub) findViewById(R.id.snapshotbar_stub);
+        mSnapshotBar = (SnapshotBar) stub.inflate();
         mSnapshotBar.setTitleBar(this);
     }
 
@@ -236,13 +253,19 @@
 
     public int getEmbeddedHeight() {
         int height = mNavBar.getHeight();
-        if (mAutoLogin.getVisibility() == View.VISIBLE) {
+        if (mAutoLogin != null && mAutoLogin.getVisibility() == View.VISIBLE) {
             height += mAutoLogin.getHeight();
         }
         return height;
     }
 
     public void updateAutoLogin(Tab tab, boolean animate) {
+        if (mAutoLogin == null) {
+            if  (tab.getDeviceAccountLogin() == null) {
+                return;
+            }
+            inflateAutoLoginBar();
+        }
         mAutoLogin.updateAutoLogin(tab, animate);
     }
 
@@ -250,6 +273,9 @@
         if (mUseQuickControls) {
             mBaseUi.showTitleBar();
         }
+        if (mAutoLogin == null) {
+            inflateAutoLoginBar();
+        }
         mAutoLogin.setVisibility(View.VISIBLE);
         if (animate) {
             mAutoLogin.startAnimation(AnimationUtils.loadAnimation(
@@ -291,12 +317,12 @@
 
     public boolean wantsToBeVisible() {
         return inAutoLogin()
-            || (mSnapshotBar.getVisibility() == View.VISIBLE
+            || (mSnapshotBar != null && mSnapshotBar.getVisibility() == View.VISIBLE
                     && mSnapshotBar.isAnimating());
     }
 
     private boolean inAutoLogin() {
-        return mAutoLogin.getVisibility() == View.VISIBLE;
+        return mAutoLogin != null && mAutoLogin.getVisibility() == View.VISIBLE;
     }
 
     public boolean isEditingUrl() {
@@ -348,12 +374,18 @@
     }
 
     public void onTabDataChanged(Tab tab) {
-        mSnapshotBar.onTabDataChanged(tab);
+        if (mSnapshotBar != null) {
+            mSnapshotBar.onTabDataChanged(tab);
+        }
+
         if (tab.isSnapshot()) {
+            inflateSnapshotBar();
             mSnapshotBar.setVisibility(VISIBLE);
             mNavBar.setVisibility(GONE);
         } else {
-            mSnapshotBar.setVisibility(GONE);
+            if (mSnapshotBar != null) {
+                mSnapshotBar.setVisibility(GONE);
+            }
             mNavBar.setVisibility(VISIBLE);
         }
     }
