Fix for blank titlebar after layout

Currently android DisplayList calculates the transparent
regions of layers on layout, taking translation of
views also into account. We have a bug in browser where
TitleBar becomes blank when it is translated out of viewport
and relayout happens due to orientation change.
The fix will translate the titlebar Y to 0 during layout
and translate it back to its original position after the
layout.

Change-Id: I8d66148bd164c4cdfd7b48f98f420174dc18fbd9
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 9dbfe24..8e1e62c 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -844,7 +844,6 @@
 
     public void translateTitleBar(float topControlsOffsetYPix) {
         if (mTitleBar != null && !mInActionMode) {
-            mTitleBar.bringToFront();
             if (topControlsOffsetYPix != 0.0) {
                 mTitleBar.setEnabled(false);
             } else {
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
index 490cc15..30401ee 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -27,21 +27,17 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewStub;
+import android.view.ViewTreeObserver;
 import android.view.accessibility.AccessibilityManager;
-import android.view.animation.Animation;
-import android.view.animation.Animation.AnimationListener;
-import android.view.animation.AnimationUtils;
 import android.view.animation.DecelerateInterpolator;
 import org.codeaurora.swe.WebView;
 
 import android.widget.FrameLayout;
-import android.widget.RelativeLayout;
-
 
 /**
  * Base class for a title bar used by the browser.
  */
-public class TitleBar extends RelativeLayout {
+public class TitleBar extends FrameLayout implements ViewTreeObserver.OnPreDrawListener {
 
     private static final int PROGRESS_MAX = 100;
     private static final float ANIM_TITLEBAR_DECELERATE = 2.5f;
@@ -61,6 +57,8 @@
     private boolean mSkipTitleBarAnimations;
     private Animator mTitleBarAnimator;
     private boolean mIsFixedTitleBar;
+    private float mCurrentTranslationY;
+    private boolean mUpdateTranslationY = false;
 
     public TitleBar(Context context, UiController controller, BaseUi ui,
             FrameLayout contentView) {
@@ -103,6 +101,31 @@
         mBaseUi.setContentViewMarginTop(0);
     }
 
+    @Override
+    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+        super.onLayout(changed, left, top, right, bottom);
+
+        mCurrentTranslationY = this.getTranslationY();
+        if (mCurrentTranslationY < 0) {
+            mUpdateTranslationY = true;
+            this.setTranslationY(0);
+
+            final ViewTreeObserver observer = this.getViewTreeObserver();
+            observer.addOnPreDrawListener(this);
+        }
+    }
+
+    @Override
+    public boolean onPreDraw() {
+        if (mUpdateTranslationY) {
+            this.setTranslationY(mCurrentTranslationY);
+            mUpdateTranslationY = false;
+        }
+        final ViewTreeObserver observer = this.getViewTreeObserver();
+        observer.removeOnPreDrawListener(this);
+        return true;
+    }
+
     private void setFixedTitleBar() {
         boolean isFixed = !getContext().getResources().getBoolean(R.bool.hide_title);