Index: chrome/android/java_staging/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchNetworkCommunicator.java |
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchNetworkCommunicator.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchNetworkCommunicator.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b425fb021e2474f4276c3a6e5a7669342fcd88b4 |
--- /dev/null |
+++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchNetworkCommunicator.java |
@@ -0,0 +1,80 @@ |
+// 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.contextualsearch; |
+ |
+import java.net.URL; |
+ |
+import javax.annotation.Nullable; |
+ |
+ |
+/** |
+ * An interface for network communication between the Contextual Search client and server. |
+ */ |
+public interface ContextualSearchNetworkCommunicator { |
+ |
+ /** |
+ * Starts a Search Term Resolution request. |
+ * When the response comes back {@link #handleSearchTermResolutionResponse} will be called. |
+ * @param selection the current selected text. |
+ */ |
+ void startSearchTermResolutionRequest(String selection); |
+ |
+ /** |
+ * Continues a Search Term Resolution request using an existing context. |
+ * The context for the request must be previously set up through an implementation of this |
+ * interface (not covered here). |
+ * When the response comes back {@link #handleSearchTermResolutionResponse} will be called. |
+ */ |
+ void continueSearchTermResolutionRequest(); |
+ |
+ /** |
+ * Handles a Search Term Resolution response. |
+ * @param isNetworkUnavailable whether the network is available. |
+ * @param responseCode the server's HTTP response code. |
+ * @param searchTerm the term to search for. |
+ * @param displayText the text to display that describes the search term. |
+ * @param alternateTerm the alternate search term. |
+ * @param doPreventPreload whether to prevent preloading the search result. |
+ */ |
+ void handleSearchTermResolutionResponse(boolean isNetworkUnavailable, int responseCode, |
+ String searchTerm, String displayText, String alternateTerm, boolean doPreventPreload); |
+ |
+ /** |
+ * Loads a URL in the search content view. |
+ * @param url the URL of the page to load. |
+ */ |
+ void loadUrl(String url); |
+ |
+ // -------------------------------------------------------------------------------------------- |
+ // These are non-network actions that need to be stubbed out for testing. |
+ // -------------------------------------------------------------------------------------------- |
+ |
+ /** |
+ * Gets the URL of the base page. |
+ * TODO(donnd): move to another interface, or rename this interface: |
+ * This is needed to stub out for testing, but has nothing to do with networking. |
+ * @return The URL of the base page (needed for testing purposes). |
+ */ |
+ @Nullable URL getBasePageUrl(); |
+ |
+ /** |
+ * Handles the WebContentsObserver#didNavigateMainFrame callback. |
+ * @param url The URL of the navigation. |
+ * @param httpResultCode The HTTP result code of the navigation. |
+ */ |
+ void handleDidNavigateMainFrame(String url, int httpResultCode); |
+ |
+ /** |
+ * Creates and sets up a new Search Panel's {@code ContentViewCore}. If there's an existing |
+ * {@code ContentViewCore} being used, it will be destroyed first. This should be called as |
+ * late as possible to avoid unnecessarily consuming memory. |
+ */ |
+ void createNewSearchContentView(); |
+ |
+ /** |
+ * Destroys the Search Panel's {@code ContentViewCore}. |
+ */ |
+ void destroySearchContentView(); |
+} |