diff --git a/res/layout/title_bar_nav.xml b/res/layout/title_bar_nav.xml
index b22d1a2..fc299d9 100644
--- a/res/layout/title_bar_nav.xml
+++ b/res/layout/title_bar_nav.xml
@@ -25,6 +25,13 @@
         android:layout_height="match_parent"
         android:gravity="center_vertical"
         android:orientation="horizontal">
+        <ImageView
+            android:id="@+id/incognito_icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingLeft="8dip"
+            android:visibility="gone"
+            android:src="@drawable/ic_incognito_holo_dark" />
         <FrameLayout
             android:id="@+id/iconcombo"
             android:layout_width="52dip"
@@ -58,7 +65,6 @@
             android:layout_width="0dip"
             android:layout_weight="1.0"
             android:layout_height="match_parent"
-            android:paddingLeft="8dip"
             android:fadingEdge="horizontal"
             android:fadingEdgeLength="24dip"
             android:textAppearance="?android:attr/textAppearanceMedium"
diff --git a/res/layout/title_bar_snapshot.xml b/res/layout/title_bar_snapshot.xml
index a5569c1..9d9d7c9 100644
--- a/res/layout/title_bar_snapshot.xml
+++ b/res/layout/title_bar_snapshot.xml
@@ -18,19 +18,24 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="horizontal"
     android:background="@drawable/bg_urlbar">
+    <ImageView
+        android:src="@drawable/ic_search_category_history"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:paddingLeft="8dip" />
     <ImageButton
         android:id="@+id/favicon"
-        android:layout_width="42dip"
+        android:layout_width="52dip"
         android:layout_height="match_parent"
         android:paddingLeft="16dip"
+        android:paddingRight="16dip"
         android:scaleType="fitCenter"
         style="@style/HoloButton" />
     <FrameLayout
         android:id="@+id/toggle_container"
         android:layout_width="0dip"
         android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:paddingLeft="8dip">
+        android:layout_weight="1">
         <TextView
             android:id="@+id/title"
             android:layout_width="match_parent"
@@ -38,23 +43,13 @@
             android:singleLine="true"
             android:gravity="center_vertical"
             android:textAppearance="?android:attr/textAppearanceMedium" />
-        <LinearLayout
-            android:id="@+id/date_container"
+        <TextView
+            android:id="@+id/date"
             android:layout_width="wrap_content"
-            android:layout_height="match_parent">
-            <ImageView
-                android:src="@drawable/ic_search_category_history"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent" />
-            <TextView
-                android:id="@+id/date"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:paddingLeft="8dip"
-                android:singleLine="true"
-                android:gravity="center_vertical"
-                android:textAppearance="?android:attr/textAppearanceMedium" />
-         </LinearLayout>
+            android:layout_height="match_parent"
+            android:singleLine="true"
+            android:gravity="center_vertical"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
     </FrameLayout>
     <ImageButton
         android:id="@+id/tab_switcher"
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index b5497d5..6f87463 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -194,6 +194,7 @@
         updateLockIconToLatest(tab);
         updateNavigationState(tab);
         mTitleBar.onTabDataChanged(tab);
+        mNavigationBar.onTabDataChanged(tab);
     }
 
     @Override
diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
index 94d6530..cbf6eba 100644
--- a/src/com/android/browser/NavigationBarBase.java
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -353,4 +353,7 @@
         return mUaSwitcherShowing;
     }
 
+    public void onTabDataChanged(Tab tab) {
+    }
+
 }
diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java
index 0cb0764..ff7dc7c 100644
--- a/src/com/android/browser/NavigationBarPhone.java
+++ b/src/com/android/browser/NavigationBarPhone.java
@@ -47,6 +47,7 @@
     private PopupMenu mPopupMenu;
     private boolean mOverflowMenuShowing;
     private boolean mNeedsMenu;
+    private View mIncognitoIcon;
 
     public NavigationBarPhone(Context context) {
         super(context);
@@ -84,6 +85,7 @@
         mUrlInput.setContainer(this);
         mUrlInput.setStateListener(this);
         mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey();
+        mIncognitoIcon = findViewById(R.id.incognito_icon);
     }
 
     @Override
@@ -240,4 +242,12 @@
             break;
         }
     }
+
+    @Override
+    public void onTabDataChanged(Tab tab) {
+        super.onTabDataChanged(tab);
+        mIncognitoIcon.setVisibility(tab.isPrivateBrowsingEnabled()
+                ? View.VISIBLE : View.GONE);
+    }
+
 }
diff --git a/src/com/android/browser/SnapshotBar.java b/src/com/android/browser/SnapshotBar.java
index ba0bf98..039afcf 100644
--- a/src/com/android/browser/SnapshotBar.java
+++ b/src/com/android/browser/SnapshotBar.java
@@ -21,13 +21,12 @@
 import android.os.Message;
 import android.text.TextUtils;
 import android.util.AttributeSet;
-import android.view.View;
-import android.view.View.OnClickListener;
 import android.view.Menu;
 import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewConfiguration;
 import android.view.ViewPropertyAnimator;
-import android.webkit.WebView;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.PopupMenu;
@@ -55,7 +54,6 @@
     private boolean mIsAnimating;
     private ViewPropertyAnimator mTitleAnimator, mDateAnimator;
     private float mAnimRadius = 20f;
-    private View mDateContainer;
 
     public SnapshotBar(Context context) {
         super(context);
@@ -98,7 +96,6 @@
         mTabSwitcher = findViewById(R.id.tab_switcher);
         mOverflowMenu = findViewById(R.id.more);
         mToggleContainer = findViewById(R.id.toggle_container);
-        mDateContainer = findViewById(R.id.date_container);
 
         if (mBookmarks != null) {
             mBookmarks.setOnClickListener(this);
@@ -145,9 +142,9 @@
         mTitle.setAlpha(1f);
         mTitle.setTranslationY(0f);
         mTitle.setRotationX(0f);
-        mDateContainer.setAlpha(0f);
-        mDateContainer.setTranslationY(-mAnimRadius);
-        mDateContainer.setRotationX(90f);
+        mDate.setAlpha(0f);
+        mDate.setTranslationY(-mAnimRadius);
+        mDate.setRotationX(90f);
     }
 
     private void showDate() {
@@ -155,7 +152,7 @@
                 .alpha(0f)
                 .translationY(mAnimRadius)
                 .rotationX(-90f);
-        mDateAnimator = mDateContainer.animate()
+        mDateAnimator = mDate.animate()
                 .alpha(1f)
                 .translationY(0f)
                 .rotationX(0f);
@@ -166,7 +163,7 @@
                 .alpha(1f)
                 .translationY(0f)
                 .rotationX(0f);
-        mDateAnimator = mDateContainer.animate()
+        mDateAnimator = mDate.animate()
                 .alpha(0f)
                 .translationY(-mAnimRadius)
                 .rotationX(90f);
