test_render_view_host.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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#include "content/test/test_render_view_host.h" 6 7#include "base/memory/scoped_ptr.h" 8#include "content/browser/dom_storage/dom_storage_context_wrapper.h" 9#include "content/browser/dom_storage/session_storage_namespace_impl.h" 10#include "content/browser/site_instance_impl.h" 11#include "content/common/dom_storage/dom_storage_types.h" 12#include "content/common/frame_messages.h" 13#include "content/common/view_messages.h" 14#include "content/public/browser/browser_context.h" 15#include "content/public/browser/navigation_controller.h" 16#include "content/public/browser/storage_partition.h" 17#include "content/public/common/content_client.h" 18#include "content/public/common/page_state.h" 19#include "content/test/test_backing_store.h" 20#include "content/test/test_web_contents.h" 21#include "media/base/video_frame.h" 22#include "ui/gfx/rect.h" 23#include "webkit/common/webpreferences.h" 24 25namespace content { 26 27namespace { 28 29const int64 kFrameId = 13UL; 30 31} // namespace 32 33 34void InitNavigateParams(FrameHostMsg_DidCommitProvisionalLoad_Params* params, 35 int page_id, 36 const GURL& url, 37 PageTransition transition) { 38 params->page_id = page_id; 39 params->url = url; 40 params->referrer = Referrer(); 41 params->transition = transition; 42 params->redirects = std::vector<GURL>(); 43 params->should_update_history = false; 44 params->searchable_form_url = GURL(); 45 params->searchable_form_encoding = std::string(); 46 params->security_info = std::string(); 47 params->gesture = NavigationGestureUser; 48 params->was_within_same_page = false; 49 params->is_post = false; 50 params->page_state = PageState::CreateFromURL(url); 51} 52 53TestRenderWidgetHostView::TestRenderWidgetHostView(RenderWidgetHost* rwh) 54 : rwh_(RenderWidgetHostImpl::From(rwh)), 55 is_showing_(false), 56 did_swap_compositor_frame_(false) { 57 rwh_->SetView(this); 58} 59 60TestRenderWidgetHostView::~TestRenderWidgetHostView() { 61} 62 63RenderWidgetHost* TestRenderWidgetHostView::GetRenderWidgetHost() const { 64 return NULL; 65} 66 67gfx::NativeView TestRenderWidgetHostView::GetNativeView() const { 68 return NULL; 69} 70 71gfx::NativeViewId TestRenderWidgetHostView::GetNativeViewId() const { 72 return 0; 73} 74 75gfx::NativeViewAccessible TestRenderWidgetHostView::GetNativeViewAccessible() { 76 return NULL; 77} 78 79bool TestRenderWidgetHostView::HasFocus() const { 80 return true; 81} 82 83bool TestRenderWidgetHostView::IsSurfaceAvailableForCopy() const { 84 return true; 85} 86 87void TestRenderWidgetHostView::Show() { 88 is_showing_ = true; 89} 90 91void TestRenderWidgetHostView::Hide() { 92 is_showing_ = false; 93} 94 95bool TestRenderWidgetHostView::IsShowing() { 96 return is_showing_; 97} 98 99void TestRenderWidgetHostView::RenderProcessGone(base::TerminationStatus status, 100 int error_code) { 101 delete this; 102} 103 104void TestRenderWidgetHostView::Destroy() { delete this; } 105 106gfx::Rect TestRenderWidgetHostView::GetViewBounds() const { 107 return gfx::Rect(); 108} 109 110BackingStore* TestRenderWidgetHostView::AllocBackingStore( 111 const gfx::Size& size) { 112 return new TestBackingStore(rwh_, size); 113} 114 115void TestRenderWidgetHostView::CopyFromCompositingSurface( 116 const gfx::Rect& src_subrect, 117 const gfx::Size& dst_size, 118 const base::Callback<void(bool, const SkBitmap&)>& callback, 119 const SkBitmap::Config config) { 120 callback.Run(false, SkBitmap()); 121} 122 123void TestRenderWidgetHostView::CopyFromCompositingSurfaceToVideoFrame( 124 const gfx::Rect& src_subrect, 125 const scoped_refptr<media::VideoFrame>& target, 126 const base::Callback<void(bool)>& callback) { 127 callback.Run(false); 128} 129 130bool TestRenderWidgetHostView::CanCopyToVideoFrame() const { 131 return false; 132} 133 134void TestRenderWidgetHostView::OnAcceleratedCompositingStateChange() { 135} 136 137void TestRenderWidgetHostView::AcceleratedSurfaceInitialized(int host_id, 138 int route_id) { 139} 140 141void TestRenderWidgetHostView::AcceleratedSurfaceBuffersSwapped( 142 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params, 143 int gpu_host_id) { 144} 145 146void TestRenderWidgetHostView::AcceleratedSurfacePostSubBuffer( 147 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params, 148 int gpu_host_id) { 149} 150 151void TestRenderWidgetHostView::AcceleratedSurfaceSuspend() { 152} 153 154bool TestRenderWidgetHostView::HasAcceleratedSurface( 155 const gfx::Size& desired_size) { 156 return false; 157} 158 159#if defined(OS_MACOSX) 160 161void TestRenderWidgetHostView::SetActive(bool active) { 162 // <viettrungluu@gmail.com>: Do I need to do anything here? 163} 164 165bool TestRenderWidgetHostView::SupportsSpeech() const { 166 return false; 167} 168 169void TestRenderWidgetHostView::SpeakSelection() { 170} 171 172bool TestRenderWidgetHostView::IsSpeaking() const { 173 return false; 174} 175 176void TestRenderWidgetHostView::StopSpeaking() { 177} 178 179bool TestRenderWidgetHostView::PostProcessEventForPluginIme( 180 const NativeWebKeyboardEvent& event) { 181 return false; 182} 183 184#endif 185 186gfx::Rect TestRenderWidgetHostView::GetBoundsInRootWindow() { 187 return gfx::Rect(); 188} 189 190#if defined(TOOLKIT_GTK) 191GdkEventButton* TestRenderWidgetHostView::GetLastMouseDown() { 192 return NULL; 193} 194 195gfx::NativeView TestRenderWidgetHostView::BuildInputMethodsGtkMenu() { 196 return NULL; 197} 198#endif // defined(TOOLKIT_GTK) 199 200void TestRenderWidgetHostView::OnSwapCompositorFrame( 201 uint32 output_surface_id, 202 scoped_ptr<cc::CompositorFrame> frame) { 203 did_swap_compositor_frame_ = true; 204} 205 206 207gfx::GLSurfaceHandle TestRenderWidgetHostView::GetCompositingSurface() { 208 return gfx::GLSurfaceHandle(); 209} 210 211bool TestRenderWidgetHostView::LockMouse() { 212 return false; 213} 214 215void TestRenderWidgetHostView::UnlockMouse() { 216} 217 218#if defined(OS_WIN) 219void TestRenderWidgetHostView::SetParentNativeViewAccessible( 220 gfx::NativeViewAccessible accessible_parent) { 221} 222 223gfx::NativeViewId TestRenderWidgetHostView::GetParentForWindowlessPlugin() 224 const { 225 return 0; 226} 227#endif 228 229TestRenderViewHost::TestRenderViewHost( 230 SiteInstance* instance, 231 RenderViewHostDelegate* delegate, 232 RenderWidgetHostDelegate* widget_delegate, 233 int routing_id, 234 int main_frame_routing_id, 235 bool swapped_out) 236 : RenderViewHostImpl(instance, 237 delegate, 238 widget_delegate, 239 routing_id, 240 main_frame_routing_id, 241 swapped_out, 242 false /* hidden */), 243 render_view_created_(false), 244 delete_counter_(NULL), 245 simulate_fetch_via_proxy_(false), 246 simulate_history_list_was_cleared_(false), 247 contents_mime_type_("text/html"), 248 opener_route_id_(MSG_ROUTING_NONE), 249 main_render_frame_host_(NULL) { 250 // TestRenderWidgetHostView installs itself into this->view_ in its 251 // constructor, and deletes itself when TestRenderWidgetHostView::Destroy() is 252 // called. 253 new TestRenderWidgetHostView(this); 254 255 main_frame_id_ = kFrameId; 256} 257 258TestRenderViewHost::~TestRenderViewHost() { 259 if (delete_counter_) 260 ++*delete_counter_; 261} 262 263bool TestRenderViewHost::CreateRenderView( 264 const base::string16& frame_name, 265 int opener_route_id, 266 int32 max_page_id) { 267 DCHECK(!render_view_created_); 268 render_view_created_ = true; 269 opener_route_id_ = opener_route_id; 270 return true; 271} 272 273bool TestRenderViewHost::IsRenderViewLive() const { 274 return render_view_created_; 275} 276 277void TestRenderViewHost::SendNavigate(int page_id, const GURL& url) { 278 main_render_frame_host_->SendNavigate(page_id, url); 279} 280 281void TestRenderViewHost::SendFailedNavigate(int page_id, const GURL& url) { 282 main_render_frame_host_->SendFailedNavigate(page_id, url); 283} 284 285void TestRenderViewHost::SendNavigateWithTransition( 286 int page_id, 287 const GURL& url, 288 PageTransition transition) { 289 main_render_frame_host_->SendNavigateWithTransition(page_id, url, transition); 290} 291 292void TestRenderViewHost::SendNavigateWithOriginalRequestURL( 293 int page_id, 294 const GURL& url, 295 const GURL& original_request_url) { 296 main_render_frame_host_->SendNavigateWithOriginalRequestURL( 297 page_id, url, original_request_url); 298} 299 300void TestRenderViewHost::SendNavigateWithFile( 301 int page_id, 302 const GURL& url, 303 const base::FilePath& file_path) { 304 main_render_frame_host_->SendNavigateWithFile(page_id, url, file_path); 305} 306 307void TestRenderViewHost::SendNavigateWithParams( 308 FrameHostMsg_DidCommitProvisionalLoad_Params* params) { 309 main_render_frame_host_->SendNavigateWithParams(params); 310} 311 312void TestRenderViewHost::SendNavigateWithTransitionAndResponseCode( 313 int page_id, 314 const GURL& url, 315 PageTransition transition, 316 int response_code) { 317 main_render_frame_host_->SendNavigateWithTransitionAndResponseCode( 318 page_id, url, transition, response_code); 319} 320 321void TestRenderViewHost::SendNavigateWithParameters( 322 int page_id, 323 const GURL& url, 324 PageTransition transition, 325 const GURL& original_request_url, 326 int response_code, 327 const base::FilePath* file_path_for_history_item) { 328 329 main_render_frame_host_->SendNavigateWithParameters( 330 page_id, url, transition, original_request_url, response_code, 331 file_path_for_history_item); 332} 333 334void TestRenderViewHost::SendShouldCloseACK(bool proceed) { 335 base::TimeTicks now = base::TimeTicks::Now(); 336 OnShouldCloseACK(proceed, now, now); 337} 338 339void TestRenderViewHost::SetContentsMimeType(const std::string& mime_type) { 340 contents_mime_type_ = mime_type; 341 main_render_frame_host_->set_contents_mime_type(mime_type); 342} 343 344void TestRenderViewHost::SimulateSwapOutACK() { 345 OnSwappedOut(false); 346} 347 348void TestRenderViewHost::SimulateWasHidden() { 349 WasHidden(); 350} 351 352void TestRenderViewHost::SimulateWasShown() { 353 WasShown(); 354} 355 356void TestRenderViewHost::TestOnStartDragging( 357 const DropData& drop_data) { 358 blink::WebDragOperationsMask drag_operation = blink::WebDragOperationEvery; 359 DragEventSourceInfo event_info; 360 OnStartDragging(drop_data, drag_operation, SkBitmap(), gfx::Vector2d(), 361 event_info); 362} 363 364void TestRenderViewHost::TestOnUpdateStateWithFile( 365 int process_id, 366 const base::FilePath& file_path) { 367 OnUpdateState(process_id, 368 PageState::CreateForTesting(GURL("http://www.google.com"), 369 false, 370 "data", 371 &file_path)); 372} 373 374void TestRenderViewHost::set_simulate_fetch_via_proxy(bool proxy) { 375 simulate_fetch_via_proxy_ = proxy; 376} 377 378void TestRenderViewHost::set_simulate_history_list_was_cleared(bool cleared) { 379 simulate_history_list_was_cleared_ = cleared; 380 main_render_frame_host_->set_simulate_history_list_was_cleared(cleared); 381} 382 383RenderViewHostImplTestHarness::RenderViewHostImplTestHarness() { 384 std::vector<ui::ScaleFactor> scale_factors; 385 scale_factors.push_back(ui::SCALE_FACTOR_100P); 386 scoped_set_supported_scale_factors_.reset( 387 new ui::test::ScopedSetSupportedScaleFactors(scale_factors)); 388} 389 390RenderViewHostImplTestHarness::~RenderViewHostImplTestHarness() { 391} 392 393TestRenderViewHost* RenderViewHostImplTestHarness::test_rvh() { 394 return static_cast<TestRenderViewHost*>(rvh()); 395} 396 397TestRenderViewHost* RenderViewHostImplTestHarness::pending_test_rvh() { 398 return static_cast<TestRenderViewHost*>(pending_rvh()); 399} 400 401TestRenderViewHost* RenderViewHostImplTestHarness::active_test_rvh() { 402 return static_cast<TestRenderViewHost*>(active_rvh()); 403} 404 405TestRenderFrameHost* RenderViewHostImplTestHarness::main_test_rfh() { 406 return static_cast<TestRenderFrameHost*>(main_rfh()); 407} 408 409TestWebContents* RenderViewHostImplTestHarness::contents() { 410 return static_cast<TestWebContents*>(web_contents()); 411} 412 413} // namespace content 414