summaryrefslogtreecommitdiffstats
path: root/content/browser/renderer_host/test_render_view_host.cc
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-24 00:46:44 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-24 00:46:44 +0000
commit79ea4860d2a22403dbbdda865b2a360afbc3afbe (patch)
treea7a0b02aa35d620084adb6634c7b11769d415ac7 /content/browser/renderer_host/test_render_view_host.cc
parent0651b818c7122d319954ff5bc30dff68ba8b9013 (diff)
downloadchromium_src-79ea4860d2a22403dbbdda865b2a360afbc3afbe.zip
chromium_src-79ea4860d2a22403dbbdda865b2a360afbc3afbe.tar.gz
chromium_src-79ea4860d2a22403dbbdda865b2a360afbc3afbe.tar.bz2
Move files out of chrome\browser\renderer_host\test alongside their source. Most of them went to content\browser\renderer_host.
Review URL: http://codereview.chromium.org/6575009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75824 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/renderer_host/test_render_view_host.cc')
-rw-r--r--content/browser/renderer_host/test_render_view_host.cc346
1 files changed, 346 insertions, 0 deletions
diff --git a/content/browser/renderer_host/test_render_view_host.cc b/content/browser/renderer_host/test_render_view_host.cc
new file mode 100644
index 0000000..918ddbd
--- /dev/null
+++ b/content/browser/renderer_host/test_render_view_host.cc
@@ -0,0 +1,346 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/browser_url_handler.h"
+#include "chrome/common/dom_storage_common.h"
+#include "chrome/common/render_messages.h"
+#include "chrome/common/render_messages_params.h"
+#include "chrome/test/testing_profile.h"
+#include "content/browser/renderer_host/test_backing_store.h"
+#include "content/browser/renderer_host/test_render_view_host.h"
+#include "content/browser/site_instance.h"
+#include "content/browser/tab_contents/navigation_controller.h"
+#include "content/browser/tab_contents/test_tab_contents.h"
+#include "ui/gfx/rect.h"
+#include "webkit/glue/webpreferences.h"
+#include "webkit/glue/password_form.h"
+
+using webkit_glue::PasswordForm;
+
+void InitNavigateParams(ViewHostMsg_FrameNavigate_Params* params,
+ int page_id,
+ const GURL& url,
+ PageTransition::Type transition) {
+ params->page_id = page_id;
+ params->url = url;
+ params->referrer = GURL();
+ params->transition = transition;
+ params->redirects = std::vector<GURL>();
+ params->should_update_history = false;
+ params->searchable_form_url = GURL();
+ params->searchable_form_encoding = std::string();
+ params->password_form = PasswordForm();
+ params->security_info = std::string();
+ params->gesture = NavigationGestureUser;
+ params->was_within_same_page = false;
+ params->is_post = false;
+}
+
+TestRenderViewHost::TestRenderViewHost(SiteInstance* instance,
+ RenderViewHostDelegate* delegate,
+ int routing_id)
+ : RenderViewHost(instance, delegate, routing_id,
+ kInvalidSessionStorageNamespaceId),
+ render_view_created_(false),
+ delete_counter_(NULL) {
+ // For normal RenderViewHosts, this is freed when |Shutdown()| is called.
+ // For TestRenderViewHost, the view is explicitly deleted in the destructor
+ // below, because TestRenderWidgetHostView::Destroy() doesn't |delete this|.
+ set_view(new TestRenderWidgetHostView(this));
+}
+
+TestRenderViewHost::~TestRenderViewHost() {
+ if (delete_counter_)
+ ++*delete_counter_;
+
+ // Since this isn't a traditional view, we have to delete it.
+ delete view();
+}
+
+bool TestRenderViewHost::CreateRenderView(const string16& frame_name) {
+ DCHECK(!render_view_created_);
+ render_view_created_ = true;
+ process()->ViewCreated();
+ return true;
+}
+
+bool TestRenderViewHost::IsRenderViewLive() const {
+ return render_view_created_;
+}
+
+bool TestRenderViewHost::TestOnMessageReceived(const IPC::Message& msg) {
+ return OnMessageReceived(msg);
+}
+
+void TestRenderViewHost::SendNavigate(int page_id, const GURL& url) {
+ SendNavigateWithTransition(page_id, url, PageTransition::LINK);
+}
+
+void TestRenderViewHost::SendNavigateWithTransition(
+ int page_id, const GURL& url, PageTransition::Type transition) {
+ ViewHostMsg_FrameNavigate_Params params;
+
+ params.page_id = page_id;
+ params.url = url;
+ params.referrer = GURL();
+ params.transition = transition;
+ params.redirects = std::vector<GURL>();
+ params.should_update_history = true;
+ params.searchable_form_url = GURL();
+ params.searchable_form_encoding = std::string();
+ params.password_form = PasswordForm();
+ params.security_info = std::string();
+ params.gesture = NavigationGestureUser;
+ params.contents_mime_type = std::string();
+ params.is_post = false;
+ params.is_content_filtered = false;
+ params.was_within_same_page = false;
+ params.http_status_code = 0;
+ params.socket_address.set_host("2001:db8::1");
+ params.socket_address.set_port(80);
+
+ ViewHostMsg_FrameNavigate msg(1, params);
+ OnMsgNavigate(msg);
+}
+
+TestRenderWidgetHostView::TestRenderWidgetHostView(RenderWidgetHost* rwh)
+ : rwh_(rwh),
+ is_showing_(false) {
+}
+
+TestRenderWidgetHostView::~TestRenderWidgetHostView() {
+}
+
+RenderWidgetHost* TestRenderWidgetHostView::GetRenderWidgetHost() const {
+ return NULL;
+}
+
+gfx::NativeView TestRenderWidgetHostView::GetNativeView() {
+ return NULL;
+}
+
+bool TestRenderWidgetHostView::HasFocus() {
+ return true;
+}
+
+void TestRenderWidgetHostView::Show() {
+ is_showing_ = true;
+}
+
+void TestRenderWidgetHostView::Hide() {
+ is_showing_ = false;
+}
+
+bool TestRenderWidgetHostView::IsShowing() {
+ return is_showing_;
+}
+
+void TestRenderWidgetHostView::RenderViewGone(base::TerminationStatus status,
+ int error_code) {
+ delete this;
+}
+
+gfx::Rect TestRenderWidgetHostView::GetViewBounds() const {
+ return gfx::Rect();
+}
+
+BackingStore* TestRenderWidgetHostView::AllocBackingStore(
+ const gfx::Size& size) {
+ return new TestBackingStore(rwh_, size);
+}
+
+#if defined(OS_MACOSX)
+
+void TestRenderWidgetHostView::ShowPopupWithItems(
+ gfx::Rect bounds,
+ int item_height,
+ double item_font_size,
+ int selected_item,
+ const std::vector<WebMenuItem>& items,
+ bool right_aligned) {
+}
+
+gfx::Rect TestRenderWidgetHostView::GetViewCocoaBounds() const {
+ return gfx::Rect();
+}
+
+gfx::Rect TestRenderWidgetHostView::GetRootWindowRect() {
+ return gfx::Rect();
+}
+
+void TestRenderWidgetHostView::SetActive(bool active) {
+ // <viettrungluu@gmail.com>: Do I need to do anything here?
+}
+
+void TestRenderWidgetHostView::PluginFocusChanged(bool focused,
+ int plugin_id) {
+}
+
+void TestRenderWidgetHostView::StartPluginIme() {
+}
+
+bool TestRenderWidgetHostView::PostProcessEventForPluginIme(
+ const NativeWebKeyboardEvent& event) {
+ return false;
+}
+
+gfx::PluginWindowHandle
+TestRenderWidgetHostView::AllocateFakePluginWindowHandle(
+ bool opaque,
+ bool root) {
+ return NULL;
+}
+
+void TestRenderWidgetHostView::DestroyFakePluginWindowHandle(
+ gfx::PluginWindowHandle window) {
+}
+
+void TestRenderWidgetHostView::AcceleratedSurfaceSetIOSurface(
+ gfx::PluginWindowHandle window,
+ int32 width,
+ int32 height,
+ uint64 surface_id) {
+}
+
+void TestRenderWidgetHostView::AcceleratedSurfaceSetTransportDIB(
+ gfx::PluginWindowHandle window,
+ int32 width,
+ int32 height,
+ TransportDIB::Handle transport_dib) {
+}
+
+void TestRenderWidgetHostView::AcceleratedSurfaceBuffersSwapped(
+ gfx::PluginWindowHandle window,
+ uint64 surface_id,
+ int renderer_id,
+ int32 route_id,
+ int gpu_host_id,
+ uint64 swap_buffers_count) {
+}
+
+void TestRenderWidgetHostView::GpuRenderingStateDidChange() {
+}
+#elif defined(OS_WIN)
+void TestRenderWidgetHostView::WillWmDestroy() {
+}
+
+void TestRenderWidgetHostView::ShowCompositorHostWindow(bool show) {
+}
+#endif
+
+gfx::PluginWindowHandle TestRenderWidgetHostView::AcquireCompositingSurface() {
+ return gfx::kNullPluginWindow;
+}
+
+bool TestRenderWidgetHostView::ContainsNativeView(
+ gfx::NativeView native_view) const {
+ return false;
+}
+
+TestRenderViewHostFactory::TestRenderViewHostFactory(
+ RenderProcessHostFactory* rph_factory)
+ : render_process_host_factory_(rph_factory) {
+ RenderViewHostFactory::RegisterFactory(this);
+}
+
+TestRenderViewHostFactory::~TestRenderViewHostFactory() {
+ RenderViewHostFactory::UnregisterFactory();
+}
+
+void TestRenderViewHostFactory::set_render_process_host_factory(
+ RenderProcessHostFactory* rph_factory) {
+ render_process_host_factory_ = rph_factory;
+}
+
+RenderViewHost* TestRenderViewHostFactory::CreateRenderViewHost(
+ SiteInstance* instance,
+ RenderViewHostDelegate* delegate,
+ int routing_id,
+ SessionStorageNamespace* session_storage) {
+ // See declaration of render_process_host_factory_ below.
+ instance->set_render_process_host_factory(render_process_host_factory_);
+ return new TestRenderViewHost(instance, delegate, routing_id);
+}
+
+RenderViewHostTestHarness::RenderViewHostTestHarness()
+ : rph_factory_(),
+ rvh_factory_(&rph_factory_),
+ contents_(NULL) {
+}
+
+RenderViewHostTestHarness::~RenderViewHostTestHarness() {
+}
+
+NavigationController& RenderViewHostTestHarness::controller() {
+ return contents_->controller();
+}
+
+TestTabContents* RenderViewHostTestHarness::contents() {
+ return contents_.get();
+}
+
+TestRenderViewHost* RenderViewHostTestHarness::rvh() {
+ return static_cast<TestRenderViewHost*>(contents_->render_view_host());
+}
+
+TestRenderViewHost* RenderViewHostTestHarness::pending_rvh() {
+ return static_cast<TestRenderViewHost*>(
+ contents_->render_manager()->pending_render_view_host());
+}
+
+TestRenderViewHost* RenderViewHostTestHarness::active_rvh() {
+ return pending_rvh() ? pending_rvh() : rvh();
+}
+
+TestingProfile* RenderViewHostTestHarness::profile() {
+ return profile_.get();
+}
+
+MockRenderProcessHost* RenderViewHostTestHarness::process() {
+ if (pending_rvh())
+ return static_cast<MockRenderProcessHost*>(pending_rvh()->process());
+ return static_cast<MockRenderProcessHost*>(rvh()->process());
+}
+
+void RenderViewHostTestHarness::DeleteContents() {
+ contents_.reset();
+}
+
+TestTabContents* RenderViewHostTestHarness::CreateTestTabContents() {
+ // See comment above profile_ decl for why we check for NULL here.
+ if (!profile_.get())
+ profile_.reset(new TestingProfile());
+
+ // This will be deleted when the TabContents goes away.
+ SiteInstance* instance = SiteInstance::CreateSiteInstance(profile_.get());
+
+ return new TestTabContents(profile_.get(), instance);
+}
+
+void RenderViewHostTestHarness::NavigateAndCommit(const GURL& url) {
+ contents()->NavigateAndCommit(url);
+}
+
+void RenderViewHostTestHarness::Reload() {
+ NavigationEntry* entry = controller().GetLastCommittedEntry();
+ DCHECK(entry);
+ controller().Reload(false);
+ rvh()->SendNavigate(entry->page_id(), entry->url());
+}
+
+void RenderViewHostTestHarness::SetUp() {
+ contents_.reset(CreateTestTabContents());
+}
+
+void RenderViewHostTestHarness::TearDown() {
+ contents_.reset();
+
+ // Make sure that we flush any messages related to TabContents destruction
+ // before we destroy the profile.
+ MessageLoop::current()->RunAllPending();
+
+ // Release the profile on the UI thread.
+ message_loop_.DeleteSoon(FROM_HERE, profile_.release());
+ message_loop_.RunAllPending();
+}