Commit c6fd8598 authored by Theresa's avatar Theresa Committed by Commit Bot

[EoC] Fix texture capture for experimental button

Wait to request a texture capture until a layout pass, ensuring that the
toolbar buttons container has the proper width.

BUG=863819

Change-Id: I52b6288c1970ed16427e0231c092af13a228e9bc
Reviewed-on: https://chromium-review.googlesource.com/1141172Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Commit-Queue: Theresa <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#575897}
parent 2d0392dc
...@@ -43,6 +43,7 @@ import android.view.View.OnLongClickListener; ...@@ -43,6 +43,7 @@ import android.view.View.OnLongClickListener;
import android.view.ViewDebug; import android.view.ViewDebug;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewStub; import android.view.ViewStub;
import android.view.ViewTreeObserver;
import android.view.WindowManager; import android.view.WindowManager;
import android.view.animation.Interpolator; import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator; import android.view.animation.LinearInterpolator;
...@@ -318,6 +319,12 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -318,6 +319,12 @@ public class ToolbarPhone extends ToolbarLayout
private float mPreTextureCaptureAlpha = 1f; private float mPreTextureCaptureAlpha = 1f;
private boolean mIsOverlayTabStackDrawableLight; private boolean mIsOverlayTabStackDrawableLight;
/**
* A global layout listener used to capture a new texture when the experimental toolbar button
* is added or removed.
*/
private ViewTreeObserver.OnGlobalLayoutListener mExperimentalButtonLayoutListener;
// The following are some properties used during animation. We use explicit property classes // The following are some properties used during animation. We use explicit property classes
// to avoid the cost of reflection for each animation setup. // to avoid the cost of reflection for each animation setup.
...@@ -2817,7 +2824,8 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -2817,7 +2824,8 @@ public class ToolbarPhone extends ToolbarLayout
mExperimentalButton.setVisibility(View.INVISIBLE); mExperimentalButton.setVisibility(View.INVISIBLE);
} }
if (mLayoutUpdateHost != null) mLayoutUpdateHost.requestUpdate(); mExperimentalButtonLayoutListener = () -> requestLayoutHostUpdateForExperimentalButton();
getViewTreeObserver().addOnGlobalLayoutListener(mExperimentalButtonLayoutListener);
} }
@Override @Override
...@@ -2826,7 +2834,13 @@ public class ToolbarPhone extends ToolbarLayout ...@@ -2826,7 +2834,13 @@ public class ToolbarPhone extends ToolbarLayout
mExperimentalButton.setVisibility(View.GONE); mExperimentalButton.setVisibility(View.GONE);
mBrowsingModeViews.remove(mExperimentalButton); mBrowsingModeViews.remove(mExperimentalButton);
getViewTreeObserver().addOnGlobalLayoutListener(mExperimentalButtonLayoutListener);
}
private void requestLayoutHostUpdateForExperimentalButton() {
if (mLayoutUpdateHost != null) mLayoutUpdateHost.requestUpdate(); if (mLayoutUpdateHost != null) mLayoutUpdateHost.requestUpdate();
getViewTreeObserver().removeOnGlobalLayoutListener(mExperimentalButtonLayoutListener);
} }
@VisibleForTesting @VisibleForTesting
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment