summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/search/instant_test_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/search/instant_test_utils.h')
-rw-r--r--chrome/browser/ui/search/instant_test_utils.h125
1 files changed, 125 insertions, 0 deletions
diff --git a/chrome/browser/ui/search/instant_test_utils.h b/chrome/browser/ui/search/instant_test_utils.h
new file mode 100644
index 0000000..fce05ba
--- /dev/null
+++ b/chrome/browser/ui/search/instant_test_utils.h
@@ -0,0 +1,125 @@
+// Copyright 2013 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.
+
+#ifndef CHROME_BROWSER_UI_SEARCH_INSTANT_TEST_UTILS_H_
+#define CHROME_BROWSER_UI_SEARCH_INSTANT_TEST_UTILS_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/compiler_specific.h"
+#include "base/run_loop.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_instant_controller.h"
+#include "chrome/browser/ui/browser_window.h"
+#include "chrome/browser/ui/omnibox/location_bar.h"
+#include "chrome/browser/ui/search/instant_controller.h"
+#include "chrome/browser/ui/search/instant_overlay_model_observer.h"
+#include "chrome/common/search_types.h"
+#include "googleurl/src/gurl.h"
+#include "net/test/test_server.h"
+
+class InstantController;
+class InstantModel;
+class OmniboxView;
+
+namespace content {
+class WebContents;
+};
+
+class InstantTestModelObserver : public InstantOverlayModelObserver {
+ public:
+ InstantTestModelObserver(InstantOverlayModel* model,
+ chrome::search::Mode::Type desired_mode_type);
+ ~InstantTestModelObserver();
+
+ void WaitForDesiredOverlayState();
+
+ // Overridden from InstantOverlayModelObserver:
+ virtual void OverlayStateChanged(const InstantOverlayModel& model) OVERRIDE;
+
+ private:
+ InstantOverlayModel* const model_;
+ const chrome::search::Mode::Type desired_mode_type_;
+ base::RunLoop run_loop_;
+
+ DISALLOW_COPY_AND_ASSIGN(InstantTestModelObserver);
+};
+
+// This utility class is meant to be used in a "mix-in" fashion, giving the
+// derived test class additional Instant-related functionality.
+class InstantTestBase {
+ protected:
+ InstantTestBase()
+ : https_test_server_(
+ net::TestServer::TYPE_HTTPS,
+ net::BaseTestServer::SSLOptions(),
+ base::FilePath(FILE_PATH_LITERAL("chrome/test/data"))) {
+ }
+ virtual ~InstantTestBase() {}
+
+ protected:
+ void SetupInstant(Browser* browser);
+ void Init(const GURL& instant_url);
+
+ void set_browser(Browser* browser) {
+ browser_ = browser;
+ }
+
+ InstantController* instant() {
+ return browser_->instant_controller()->instant();
+ }
+
+ OmniboxView* omnibox() {
+ return browser_->window()->GetLocationBar()->GetLocationEntry();
+ }
+
+ const GURL& instant_url() const { return instant_url_; }
+
+ net::TestServer& https_test_server() { return https_test_server_; }
+
+ void KillInstantRenderView();
+
+ void FocusOmnibox();
+ void FocusOmniboxAndWaitForInstantSupport();
+ void FocusOmniboxAndWaitForInstantExtendedSupport();
+
+ void SetOmniboxText(const std::string& text);
+ void SetOmniboxTextAndWaitForOverlayToShow(const std::string& text);
+ void SetOmniboxTextAndWaitForSuggestion(const std::string& text);
+
+ bool GetBoolFromJS(content::WebContents* contents,
+ const std::string& script,
+ bool* result) WARN_UNUSED_RESULT;
+ bool GetIntFromJS(content::WebContents* contents,
+ const std::string& script,
+ int* result) WARN_UNUSED_RESULT;
+ bool GetStringFromJS(content::WebContents* contents,
+ const std::string& script,
+ std::string* result) WARN_UNUSED_RESULT;
+ bool ExecuteScript(const std::string& script) WARN_UNUSED_RESULT;
+ bool CheckVisibilityIs(content::WebContents* contents,
+ bool expected) WARN_UNUSED_RESULT;
+ bool HasUserInputInProgress();
+ bool HasTemporaryText();
+
+ // Loads a named image from url |image| from the given |rvh| host. |loaded|
+ // returns whether the image was able to load without error.
+ // The method returns true if the JavaScript executed cleanly.
+ bool LoadImage(content::RenderViewHost* rvh,
+ const std::string& image,
+ bool* loaded);
+
+ private:
+ GURL instant_url_;
+
+ Browser* browser_;
+
+ // HTTPS Testing server, started on demand.
+ net::TestServer https_test_server_;
+
+ DISALLOW_COPY_AND_ASSIGN(InstantTestBase);
+};
+
+#endif // CHROME_BROWSER_UI_SEARCH_INSTANT_TEST_UTILS_H_