Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(676)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java

Issue 1219133003: Contextual Search UI changes for custom tabs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes from Pedro's review Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java
index f28b82e0f5b6dc0319c9a920b58d0a2f2a557dac..aa8551beb9e87fb71a2a5e9ec8b3988c4566dfdf 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java
@@ -10,6 +10,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.compositor.bottombar.contextualsearch.ContextualSearchOptOutPromo.ContextualSearchPromoHost;
@@ -18,7 +19,9 @@ import org.chromium.chrome.browser.compositor.bottombar.contextualsearch.Context
import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
import org.chromium.chrome.browser.preferences.PreferencesLauncher;
import org.chromium.chrome.browser.preferences.privacy.ContextualSearchPreferenceFragment;
+import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.chrome.browser.util.MathUtils;
+import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
/**
@@ -124,6 +127,26 @@ abstract class ContextualSearchPanelBase extends ContextualSearchPanelStateHandl
private static final float ARROW_ICON_ROTATION_EXPANDED = -270.f;
/**
+ * The opacity of the close icon when the Panel is peeking.
+ */
+ private static final float CLOSE_ICON_OPACITY_PEEKED = 0.f;
+
+ /**
+ * The opacity of the close icon when the Panel is expanded.
+ */
+ private static final float CLOSE_ICON_OPACITY_EXPANDED = 0.f;
+
+ /**
+ * The opacity of the close icon when the Panel is maximized.
+ */
+ private static final float CLOSE_ICON_OPACITY_MAXIMIZED = 1.f;
+
+ /**
+ * The id of the close icon drawable.
+ */
+ public static final int CLOSE_ICON_DRAWABLE_ID = R.drawable.btn_close;
+
+ /**
* The height of the Progress Bar in dps.
*/
private static final float PROGRESS_BAR_HEIGHT_DP = 2.f;
@@ -435,6 +458,9 @@ abstract class ContextualSearchPanelBase extends ContextualSearchPanelStateHandl
private float mArrowIconOpacity;
private float mArrowIconRotation;
+ private float mCloseIconOpacity;
+ private float mCloseIconWidth;
+
/**
* @return The top margin of the Contextual Search Bar.
*/
@@ -533,6 +559,51 @@ abstract class ContextualSearchPanelBase extends ContextualSearchPanelStateHandl
return mArrowIconRotation;
}
+ /**
+ * @return Whether the close icon is visible.
+ */
+ public boolean isCloseIconVisible() {
+ // TODO(twellington): replace this call with call to new feature helper
+ // (isCloseButtonAvailable).
+ return FeatureUtilities.getCustomTabVisible();
+ }
+
+ /**
+ * @return The opacity of the close icon.
+ */
+ public float getCloseIconOpacity() {
+ return mCloseIconOpacity;
+ }
+
+ /**
+ * @return The width/height of the close icon.
+ */
+ public float getCloseIconDimension() {
+ if (mCloseIconWidth == 0) {
+ mCloseIconWidth = ApiCompatibilityUtils.getDrawable(mContext.getResources(),
+ CLOSE_ICON_DRAWABLE_ID).getIntrinsicWidth() * mPxToDp;
+ }
+ return mCloseIconWidth;
+ }
+
+ /**
+ * @return The Y coordinate of the close icon.
+ */
+ public float getCloseIconY() {
+ return (getSearchBarHeight() - getCloseIconDimension()) / 2;
+ }
+
+ /**
+ * @return The X coordinate of the close icon.
+ */
+ public float getCloseIconX() {
+ if (LocalizationUtils.isLayoutRtl()) {
+ return getSearchBarMarginSide();
+ } else {
+ return getWidth() - getSearchBarMarginSide() - getCloseIconDimension();
+ }
+ }
+
// --------------------------------------------------------------------------------------------
// Base Page states
// --------------------------------------------------------------------------------------------
@@ -912,6 +983,9 @@ abstract class ContextualSearchPanelBase extends ContextualSearchPanelStateHandl
mArrowIconOpacity = ARROW_ICON_OPACITY_PEEKED;
mArrowIconRotation = ARROW_ICON_ROTATION_PEEKED;
+ // Close icon opacity.
+ mCloseIconOpacity = CLOSE_ICON_OPACITY_PEEKED;
+
// Progress Bar.
mProgressBarOpacity = 0.f;
@@ -970,6 +1044,9 @@ abstract class ContextualSearchPanelBase extends ContextualSearchPanelStateHandl
ARROW_ICON_ROTATION_EXPANDED,
percentage));
+ // Close icon opacity.
+ mCloseIconOpacity = CLOSE_ICON_OPACITY_EXPANDED;
+
// Progress Bar.
float peekedHeight = getPanelHeightFromState(PanelState.PEEKED);
float threshold = PROGRESS_BAR_VISIBILITY_THRESHOLD_DP / mPxToDp;
@@ -1032,13 +1109,29 @@ abstract class ContextualSearchPanelBase extends ContextualSearchPanelStateHandl
percentage);
mSearchIconOpacity = searchIconOpacity;
+ // Determine arrow and close icon opacities.
pedro (no code reviews) 2015/07/08 20:15:05 Nit: Add comment explaining what this is doing, an
Theresa 2015/07/08 21:04:59 Done. I had the explanation a little lower down, b
+ float arrowIconPercentage = percentage;
+ float closeIconPercentage = percentage;
+ if (isArrowIconVisible() && isCloseIconVisible()) {
+ // If both icons are visible, the arrow icon needs to finish fading out before the
+ // close icon starts fading in.
+ arrowIconPercentage = percentage * 2;
pedro (no code reviews) 2015/07/08 20:15:05 Two observations: 1) I think that dividing by 0.5
Theresa 2015/07/08 21:04:59 Done. For closeIconPercentage, the line is a littl
+ closeIconPercentage = (float) ((percentage - 0.5) * 2.0);
pedro (no code reviews) 2015/07/08 20:15:05 Remember to use float type suffix: 0.5 --> .5f
Theresa 2015/07/08 21:04:59 Done.
+ }
+
// Arrow Icon.
mArrowIconOpacity = MathUtils.interpolate(
ARROW_ICON_OPACITY_EXPANDED,
ARROW_ICON_OPACITY_MAXIMIZED,
- percentage);
+ arrowIconPercentage);
mArrowIconRotation = ARROW_ICON_ROTATION_EXPANDED;
+ // Close icon opacity.
+ mCloseIconOpacity = MathUtils.interpolate(
+ CLOSE_ICON_OPACITY_EXPANDED,
+ CLOSE_ICON_OPACITY_MAXIMIZED,
+ closeIconPercentage);
+
// Progress Bar.
mProgressBarOpacity = 1.f;
mProgressBarY = searchBarHeight - PROGRESS_BAR_HEIGHT_DP + 1;

Powered by Google App Engine
This is Rietveld 408576698