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
, int opener_route_id
) OVERRIDE
;
61 virtual void UpdateRenderViewSizeForRenderManager() OVERRIDE
{}
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
;
67 // Set by individual tests.
68 bool transition_cross_site
;
70 // Allow mocking of the RenderViewHostDelegateView.
71 virtual RenderViewHostDelegateView
* GetDelegateView() OVERRIDE
;
72 void set_delegate_view(RenderViewHostDelegateView
* view
) {
73 delegate_view_override_
= view
;
76 // Allows us to simulate this tab having an opener.
77 void SetOpener(TestWebContents
* opener
);
79 // Allows us to simulate that a contents was created via CreateNewWindow.
80 void AddPendingContents(TestWebContents
* contents
);
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
,
89 // Compares the arguments passed in with the expected arguments passed in
90 // to |ExpectSetHistoryLengthAndPrune()|.
91 virtual void SetHistoryLengthAndPrune(const SiteInstance
* site_instance
,
93 int32 min_page_id
) OVERRIDE
;
95 void TestDidFinishLoad(int64 frame_id
, const GURL
& url
, bool is_main_frame
);
96 void TestDidFailLoadWithError(int64 frame_id
,
100 const 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(
110 int main_frame_route_id
,
111 const ViewHostMsg_CreateWindow_Params
& params
,
112 SessionStorageNamespace
* session_storage_namespace
) OVERRIDE
;
113 virtual void CreateNewWidget(int route_id
,
114 blink::WebPopupType popup_type
) OVERRIDE
;
115 virtual void CreateNewFullscreenWidget(int route_id
) OVERRIDE
;
116 virtual void ShowCreatedWindow(int route_id
,
117 WindowOpenDisposition disposition
,
118 const gfx::Rect
& initial_pos
,
119 bool user_gesture
) OVERRIDE
;
120 virtual void ShowCreatedWidget(int route_id
,
121 const gfx::Rect
& initial_pos
) OVERRIDE
;
122 virtual void ShowCreatedFullscreenWidget(int route_id
) OVERRIDE
;
125 RenderViewHostDelegateView
* delegate_view_override_
;
127 // Expectations for arguments of |SetHistoryLengthAndPrune()|.
128 bool expect_set_history_length_and_prune_
;
129 scoped_refptr
<const SiteInstanceImpl
>
130 expect_set_history_length_and_prune_site_instance_
;
131 int expect_set_history_length_and_prune_history_length_
;
132 int32 expect_set_history_length_and_prune_min_page_id_
;
135 } // namespace content
137 #endif // CONTENT_TEST_TEST_WEB_CONTENTS_H_