Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / content / test / test_web_contents.h
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_