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.
5 #ifndef CONTENT_TEST_TEST_WEB_CONTENTS_H_
6 #define CONTENT_TEST_TEST_WEB_CONTENTS_H_
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"
13 class SiteInstanceImpl;
18 class TestRenderViewHost;
19 class WebContentsTester;
21 // Subclass WebContentsImpl to ensure it creates TestRenderViewHosts
22 // and does not do anything involving views.
23 class TestWebContents : public WebContentsImpl, public WebContentsTester {
25 virtual ~TestWebContents();
27 static TestWebContents* Create(BrowserContext* browser_context,
28 SiteInstance* instance);
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,
39 PageTransition transition) OVERRIDE;
40 virtual void TestDidNavigateWithReferrer(RenderViewHost* render_view_host,
43 const Referrer& referrer,
44 PageTransition transition) OVERRIDE;
45 virtual WebPreferences TestGetWebkitPrefs() OVERRIDE;
47 TestRenderViewHost* pending_test_rvh() const;
50 bool cross_navigation_pending() {
51 return GetRenderManager()->cross_navigation_pending_;
54 // Overrides WebContentsImpl::ShouldTransitionCrossSite so that we can test
55 // both alternatives without using command-line switches.
56 bool ShouldTransitionCrossSite() { return transition_cross_site; }
58 // Prevent interaction with views.
59 virtual bool CreateRenderViewForRenderManager(
60 RenderViewHost* render_view_host,
62 CrossProcessFrameConnector* frame_connector) OVERRIDE;
63 virtual void UpdateRenderViewSizeForRenderManager() OVERRIDE {}
65 // Returns a clone of this TestWebContents. The returned object is also a
66 // TestWebContents. The caller owns the returned object.
67 virtual WebContents* Clone() OVERRIDE;
69 // Set by individual tests.
70 bool transition_cross_site;
72 // Allow mocking of the RenderViewHostDelegateView.
73 virtual RenderViewHostDelegateView* GetDelegateView() OVERRIDE;
74 void set_delegate_view(RenderViewHostDelegateView* view) {
75 delegate_view_override_ = view;
78 // Allows us to simulate this tab having an opener.
79 void SetOpener(TestWebContents* opener);
81 // Allows us to simulate that a contents was created via CreateNewWindow.
82 void AddPendingContents(TestWebContents* contents);
84 // Establish expected arguments for |SetHistoryLengthAndPrune()|. When
85 // |SetHistoryLengthAndPrune()| is called, the arguments are compared
86 // with the expected arguments specified here.
87 void ExpectSetHistoryLengthAndPrune(const SiteInstance* site_instance,
91 // Compares the arguments passed in with the expected arguments passed in
92 // to |ExpectSetHistoryLengthAndPrune()|.
93 virtual void SetHistoryLengthAndPrune(const SiteInstance* site_instance,
95 int32 min_page_id) OVERRIDE;
97 void TestDidFinishLoad(const GURL& url);
98 void TestDidFailLoadWithError(const GURL& url,
100 const base::string16& error_description);
103 // The deprecated WebContentsTester still needs to subclass this.
104 explicit TestWebContents(BrowserContext* browser_context);
107 // WebContentsImpl overrides
108 virtual void CreateNewWindow(
109 int render_process_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,
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;
128 RenderViewHostDelegateView* delegate_view_override_;
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_;
138 } // namespace content
140 #endif // CONTENT_TEST_TEST_WEB_CONTENTS_H_