Home | History | Annotate | Download | only in test
      1 // Copyright (c) 2012 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 CONTENT_TEST_TEST_WEB_CONTENTS_H_
      6 #define CONTENT_TEST_TEST_WEB_CONTENTS_H_
      7 
      8 #include "content/browser/web_contents/web_contents_impl.h"
      9 #include "content/public/common/web_preferences.h"
     10 #include "content/public/test/web_contents_tester.h"
     11 #include "content/test/test_render_frame_host.h"
     12 #include "content/test/test_render_view_host.h"
     13 #include "ui/base/page_transition_types.h"
     14 
     15 class SiteInstanceImpl;
     16 
     17 namespace content {
     18 
     19 class RenderViewHost;
     20 class TestRenderViewHost;
     21 class WebContentsTester;
     22 
     23 // Subclass WebContentsImpl to ensure it creates TestRenderViewHosts
     24 // and does not do anything involving views.
     25 class TestWebContents : public WebContentsImpl, public WebContentsTester {
     26  public:
     27   virtual ~TestWebContents();
     28 
     29   static TestWebContents* Create(BrowserContext* browser_context,
     30                                  SiteInstance* instance);
     31 
     32   // WebContentsImpl overrides (returning the same values, but in Test* types)
     33   virtual TestRenderFrameHost* GetMainFrame() OVERRIDE;
     34   virtual TestRenderViewHost* GetRenderViewHost() const OVERRIDE;
     35 
     36   // WebContentsTester implementation.
     37   virtual void CommitPendingNavigation() OVERRIDE;
     38   virtual TestRenderFrameHost* GetPendingMainFrame() const OVERRIDE;
     39   virtual void NavigateAndCommit(const GURL& url) OVERRIDE;
     40   virtual void TestSetIsLoading(bool value) OVERRIDE;
     41   virtual void ProceedWithCrossSiteNavigation() OVERRIDE;
     42   virtual void TestDidNavigate(RenderFrameHost* render_frame_host,
     43                                int page_id,
     44                                const GURL& url,
     45                                ui::PageTransition transition) OVERRIDE;
     46   virtual void TestDidNavigateWithReferrer(
     47       RenderFrameHost* render_frame_host,
     48       int page_id,
     49       const GURL& url,
     50       const Referrer& referrer,
     51       ui::PageTransition transition) OVERRIDE;
     52   virtual WebPreferences TestComputeWebkitPrefs() OVERRIDE;
     53 
     54   // State accessor.
     55   bool cross_navigation_pending() {
     56     return GetRenderManager()->cross_navigation_pending_;
     57   }
     58 
     59   // Prevent interaction with views.
     60   virtual bool CreateRenderViewForRenderManager(
     61       RenderViewHost* render_view_host,
     62       int opener_route_id,
     63       int proxy_routing_id,
     64       bool for_main_frame) OVERRIDE;
     65   virtual void UpdateRenderViewSizeForRenderManager() OVERRIDE {}
     66 
     67   // Returns a clone of this TestWebContents. The returned object is also a
     68   // TestWebContents. The caller owns the returned object.
     69   virtual WebContents* Clone() OVERRIDE;
     70 
     71   // Allow mocking of the RenderViewHostDelegateView.
     72   virtual RenderViewHostDelegateView* GetDelegateView() OVERRIDE;
     73   void set_delegate_view(RenderViewHostDelegateView* view) {
     74     delegate_view_override_ = view;
     75   }
     76 
     77   // Allows us to simulate this tab having an opener.
     78   void SetOpener(TestWebContents* opener);
     79 
     80   // Allows us to simulate that a contents was created via CreateNewWindow.
     81   void AddPendingContents(TestWebContents* contents);
     82 
     83   // Establish expected arguments for |SetHistoryLengthAndPrune()|. When
     84   // |SetHistoryLengthAndPrune()| is called, the arguments are compared
     85   // with the expected arguments specified here.
     86   void ExpectSetHistoryLengthAndPrune(const SiteInstance* site_instance,
     87                                       int history_length,
     88                                       int32 min_page_id);
     89 
     90   // Compares the arguments passed in with the expected arguments passed in
     91   // to |ExpectSetHistoryLengthAndPrune()|.
     92   virtual void SetHistoryLengthAndPrune(const SiteInstance* site_instance,
     93                                         int history_length,
     94                                         int32 min_page_id) OVERRIDE;
     95 
     96   void TestDidFinishLoad(const GURL& url);
     97   void TestDidFailLoadWithError(const GURL& url,
     98                                 int error_code,
     99                                 const base::string16& error_description);
    100 
    101  protected:
    102   // The deprecated WebContentsTester still needs to subclass this.
    103   explicit TestWebContents(BrowserContext* browser_context);
    104 
    105  private:
    106   // WebContentsImpl overrides
    107   virtual void CreateNewWindow(
    108       int render_process_id,
    109       int route_id,
    110       int main_frame_route_id,
    111       const ViewHostMsg_CreateWindow_Params& params,
    112       SessionStorageNamespace* session_storage_namespace) OVERRIDE;
    113   virtual void CreateNewWidget(int render_process_id,
    114                                int route_id,
    115                                blink::WebPopupType popup_type) OVERRIDE;
    116   virtual void CreateNewFullscreenWidget(int render_process_id,
    117                                          int route_id) OVERRIDE;
    118   virtual void ShowCreatedWindow(int route_id,
    119                                  WindowOpenDisposition disposition,
    120                                  const gfx::Rect& initial_pos,
    121                                  bool user_gesture) OVERRIDE;
    122   virtual void ShowCreatedWidget(int route_id,
    123                                  const gfx::Rect& initial_pos) OVERRIDE;
    124   virtual void ShowCreatedFullscreenWidget(int route_id) OVERRIDE;
    125 
    126 
    127   RenderViewHostDelegateView* delegate_view_override_;
    128 
    129   // Expectations for arguments of |SetHistoryLengthAndPrune()|.
    130   bool expect_set_history_length_and_prune_;
    131   scoped_refptr<const SiteInstanceImpl>
    132     expect_set_history_length_and_prune_site_instance_;
    133   int expect_set_history_length_and_prune_history_length_;
    134   int32 expect_set_history_length_and_prune_min_page_id_;
    135 };
    136 
    137 }  // namespace content
    138 
    139 #endif  // CONTENT_TEST_TEST_WEB_CONTENTS_H_
    140