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/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"
15 class SiteInstanceImpl;
20 class TestRenderViewHost;
21 class WebContentsTester;
23 // Subclass WebContentsImpl to ensure it creates TestRenderViewHosts
24 // and does not do anything involving views.
25 class TestWebContents : public WebContentsImpl, public WebContentsTester {
27 virtual ~TestWebContents();
29 static TestWebContents* Create(BrowserContext* browser_context,
30 SiteInstance* instance);
32 // WebContentsImpl overrides (returning the same values, but in Test* types)
33 virtual TestRenderFrameHost* GetMainFrame() OVERRIDE;
34 virtual TestRenderViewHost* GetRenderViewHost() const OVERRIDE;
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,
45 ui::PageTransition transition) OVERRIDE;
46 virtual void TestDidNavigateWithReferrer(
47 RenderFrameHost* render_frame_host,
50 const Referrer& referrer,
51 ui::PageTransition transition) OVERRIDE;
52 virtual WebPreferences TestComputeWebkitPrefs() OVERRIDE;
55 bool cross_navigation_pending() {
56 return GetRenderManager()->cross_navigation_pending_;
59 // Prevent interaction with views.
60 virtual bool CreateRenderViewForRenderManager(
61 RenderViewHost* render_view_host,
64 bool for_main_frame) OVERRIDE;
65 virtual void UpdateRenderViewSizeForRenderManager() OVERRIDE {}
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;
71 // Allow mocking of the RenderViewHostDelegateView.
72 virtual RenderViewHostDelegateView* GetDelegateView() OVERRIDE;
73 void set_delegate_view(RenderViewHostDelegateView* view) {
74 delegate_view_override_ = view;
77 // Allows us to simulate this tab having an opener.
78 void SetOpener(TestWebContents* opener);
80 // Allows us to simulate that a contents was created via CreateNewWindow.
81 void AddPendingContents(TestWebContents* contents);
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,
90 // Compares the arguments passed in with the expected arguments passed in
91 // to |ExpectSetHistoryLengthAndPrune()|.
92 virtual void SetHistoryLengthAndPrune(const SiteInstance* site_instance,
94 int32 min_page_id) OVERRIDE;
96 void TestDidFinishLoad(const GURL& url);
97 void TestDidFailLoadWithError(const GURL& url,
99 const base::string16& error_description);
102 // The deprecated WebContentsTester still needs to subclass this.
103 explicit TestWebContents(BrowserContext* browser_context);
106 // WebContentsImpl overrides
107 virtual void CreateNewWindow(
108 int render_process_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,
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;
127 RenderViewHostDelegateView* delegate_view_override_;
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_;
137 } // namespace content
139 #endif // CONTENT_TEST_TEST_WEB_CONTENTS_H_