Add title bar indicator to tab

    Bug: http://b/issue?id=3184567
    When the url bar is scrolled off the screen, the current
    tab shows an indicator

Change-Id: I5a1f11bac09304c81857496b4bb7662656ef225a
diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java
index 4f179b0..7969955 100644
--- a/src/com/android/browser/TabBar.java
+++ b/src/com/android/browser/TabBar.java
@@ -73,8 +73,7 @@
     private Map<Tab, TabViewData> mTabMap;
 
     private boolean mUserRequestedUrlbar;
-    private boolean mTitleVisible;
-    private boolean mShowUrlMode;
+    private int mVisibleTitleHeight;
     private boolean mHasReceivedTitle;
 
     private Drawable mGenericFavicon;
@@ -121,7 +120,7 @@
         updateTabs(mUiController.getTabs());
 
         mUserRequestedUrlbar = false;
-        mTitleVisible = true;
+        mVisibleTitleHeight = 1;
         mButtonWidth = -1;
         // tab dimensions
         mTabHeight = (int) res.getDimension(R.dimen.tab_height);
@@ -204,18 +203,24 @@
         mUserRequestedUrlbar = true;
     }
 
-    private void setShowUrlMode(boolean showUrl) {
-        mShowUrlMode = showUrl;
+    private void showTitleBarIndicator(boolean show) {
+        Tab tab = mTabControl.getCurrentTab();
+        if (tab != null) {
+            TabViewData tvd = mTabMap.get(tab);
+            if (tvd != null) {
+                tvd.mTabView.showIndicator(show);
+            }
+        }
     }
 
     // callback after fake titlebar is shown
     void onShowTitleBar() {
-        setShowUrlMode(false);
+        showTitleBarIndicator(false);
     }
 
     // callback after fake titlebar is hidden
     void onHideTitleBar() {
-        setShowUrlMode(!mTitleVisible);
+        showTitleBarIndicator(mVisibleTitleHeight == 0);
         Tab tab = mTabControl.getCurrentTab();
         tab.getWebView().requestFocus();
         mUserRequestedUrlbar = false;
@@ -224,22 +229,22 @@
     // webview scroll listener
 
     @Override
-    public void onScroll(boolean titleVisible) {
+    public void onScroll(int visibleTitleHeight) {
         // isLoading is using the current tab, which initially might not be set yet
         if (mTabControl.getCurrentTab() != null) {
-            mTitleVisible = titleVisible;
-            if (!mShowUrlMode && !mTitleVisible && !isLoading()) {
+            if ((mVisibleTitleHeight > 0) && (visibleTitleHeight == 0)
+                    && !isLoading()) {
                 if (mUserRequestedUrlbar) {
                     mUi.hideFakeTitleBar();
                 } else {
-                    setShowUrlMode(true);
+                    showTitleBarIndicator(true);
                 }
-            } else if (mTitleVisible && !isLoading()) {
-                if (mShowUrlMode) {
-                    setShowUrlMode(false);
-                }
+            } else if ((mVisibleTitleHeight == 0) && (visibleTitleHeight != 0)
+                    && !isLoading()) {
+                showTitleBarIndicator(false);
             }
         }
+        mVisibleTitleHeight = visibleTitleHeight;
     }
 
     @Override
@@ -277,6 +282,7 @@
         TabViewData mTabData;
         View mTabContent;
         TextView mTitle;
+        View mIndicator;
         View mIncognito;
         ImageView mIconView;
         ImageView mLock;
@@ -297,7 +303,7 @@
             mTabData = tab;
             setGravity(Gravity.CENTER_VERTICAL);
             setOrientation(LinearLayout.HORIZONTAL);
-            setPadding(0, 0, mTabPadding, 0);
+            setPadding(mTabPadding, 0, 0, 0);
             LayoutInflater inflater = LayoutInflater.from(getContext());
             mTabContent = inflater.inflate(R.layout.tab_title, this, true);
             mTitle = (TextView) mTabContent.findViewById(R.id.title);
@@ -306,12 +312,17 @@
             mClose = (ImageView) mTabContent.findViewById(R.id.close);
             mClose.setOnClickListener(this);
             mIncognito = mTabContent.findViewById(R.id.incognito);
+            mIndicator = mTabContent.findViewById(R.id.chevron);
             mSelected = false;
             mInLoad = false;
             // update the status
             updateFromData();
         }
 
+        void showIndicator(boolean show) {
+            mIndicator.setVisibility(show ? View.VISIBLE : View.GONE);
+        }
+
         @Override
         public void onClick(View v) {
             if (v == mClose) {
@@ -497,7 +508,7 @@
             tvd.setProgress(tvd.mProgress);
             // update the scroll state
             WebView webview = tab.getWebView();
-            onScroll(webview.getVisibleTitleHeight() > 0);
+            onScroll(webview.getVisibleTitleHeight());
         }
     }