Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelDelegate.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelDelegate.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..73d97a476171048b6eae8ff644fe8725aac4289d |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelDelegate.java |
@@ -0,0 +1,218 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser.compositor.bottombar.contextualsearch; |
+ |
+import android.content.Context; |
+ |
+import org.chromium.base.VisibleForTesting; |
+import org.chromium.chrome.browser.ChromeActivity; |
+import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.PanelState; |
+import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChangeReason; |
+import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelContent; |
+import org.chromium.chrome.browser.compositor.layouts.ChromeAnimation; |
+import org.chromium.content.browser.ContentViewCore; |
+ |
+/** |
+ * The delegate that that interfaces with the {@link ContextualSearchPanel}. |
+ */ |
+public interface ContextualSearchPanelDelegate { |
+ /** |
+ * @return Whether the Panel is in fullscreen size. |
+ */ |
+ boolean isFullscreenSizePanel(); |
+ |
+ /** |
+ * @return Whether the Panel is showing. |
+ */ |
+ boolean isShowing(); |
+ |
+ /** |
+ * @return Whether the Search Bar is peeking. |
+ */ |
+ boolean isPeeking(); |
+ |
+ /** |
+ * @return The width of the Contextual Search Panel in pixels. |
+ */ |
+ int getMaximumWidthPx(); |
+ |
+ /** |
+ * @return The height of the Contextual Search Panel in pixels. |
+ */ |
+ int getMaximumHeightPx(); |
+ |
+ /** |
+ * @return The width of the Search Content View in pixels. |
+ */ |
+ int getSearchContentViewWidthPx(); |
+ |
+ /** |
+ * @return The height of the Search Content View in pixels. |
+ */ |
+ int getSearchContentViewHeightPx(); |
+ |
+ /** |
+ * Maximizes the Contextual Search Panel, then promotes it to a regular Tab. |
+ * @param reason The {@code StateChangeReason} behind the maximization and promotion to tab. |
+ */ |
+ void maximizePanelThenPromoteToTab(StateChangeReason reason); |
+ |
+ /** |
+ * Maximizes the Contextual Search Panel, then promotes it to a regular Tab. |
+ * @param reason The {@code StateChangeReason} behind the maximization and promotion to tab. |
+ * @param duration The animation duration in milliseconds. |
+ */ |
+ void maximizePanelThenPromoteToTab(StateChangeReason reason, long duration); |
+ |
+ /** |
+ * Animates the Contextual Search Panel to its peeked state. |
+ * @param reason The {@code StateChangeReason} to which closing the panel is attributed. |
+ */ |
+ void peekPanel(StateChangeReason reason); |
+ |
+ /** |
+ * Animates the Contextual Search Panel to its closed state. |
+ * @param reason The {@code StateChangeReason} to which closing the panel is attributed. |
+ * @param animate Whether to animate the close action. |
+ */ |
+ void closePanel(StateChangeReason reason, boolean animate); |
+ |
+ /** |
+ * Updates the y coordinate of the Base Page's selection start position. |
+ * @param y The y coordinate. |
+ */ |
+ void updateBasePageSelectionYPx(float y); |
+ |
+ /** |
+ * @return The panel's state. |
+ */ |
+ PanelState getPanelState(); |
+ |
+ /** |
+ * Sets that the contextual search involved the promo. |
+ */ |
+ void setDidSearchInvolvePromo(); |
+ |
+ /** |
+ * @param isActive Whether the promo is active. |
+ */ |
+ void setIsPromoActive(boolean isActive); |
+ |
+ /** |
+ * Shows the peek promo. |
+ */ |
+ void showPeekPromo(); |
+ |
+ /** |
+ * @return Whether the Peek Promo is visible. |
+ */ |
+ @VisibleForTesting |
+ boolean isPeekPromoVisible(); |
+ |
+ /** |
+ * Gets whether a touch on the search content view has been done yet or not. |
+ */ |
+ boolean didTouchSearchContentView(); |
+ |
+ /** |
+ * Called when the SERP finishes loading, this records the duration of loading the SERP from |
+ * the time the panel was opened until the present. |
+ * @param wasPrefetch Whether the request was prefetch-enabled. |
+ */ |
+ void onSearchResultsLoaded(boolean wasPrefetch); |
+ |
+ /** |
+ * @return {@code true} Whether the close animation should run when the the panel is closed |
+ * due the panel being promoted to a tab. |
+ */ |
+ boolean shouldAnimatePanelCloseOnPromoteToTab(); |
+ |
+ /** |
+ * @return The ContentViewCore associated with the panel. |
+ * TODO(mdjones): Remove this method from the interface. |
+ */ |
+ ContentViewCore getContentViewCore(); |
+ |
+ /** |
+ * @return The Context associated with the panel. |
+ */ |
+ Context getContext(); |
+ |
+ /** |
+ * Remove the last entry from history provided it is in a given time frame. |
+ * @param historyUrl The URL to remove. |
+ * @param urlTimeMs The time that the URL was visited. |
+ */ |
+ void removeLastHistoryEntry(String historyUrl, long urlTimeMs); |
+ |
+ /** |
+ * Shows the search term in the SearchBar. This should be called when the search term is set |
+ * without search term resolution. |
+ * @param searchTerm The string that represents the search term. |
+ */ |
+ void displaySearchTerm(String searchTerm); |
+ |
+ /** |
+ * Shows the search context in the SearchBar. |
+ * @param selection The portion of the context that represents the user's selection. |
+ * @param end The portion of the context from the selection to its end. |
+ */ |
+ void displaySearchContext(String selection, String end); |
+ |
+ /** |
+ * Handles showing the resolved search term in the SearchBar. |
+ * @param searchTerm The string that represents the search term. |
+ */ |
+ void onSearchTermResolutionResponse(String searchTerm); |
+ |
+ /** |
+ * @param activity The current active ChromeActivity. |
+ */ |
+ void setChromeActivity(ChromeActivity activity); |
+ |
+ /** |
+ * Load a URL in the panel ContentViewCore. |
+ * @param url The URL to load. |
+ */ |
+ void loadUrlInPanel(String url); |
+ |
+ /** |
+ * @return True if the ContentViewCore is being shown. |
+ */ |
+ boolean isContentViewShowing(); |
+ |
+ /** |
+ * @return True if the panel loaded a URL. |
+ */ |
+ boolean didLoadAnyUrl(); |
+ |
+ /** |
+ * Sets the top control state based on the internals of the panel. |
+ */ |
+ void updateTopControlState(); |
+ |
+ /** |
+ * Notify the panel that the ContentViewCore was seen. |
+ */ |
+ void setWasSearchContentViewSeen(); |
+ |
+ /** |
+ * Sets the visibility of the Search Content View. |
+ * @param isVisible True to make it visible. |
+ */ |
+ void setSearchContentViewVisibility(boolean isVisible); |
+ |
+ /** |
+ * Creates an {@link org.chromium.chrome.browser.compositor.layouts.ChromeAnimation.Animatable} |
+ * and adds it to the animation, setting the start value at the beginning of the animation. |
+ */ |
+ <T extends Enum<?>> void addToAnimation(ChromeAnimation.Animatable<T> object, T prop, |
+ float start, float end, long duration, long startTime); |
+ /** |
+ * @param panelContent The OverlayPanelContent that this panel should use. |
+ */ |
+ @VisibleForTesting |
+ void setOverlayPanelContent(OverlayPanelContent panelContent); |
+} |