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

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

Issue 1379183003: [ContextualSearch] Adds long press promo for Contextual Search. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressing David's comments and tweaking policy Created 5 years, 2 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/ContextualSearchPanel.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel.java
index 7ac8418ccaeb0746e9951454f101a8ff60b727f7..4e65818e73c9071b3ec24ef0b6df10c4978269a3 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel.java
@@ -12,6 +12,7 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.compositor.bottombar.OverlayContentProgressObserver;
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelContent;
+import org.chromium.chrome.browser.compositor.layouts.ChromeAnimation;
import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManagementDelegate;
import org.chromium.content.browser.ContentViewClient;
@@ -228,7 +229,23 @@ public class ContextualSearchPanel extends ContextualSearchPanelAnimation
// onPanelStateChanged is not called here.
PanelState fromState = getPanelState();
super.setPanelState(toState, reason);
+
mPanelMetrics.onPanelStateChanged(fromState, toState, reason);
+
+ if (toState == PanelState.PEEKED
+ && (fromState == PanelState.CLOSED || fromState == PanelState.UNDEFINED)) {
+ // If the Peek Promo is visible, it should animate when the SearchBar peeks.
+ if (getPeekPromoControl().isVisible()) {
+ getPeekPromoControl().animateAppearance();
+ }
+ }
+
+ if (fromState == PanelState.PEEKED
+ && (toState == PanelState.EXPANDED || toState == PanelState.MAXIMIZED)) {
+ // After opening the Panel to either expanded or maximized state,
+ // the promo should disappear.
+ getPeekPromoControl().hide();
+ }
}
// ============================================================================================
@@ -279,6 +296,7 @@ public class ContextualSearchPanel extends ContextualSearchPanelAnimation
@Override
protected void onClose(StateChangeReason reason) {
destroySearchBarControl();
+ destroyPeekPromoControl();
if (mOverlayPanelContent != null) {
mOverlayPanelContent.destroyContentView();
}
@@ -532,26 +550,21 @@ public class ContextualSearchPanel extends ContextualSearchPanelAnimation
// Panel Delegate
// ============================================================================================
- /**
- * Sets that the Search Content View was seen.
- */
@Override
public void setWasSearchContentViewSeen() {
mPanelMetrics.setWasSearchContentViewSeen();
}
- /**
- * Sets whether the promo is active.
- */
@Override
- public void setIsPromoActive(boolean shown) {
- mPanelMetrics.setIsPromoActive(shown);
+ public void setIsPromoActive(boolean isActive) {
+ mPanelMetrics.setIsPromoActive(isActive);
+ }
+
+ @Override
+ public void showPeekPromo() {
+ getPeekPromoControl().show();
}
- /**
- * Records timing information when the search results have fully loaded.
- * @param wasPrefetch Whether the request was prefetch-enabled.
- */
@Override
public void onSearchResultsLoaded(boolean wasPrefetch) {
mPanelMetrics.onSearchResultsLoaded(wasPrefetch);
@@ -622,15 +635,16 @@ public class ContextualSearchPanel extends ContextualSearchPanelAnimation
@Override
public void closePanel(StateChangeReason reason, boolean animate) {
+ super.closePanel(reason, animate);
+
// If the close action is animated, the Layout will be hidden when
// the animation is finished, so we should only hide the Layout
// here when not animating.
if (!animate && mSearchPanelHost != null) {
mSearchPanelHost.hideLayout(true);
}
- mHasSearchContentViewBeenTouched = false;
- super.closePanel(reason, animate);
+ mHasSearchContentViewBeenTouched = false;
}
@Override
@@ -718,6 +732,40 @@ public class ContextualSearchPanel extends ContextualSearchPanelAnimation
mPanelMetrics.setDidSearchInvolvePromo();
}
+ @Override
+ public <T extends Enum<?>> void addToAnimation(ChromeAnimation.Animatable<T> object, T prop,
+ float start, float end, long duration,
+ long startTime) {
+ super.addToAnimation(object, prop, start, end, duration, startTime);
+ }
+
+ // ============================================================================================
+ // Panel Rendering
+ // ============================================================================================
+
+ // TODO(pedrosimonetti): generalize the dispatching of panel updates.
+
+ @Override
+ protected void updatePanelForCloseOrPeek(float percentage) {
+ super.updatePanelForCloseOrPeek(percentage);
+
+ getPeekPromoControl().onUpdateFromCloseToPeek(percentage);
+ }
+
+ @Override
+ protected void updatePanelForExpansion(float percentage) {
+ super.updatePanelForExpansion(percentage);
+
+ getPeekPromoControl().onUpdateFromPeekToExpand(percentage);
+ }
+
+ @Override
+ protected void updatePanelForMaximization(float percentage) {
+ super.updatePanelForMaximization(percentage);
+
+ getPeekPromoControl().onUpdateFromExpandToMaximize(percentage);
+ }
+
// ============================================================================================
// ContextualSearchBarControl
// ============================================================================================
@@ -813,6 +861,39 @@ public class ContextualSearchPanel extends ContextualSearchPanelAnimation
}
// ============================================================================================
+ // Peek Promo
+ // ============================================================================================
+
+ private ContextualSearchPeekPromoControl mPeekPromoControl;
+
+ /**
+ * Creates the ContextualSearchPeekPromoControl, if needed.
+ */
+ public ContextualSearchPeekPromoControl getPeekPromoControl() {
+ assert mContainerView != null;
+ assert mResourceLoader != null;
+
+ if (mPeekPromoControl == null) {
+ mPeekPromoControl =
+ new ContextualSearchPeekPromoControl(this, mContext, mContainerView,
+ mResourceLoader);
+ }
+
+ assert mPeekPromoControl != null;
+ return mPeekPromoControl;
+ }
+
+ /**
+ * Destroys the ContextualSearchPeekPromoControl.
+ */
+ private void destroyPeekPromoControl() {
+ if (mPeekPromoControl != null) {
+ mPeekPromoControl.destroy();
+ mPeekPromoControl = null;
+ }
+ }
+
+ // ============================================================================================
// Panel Content
// ============================================================================================

Powered by Google App Engine
This is Rietveld 408576698