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

Unified Diff: chrome/browser/instant/instant_api_wrapper.h

Issue 11824050: InstantExtended: Committed NTP (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update Created 7 years, 11 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/browser/instant/instant_api_wrapper.h
diff --git a/chrome/browser/instant/instant_client.h b/chrome/browser/instant/instant_api_wrapper.h
similarity index 58%
rename from chrome/browser/instant/instant_client.h
rename to chrome/browser/instant/instant_api_wrapper.h
index 0f448684e8fad500ab34034ad137af4481cd9227..16f07558e98997fe0d8a63dfa35b54796068624e 100644
--- a/chrome/browser/instant/instant_client.h
+++ b/chrome/browser/instant/instant_api_wrapper.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_INSTANT_INSTANT_CLIENT_H_
-#define CHROME_BROWSER_INSTANT_INSTANT_CLIENT_H_
+#ifndef CHROME_BROWSER_INSTANT_INSTANT_API_WRAPPER_H_
+#define CHROME_BROWSER_INSTANT_INSTANT_API_WRAPPER_H_
#include <vector>
@@ -27,54 +27,96 @@ namespace gfx {
class Rect;
}
-// InstantClient is used to exchange messages between its delegate and a page
-// that supports the Instant API (http://dev.chromium.org/searchbox).
-class InstantClient : public content::WebContentsObserver {
+// InstantAPIWrapper is used for exchanging messages with a page that supports
+// the Instant/Embedded Search API (http://dev.chromium.org/embeddedsearch).
+//
+// The messages received by InstantAPIWrapper are sent to a class that
+// implements InstantAPIWrapper::Receiver, unless the message is intercepted and
+// cancelled by InstantAPIWrapper::Controller.
+class InstantAPIWrapper : public content::WebContentsObserver {
dhollowa 2013/01/14 19:59:39 Not a fan of this name. How about just InstantPag
samarth 2013/01/22 15:59:06 Done.
public:
- // When InstantClient receives messages from the page, it calls the following
- // methods on its delegate.
- class Delegate {
+ // When InstantAPIWrapper receives a message, it first checks with its
+ // Controller to see whether it should process the message.
+ class Controller {
Jered 2013/01/14 18:22:34 Calling this a controller feels a bit off. Some of
dhollowa 2013/01/14 19:59:39 +1. And this should not be pure-virtual, there sh
samarth 2013/01/22 15:59:06 Done.
public:
+ // Returns true if the page is known to support the Instant API. This starts
+ // out false, and is set to true whenever we get any message from the page.
+ // Once true, it never becomes false (the page isn't expected to drop API
+ // support suddenly).
+ virtual bool supports_instant() const = 0;
Jered 2013/01/14 18:22:34 Consider just implementing these in the Wrapper, s
samarth 2013/01/22 15:59:06 Done.
+ virtual void set_supports_instant(bool supports_instant) = 0;
+
+ // Called when Update() is called on the API.
+ virtual void OnUpdate() = 0;
Jered 2013/01/14 18:22:34 Can whoever is calling Update() do this?
samarth 2013/01/22 15:59:06 Just overriding Update() now in InstantOverlay. (
+
+ // These functions are called before processing messages received from the
+ // page. If the controller returns false, the message is ignored.
+ // (See corresponding functions in Receiver for details for each of these.)
+ virtual bool OnRenderViewGone() const = 0;
+ virtual bool OnAboutToNavigateMainFrame() const = 0;
+ virtual bool OnSetSuggestions() const = 0;
+ virtual bool OnShowInstantPreview() const = 0;
+ virtual bool OnStartCapturingKeyStrokes() const = 0;
+ virtual bool OnStopCapturingKeyStrokes() const = 0;
+ virtual bool OnNavigateToURL() const = 0;
+
+ protected:
+ virtual ~Controller();
+ };
+
+ // InstantAPIWrapper calls one of the methods on Receiver after receiving a
+ // message from the page. Each method is called with the |contents|
+ // corresponding to the page from which the message was received.
+ class Receiver {
dhollowa 2013/01/14 19:59:39 I preferred the original name "Delegate".
samarth 2013/01/22 15:59:06 Done.
+ public:
+ // Called upon determination of Instant API support. Either in response to
+ // the page loading or because we recevied some other message.
+ virtual void InstantSupportDetermined(const content::WebContents* contents,
+ bool supports_instant) = 0;
+
+ // Called when the underlying RenderView crashed.
+ virtual void InstantPageRenderViewGone(
+ const content::WebContents* contents) = 0;
+
+ // Called when the page is about to navigate.
+ virtual void InstantPageAboutToNavigateMainFrame(
+ const content::WebContents* contents,
+ const GURL& url) = 0;
+
// Called when the page has suggestions. Usually in response to Change(),
// SendAutocompleteResults() or UpOrDownKeyPressed().
virtual void SetSuggestions(
+ const content::WebContents* contents,
const std::vector<InstantSuggestion>& suggestions) = 0;
- // Called upon determination of Instant API support. Usually in response to
- // SetContents() or when the page first finishes loading.
- virtual void InstantSupportDetermined(bool supports_instant) = 0;
-
// Called when the page wants to be shown. Usually in response to Change(),
// SendAutocompleteResults() or SearchModeChanged().
- virtual void ShowInstantPreview(InstantShownReason reason,
+ virtual void ShowInstantPreview(const content::WebContents* contents,
+ InstantShownReason reason,
int height,
InstantSizeUnits units) = 0;
// Called when the page wants the browser to start capturing user key
// strokes.
- virtual void StartCapturingKeyStrokes() = 0;
+ virtual void StartCapturingKeyStrokes(
+ const content::WebContents* contents) = 0;
// Called when the page wants the browser to stop capturing user key
// strokes.
- virtual void StopCapturingKeyStrokes() = 0;
-
- // Called when the underlying RenderView crashes.
- virtual void RenderViewGone() = 0;
-
- // Called when the page is about to navigate.
- virtual void AboutToNavigateMainFrame(const GURL& url) = 0;
+ virtual void StopCapturingKeyStrokes(content::WebContents* contents) = 0;
- // Called when the SearchBox wants to navigate to the specified URL.
- virtual void NavigateToURL(const GURL& url,
+ // Called when the page wants to navigate to the specified URL.
+ virtual void NavigateToURL(const content::WebContents* contents,
+ const GURL& url,
content::PageTransition transition) = 0;
protected:
- virtual ~Delegate();
+ virtual ~Receiver();
};
- // Doesn't take ownership of |delegate|.
- explicit InstantClient(Delegate* delegate);
- virtual ~InstantClient();
+ // Doesn't take ownership of |controller| or |receiver|.
+ InstantAPIWrapper(Controller* controller, Receiver* receiver);
+ virtual ~InstantAPIWrapper();
// Sets |contents| as the page to communicate with. |contents| can be NULL,
// which effectively stops all communication.
@@ -159,9 +201,10 @@ class InstantClient : public content::WebContentsObserver {
void SearchBoxNavigate(int page_id, const GURL& url,
content::PageTransition transition);
- Delegate* const delegate_;
+ Controller* const controller_;
+ Receiver* const receiver_;
- DISALLOW_COPY_AND_ASSIGN(InstantClient);
+ DISALLOW_COPY_AND_ASSIGN(InstantAPIWrapper);
};
-#endif // CHROME_BROWSER_INSTANT_INSTANT_CLIENT_H_
+#endif // CHROME_BROWSER_INSTANT_INSTANT_API_WRAPPER_H_

Powered by Google App Engine
This is Rietveld 408576698