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