diff --git a/src/com/android/browser/PageProgressView.java b/src/com/android/browser/PageProgressView.java
index 183566a..f512cef 100644
--- a/src/com/android/browser/PageProgressView.java
+++ b/src/com/android/browser/PageProgressView.java
@@ -20,6 +20,8 @@
 import android.graphics.Canvas;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.Message;
 import android.util.AttributeSet;
 import android.widget.ImageView;
 
@@ -28,9 +30,16 @@
  */
 public class PageProgressView extends ImageView {
 
-    private int mProgress;
-    private int mMaxProgress;
+    public static final int MAX_PROGRESS = 10000;
+    private static final int MSG_UPDATE = 42;
+    private static final int STEPS = 10;
+    private static final int DELAY = 40;
+
+    private int mCurrentProgress;
+    private int mTargetProgress;
+    private int mIncrement;
     private Rect mBounds;
+    private Handler mHandler;
 
     /**
      * @param context
@@ -60,27 +69,41 @@
     }
 
     private void init(Context ctx) {
-        mMaxProgress = 10000;
         mBounds = new Rect(0,0,0,0);
-        mProgress = 0;
+        mCurrentProgress = 0;
+        mTargetProgress = 0;
+        mHandler = new Handler() {
+
+            @Override
+            public void handleMessage(Message msg) {
+                if (msg.what == MSG_UPDATE) {
+                    mCurrentProgress = Math.min(mTargetProgress,
+                            mCurrentProgress + mIncrement);
+                    mBounds.right = getWidth() * mCurrentProgress / MAX_PROGRESS;
+                    invalidate();
+                    if (mCurrentProgress < mTargetProgress) {
+                        sendMessageDelayed(mHandler.obtainMessage(MSG_UPDATE), DELAY);
+                    }
+                }
+            }
+
+        };
     }
 
     @Override
     public void onLayout(boolean f, int l, int t, int r, int b) {
         mBounds.left = 0;
-        mBounds.right = (r - l) * mProgress / mMaxProgress;
+        mBounds.right = (r - l) * mCurrentProgress / MAX_PROGRESS;
         mBounds.top = 0;
         mBounds.bottom = b-t;
     }
 
-    void setMaxProgress(int max) {
-        mMaxProgress = max;
-    }
-
     void setProgress(int progress) {
-        mProgress = progress;
-        mBounds.right = getWidth()*mProgress/mMaxProgress;
-        invalidate();
+        mCurrentProgress = mTargetProgress;
+        mTargetProgress = progress;
+        mIncrement = (mTargetProgress - mCurrentProgress) / STEPS;
+        mHandler.removeMessages(MSG_UPDATE);
+        mHandler.sendEmptyMessage(MSG_UPDATE);
     }
 
     @Override
diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java
index cf0f27c..4c8ab26 100644
--- a/src/com/android/browser/TabBar.java
+++ b/src/com/android/browser/TabBar.java
@@ -250,14 +250,14 @@
         }
 
         @Override
-        public void setSelected(boolean selected) {
+        public void setActivated(boolean selected) {
             mSelected = selected;
             mClose.setVisibility(mSelected ? View.VISIBLE : View.GONE);
             mTitle.setTextAppearance(mBrowserActivity, mSelected ?
                     R.style.TabTitleSelected : R.style.TabTitleUnselected);
             setHorizontalFadingEdgeEnabled(!mSelected);
             setFadingEdgeLength(50);
-            super.setSelected(selected);
+            super.setActivated(selected);
             setLayoutParams(new LayoutParams(selected ?
                     mTabWidthSelected : mTabWidthUnselected,
                     LayoutParams.MATCH_PARENT));
diff --git a/src/com/android/browser/TabScrollView.java b/src/com/android/browser/TabScrollView.java
index b411416..435362d 100644
--- a/src/com/android/browser/TabScrollView.java
+++ b/src/com/android/browser/TabScrollView.java
@@ -80,12 +80,12 @@
     void setSelectedTab(int position) {
         View v = getSelectedTab();
         if (v != null) {
-            v.setSelected(false);
+            v.setActivated(false);
         }
         mSelected = position;
         v = getSelectedTab();
         if (v != null) {
-            v.setSelected(true);
+            v.setActivated(true);
         }
         requestLayout();
     }
@@ -104,12 +104,12 @@
 
     void addTab(View tab) {
         mContentView.addView(tab);
-        tab.setSelected(false);
+        tab.setActivated(false);
     }
 
     void addTab(View tab, int pos) {
         mContentView.addView(tab, pos);
-        tab.setSelected(false);
+        tab.setActivated(false);
     }
 
     void removeTab(View tab) {
diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/TitleBarXLarge.java
index da39307..b652e15 100644
--- a/src/com/android/browser/TitleBarXLarge.java
+++ b/src/com/android/browser/TitleBarXLarge.java
@@ -57,6 +57,7 @@
     private View mGoButton;
     private ImageView mStopButton;
     private View mAllButton;
+    private View mClearButton;
     private PageProgressView mProgressView;
     private UrlInputView mUrlFocused;
     private TextView mUrlUnfocused;
@@ -88,6 +89,7 @@
         mSearchButton = findViewById(R.id.search);
         mLockIcon = (ImageView) findViewById(R.id.lock);
         mGoButton = findViewById(R.id.go);
+        mClearButton = findViewById(R.id.clear);
         mProgressView = (PageProgressView) findViewById(R.id.progress);
         mFocusContainer = findViewById(R.id.urlbar_focused);
         mUnfocusContainer = findViewById(R.id.urlbar_unfocused);
@@ -99,14 +101,15 @@
         mStopButton.setOnClickListener(this);
         mSearchButton.setOnClickListener(this);
         mGoButton.setOnClickListener(this);
+        mClearButton.setOnClickListener(this);
         mUrlFocused.setUrlInputListener(this);
         mUrlUnfocused.setOnFocusChangeListener(this);
         mUrlFocused.setContainer(mFocusContainer);
     }
-    
+
     public void onFocusChange(View v, boolean hasFocus) {
         if (hasFocus) {
-            swapUrlContainer(true);
+            setUrlMode(true);
             mUrlFocused.selectAll();
             mUrlFocused.requestFocus();
             mUrlFocused.setDropDownWidth(mUnfocusContainer.getWidth());
@@ -132,6 +135,8 @@
             if (!TextUtils.isEmpty(mUrlFocused.getText())) {
                 onAction(mUrlFocused.getText().toString());
             }
+        } else if (mClearButton == v) {
+            mUrlFocused.setText("");
         }
     }
 
@@ -152,7 +157,7 @@
         i.setAction(Intent.ACTION_SEARCH);
         i.putExtra(SearchManager.QUERY, text);
         mBrowserActivity.onNewIntent(i);
-        swapUrlContainer(false);
+        setUrlMode(false);
         setDisplayTitle(text);
     }
 
@@ -160,8 +165,8 @@
     public void onDismiss() {
         mBrowserActivity.getTabControl().getCurrentTopWebView().requestFocus();
         mBrowserActivity.hideFakeTitleBar();
+        setUrlMode(false);
         setDisplayTitle(mBrowserActivity.getTabControl().getCurrentWebView().getUrl());
-        swapUrlContainer(false);
     }
 
     @Override
@@ -172,6 +177,17 @@
         }
     }
 
+    private void setUrlMode(boolean focused) {
+        swapUrlContainer(focused);
+        if (focused) {
+            mSearchButton.setVisibility(View.GONE);
+            mGoButton.setVisibility(View.VISIBLE);
+        } else {
+            mSearchButton.setVisibility(View.VISIBLE);
+            mGoButton.setVisibility(View.GONE);
+        }
+    }
+
     private void swapUrlContainer(boolean focus) {
         mUnfocusContainer.setVisibility(focus ? View.GONE : View.VISIBLE);
         mFocusContainer.setVisibility(focus ? View.VISIBLE : View.GONE);
@@ -203,6 +219,7 @@
     @Override
     void setProgress(int newProgress) {
         if (newProgress >= PROGRESS_MAX) {
+            mProgressView.setProgress(PageProgressView.MAX_PROGRESS);
             mProgressView.setVisibility(View.GONE);
             mInLoad = false;
             mStopButton.setImageDrawable(mReloadDrawable);
@@ -212,7 +229,8 @@
                 mInLoad = true;
                 mStopButton.setImageDrawable(mStopDrawable);
             }
-            mProgressView.setProgress(newProgress*10000/PROGRESS_MAX);
+            mProgressView.setProgress(newProgress * PageProgressView.MAX_PROGRESS
+                    / PROGRESS_MAX);
         }
     }
 
