Home | History | Annotate | Download | only in search
      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/location_bar/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 
     24 class BrowserInstantController;
     25 class InstantController;
     26 class InstantModel;
     27 class OmniboxView;
     28 
     29 namespace content {
     30 class 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.
     35 class 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   const GURL& ntp_url() const { return ntp_url_; }
     66 
     67   net::SpawnedTestServer& https_test_server() { return https_test_server_; }
     68 
     69   void KillInstantRenderView();
     70 
     71   void FocusOmnibox();
     72 
     73   void SetOmniboxText(const std::string& text);
     74 
     75   void PressEnterAndWaitForNavigation();
     76   void PressEnterAndWaitForFrameLoad();
     77 
     78   bool GetBoolFromJS(content::WebContents* contents,
     79                      const std::string& script,
     80                      bool* result) WARN_UNUSED_RESULT;
     81   bool GetIntFromJS(content::WebContents* contents,
     82                     const std::string& script,
     83                     int* result) WARN_UNUSED_RESULT;
     84   bool GetStringFromJS(content::WebContents* contents,
     85                        const std::string& script,
     86                        std::string* result) WARN_UNUSED_RESULT;
     87   bool CheckVisibilityIs(content::WebContents* contents,
     88                          bool expected) WARN_UNUSED_RESULT;
     89 
     90   std::string GetOmniboxText();
     91 
     92   // Loads a named image from url |image| from the given |rvh| host.  |loaded|
     93   // returns whether the image was able to load without error.
     94   // The method returns true if the JavaScript executed cleanly.
     95   bool LoadImage(content::RenderViewHost* rvh,
     96                  const std::string& image,
     97                  bool* loaded);
     98 
     99   // Returns the omnibox's inline autocompletion (shown in blue highlight).
    100   base::string16 GetBlueText();
    101 
    102  private:
    103   GURL instant_url_;
    104   GURL ntp_url_;
    105 
    106   Browser* browser_;
    107 
    108   // HTTPS Testing server, started on demand.
    109   net::SpawnedTestServer https_test_server_;
    110 
    111   // Set to true to initialize suggestions URL in default search provider.
    112   bool init_suggestions_url_;
    113 
    114   DISALLOW_COPY_AND_ASSIGN(InstantTestBase);
    115 };
    116 
    117 #endif  // CHROME_BROWSER_UI_SEARCH_INSTANT_TEST_UTILS_H_
    118