Index: chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java |
index 30093bb7ecf5c9a2f557ce8796223a4a12efdc66..d60cb415ad4b94464e4c5b4eb71bb20b7bd7a90d 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java |
@@ -12,6 +12,7 @@ import android.annotation.SuppressLint; |
import android.content.Context; |
import android.graphics.Canvas; |
import android.graphics.Rect; |
+import android.support.v4.view.animation.FastOutLinearInInterpolator; |
import android.text.Selection; |
import android.util.AttributeSet; |
import android.view.KeyEvent; |
@@ -20,15 +21,19 @@ import android.view.TouchDelegate; |
import android.view.View; |
import android.view.ViewGroup; |
import android.view.WindowManager; |
+import android.view.animation.Interpolator; |
+import android.widget.FrameLayout; |
import android.widget.ImageView; |
import org.chromium.base.ApiCompatibilityUtils; |
import org.chromium.chrome.R; |
+import org.chromium.chrome.browser.ChromeFeatureList; |
import org.chromium.chrome.browser.WindowDelegate; |
import org.chromium.chrome.browser.appmenu.AppMenuButtonHelper; |
import org.chromium.chrome.browser.ntp.NewTabPage; |
import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; |
import org.chromium.chrome.browser.tab.Tab; |
+import org.chromium.chrome.browser.util.MathUtils; |
import org.chromium.chrome.browser.widget.TintedImageButton; |
import org.chromium.ui.UiUtils; |
@@ -41,13 +46,20 @@ public class LocationBarPhone extends LocationBarLayout { |
private static final int ACTION_BUTTON_TOUCH_OVERFLOW_LEFT = 15; |
+ private static final Interpolator GOOGLE_G_FADE_INTERPOLATOR = |
+ new FastOutLinearInInterpolator(); |
+ |
private View mFirstVisibleFocusedView; |
private View mIncognitoBadge; |
+ private View mGoogleGContainer; |
+ private View mGoogleG; |
private View mUrlActionsContainer; |
private TintedImageButton mMenuButton; |
private ImageView mMenuBadge; |
private View mMenuButtonWrapper; |
private int mIncognitoBadgePadding; |
+ private int mGoogleGWidth; |
+ private int mGoogleGMargin; |
private float mUrlFocusChangePercent; |
private Runnable mKeyboardResizeModeTask; |
private ObjectAnimator mOmniboxBackgroundAnimator; |
@@ -72,6 +84,11 @@ public class LocationBarPhone extends LocationBarLayout { |
mIncognitoBadgePadding = |
getResources().getDimensionPixelSize(R.dimen.location_bar_incognito_badge_padding); |
+ mGoogleGContainer = findViewById(R.id.google_g_container); |
+ mGoogleG = findViewById(R.id.google_g); |
+ mGoogleGWidth = getResources().getDimensionPixelSize(R.dimen.location_bar_google_g_width); |
+ mGoogleGMargin = getResources().getDimensionPixelSize(R.dimen.location_bar_google_g_margin); |
+ |
mUrlActionsContainer = findViewById(R.id.url_action_container); |
Rect delegateArea = new Rect(); |
mUrlActionsContainer.getHitRect(delegateArea); |
@@ -113,18 +130,6 @@ public class LocationBarPhone extends LocationBarLayout { |
return mMenuButton; |
} |
- @Override |
- public void getContentRect(Rect outRect) { |
- super.getContentRect(outRect); |
- if (mIncognitoBadge.getVisibility() == View.GONE) return; |
- |
- if (!ApiCompatibilityUtils.isLayoutRtl(this)) { |
- outRect.left += mIncognitoBadge.getWidth(); |
- } else { |
- outRect.right -= mIncognitoBadge.getWidth(); |
- } |
- } |
- |
/** |
* @return The first view visible when the location bar is focused. |
*/ |
@@ -270,7 +275,35 @@ public class LocationBarPhone extends LocationBarLayout { |
@Override |
protected void updateButtonVisibility() { |
updateDeleteButtonVisibility(); |
- updateMicButtonVisiblity(mUrlFocusChangePercent); |
+ updateMicButtonVisibility(mUrlFocusChangePercent); |
+ updateGoogleG(); |
+ } |
+ |
+ private void updateGoogleG() { |
+ NewTabPage ntp = getToolbarDataProvider().getNewTabPageForCurrentTab(); |
+ |
+ // If the default search engine is not Google, isLocationBarShownInNTP() will return false. |
+ if (ntp == null || !ntp.isLocationBarShownInNTP() |
+ || !ChromeFeatureList.isEnabled(ChromeFeatureList.NTP_SHOW_GOOGLE_G_IN_OMNIBOX)) { |
+ mGoogleGContainer.setVisibility(View.GONE); |
+ return; |
+ } |
+ |
+ mGoogleGContainer.setVisibility(View.VISIBLE); |
+ float animationProgress = |
+ GOOGLE_G_FADE_INTERPOLATOR.getInterpolation(mUrlFocusChangePercent); |
+ mGoogleG.setAlpha(1 - animationProgress); |
+ |
+ // Shrink the width down to zero, and the end margin down to half of its starting value. |
+ FrameLayout.LayoutParams layoutParams = |
+ (FrameLayout.LayoutParams) mGoogleG.getLayoutParams(); |
+ layoutParams.width = Math.round(mGoogleGWidth * (1 - animationProgress)); |
+ ApiCompatibilityUtils.setMarginEnd( |
+ layoutParams, Math.round(MathUtils.interpolate( |
+ mGoogleGMargin, mGoogleGMargin / 2f, animationProgress))); |
+ |
+ // Just calling requestLayout() would not resolve the end margin. |
+ mGoogleG.setLayoutParams(layoutParams); |
} |
@Override |