1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_SEARCH_INSTANT_TEST_UTILS_H_ 6#define CHROME_BROWSER_UI_SEARCH_INSTANT_TEST_UTILS_H_ 7 8#include <string> 9 10#include "base/basictypes.h" 11#include "base/compiler_specific.h" 12#include "base/metrics/field_trial.h" 13#include "base/run_loop.h" 14#include "base/strings/string16.h" 15#include "chrome/browser/ui/browser.h" 16#include "chrome/browser/ui/browser_instant_controller.h" 17#include "chrome/browser/ui/browser_window.h" 18#include "chrome/browser/ui/omnibox/location_bar.h" 19#include "chrome/browser/ui/search/instant_controller.h" 20#include "chrome/common/search_types.h" 21#include "net/test/spawned_test_server/spawned_test_server.h" 22#include "url/gurl.h" 23 24class BrowserInstantController; 25class InstantController; 26class InstantModel; 27class OmniboxView; 28 29namespace content { 30class WebContents; 31}; 32 33// This utility class is meant to be used in a "mix-in" fashion, giving the 34// derived test class additional Instant-related functionality. 35class InstantTestBase { 36 protected: 37 InstantTestBase(); 38 virtual ~InstantTestBase(); 39 40 protected: 41 void SetupInstant(Browser* browser); 42 void Init(const GURL& instant_url, const GURL& ntp_url, 43 bool init_suggestions_url); 44 45 void SetInstantURL(const std::string& url); 46 47 void set_browser(Browser* browser) { 48 browser_ = browser; 49 } 50 51 BrowserInstantController* browser_instant() { 52 return browser_->instant_controller(); 53 } 54 55 InstantController* instant() { 56 return browser_->instant_controller()->instant(); 57 } 58 59 OmniboxView* omnibox() { 60 return browser_->window()->GetLocationBar()->GetOmniboxView(); 61 } 62 63 const GURL& instant_url() const { return instant_url_; } 64 65 net::SpawnedTestServer& https_test_server() { return https_test_server_; } 66 67 void KillInstantRenderView(); 68 69 void FocusOmnibox(); 70 71 void SetOmniboxText(const std::string& text); 72 73 void PressEnterAndWaitForNavigation(); 74 void PressEnterAndWaitForFrameLoad(); 75 76 bool GetBoolFromJS(content::WebContents* contents, 77 const std::string& script, 78 bool* result) WARN_UNUSED_RESULT; 79 bool GetIntFromJS(content::WebContents* contents, 80 const std::string& script, 81 int* result) WARN_UNUSED_RESULT; 82 bool GetStringFromJS(content::WebContents* contents, 83 const std::string& script, 84 std::string* result) WARN_UNUSED_RESULT; 85 bool CheckVisibilityIs(content::WebContents* contents, 86 bool expected) WARN_UNUSED_RESULT; 87 88 std::string GetOmniboxText(); 89 90 // Loads a named image from url |image| from the given |rvh| host. |loaded| 91 // returns whether the image was able to load without error. 92 // The method returns true if the JavaScript executed cleanly. 93 bool LoadImage(content::RenderViewHost* rvh, 94 const std::string& image, 95 bool* loaded); 96 97 // Returns the omnibox's inline autocompletion (shown in blue highlight). 98 base::string16 GetBlueText(); 99 100 private: 101 GURL instant_url_; 102 GURL ntp_url_; 103 104 Browser* browser_; 105 106 // HTTPS Testing server, started on demand. 107 net::SpawnedTestServer https_test_server_; 108 109 // Set to true to initialize suggestions URL in default search provider. 110 bool init_suggestions_url_; 111 112 DISALLOW_COPY_AND_ASSIGN(InstantTestBase); 113}; 114 115#endif // CHROME_BROWSER_UI_SEARCH_INSTANT_TEST_UTILS_H_ 116