| OLD | NEW |
| (Empty) |
| 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/public/test/test_renderer_host.h" | |
| 6 | |
| 7 #include "content/browser/renderer_host/render_view_host_factory.h" | |
| 8 #include "content/browser/renderer_host/render_widget_host_impl.h" | |
| 9 #include "content/browser/renderer_host/test_render_view_host.h" | |
| 10 #include "content/browser/site_instance_impl.h" | |
| 11 #include "content/browser/web_contents/navigation_entry_impl.h" | |
| 12 #include "content/browser/web_contents/test_web_contents.h" | |
| 13 #include "content/public/browser/web_contents.h" | |
| 14 #include "content/public/test/mock_render_process_host.h" | |
| 15 #include "content/public/test/test_browser_context.h" | |
| 16 #include "content/test/test_render_view_host_factory.h" | |
| 17 | |
| 18 #if defined(USE_AURA) | |
| 19 #include "ui/aura/test/aura_test_helper.h" | |
| 20 #endif | |
| 21 | |
| 22 namespace content { | |
| 23 | |
| 24 // static | |
| 25 RenderViewHostTester* RenderViewHostTester::For(RenderViewHost* host) { | |
| 26 return static_cast<TestRenderViewHost*>(host); | |
| 27 } | |
| 28 | |
| 29 // static | |
| 30 void RenderViewHostTester::EnableAccessibilityUpdatedNotifications( | |
| 31 RenderViewHost* host) { | |
| 32 static_cast<RenderViewHostImpl*>( | |
| 33 host)->set_send_accessibility_updated_notifications(true); | |
| 34 } | |
| 35 | |
| 36 // static | |
| 37 RenderViewHost* RenderViewHostTester::GetPendingForController( | |
| 38 NavigationController* controller) { | |
| 39 WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( | |
| 40 controller->GetWebContents()); | |
| 41 return web_contents->GetRenderManagerForTesting()->pending_render_view_host(); | |
| 42 } | |
| 43 | |
| 44 // static | |
| 45 bool RenderViewHostTester::IsRenderViewHostSwappedOut(RenderViewHost* rvh) { | |
| 46 return static_cast<RenderViewHostImpl*>(rvh)->is_swapped_out(); | |
| 47 } | |
| 48 | |
| 49 // static | |
| 50 bool RenderViewHostTester::TestOnMessageReceived(RenderViewHost* rvh, | |
| 51 const IPC::Message& msg) { | |
| 52 return static_cast<RenderViewHostImpl*>(rvh)->OnMessageReceived(msg); | |
| 53 } | |
| 54 | |
| 55 // static | |
| 56 bool RenderViewHostTester::HasTouchEventHandler(RenderViewHost* rvh) { | |
| 57 RenderWidgetHostImpl* host_impl = RenderWidgetHostImpl::From(rvh); | |
| 58 return host_impl->has_touch_handler(); | |
| 59 } | |
| 60 | |
| 61 RenderViewHostTestEnabler::RenderViewHostTestEnabler() | |
| 62 : rph_factory_(new MockRenderProcessHostFactory()), | |
| 63 rvh_factory_(new TestRenderViewHostFactory(rph_factory_.get())) { | |
| 64 } | |
| 65 | |
| 66 RenderViewHostTestEnabler::~RenderViewHostTestEnabler() { | |
| 67 } | |
| 68 | |
| 69 RenderViewHostTestHarness::RenderViewHostTestHarness() | |
| 70 : contents_(NULL) { | |
| 71 } | |
| 72 | |
| 73 RenderViewHostTestHarness::~RenderViewHostTestHarness() { | |
| 74 } | |
| 75 | |
| 76 NavigationController& RenderViewHostTestHarness::controller() { | |
| 77 return web_contents()->GetController(); | |
| 78 } | |
| 79 | |
| 80 WebContents* RenderViewHostTestHarness::web_contents() { | |
| 81 return contents_.get(); | |
| 82 } | |
| 83 | |
| 84 RenderViewHost* RenderViewHostTestHarness::rvh() { | |
| 85 return web_contents()->GetRenderViewHost(); | |
| 86 } | |
| 87 | |
| 88 RenderViewHost* RenderViewHostTestHarness::pending_rvh() { | |
| 89 return static_cast<TestWebContents*>(web_contents())-> | |
| 90 GetRenderManagerForTesting()->pending_render_view_host(); | |
| 91 } | |
| 92 | |
| 93 RenderViewHost* RenderViewHostTestHarness::active_rvh() { | |
| 94 return pending_rvh() ? pending_rvh() : rvh(); | |
| 95 } | |
| 96 | |
| 97 BrowserContext* RenderViewHostTestHarness::browser_context() { | |
| 98 return browser_context_.get(); | |
| 99 } | |
| 100 | |
| 101 MockRenderProcessHost* RenderViewHostTestHarness::process() { | |
| 102 return static_cast<MockRenderProcessHost*>(active_rvh()->GetProcess()); | |
| 103 } | |
| 104 | |
| 105 void RenderViewHostTestHarness::DeleteContents() { | |
| 106 SetContents(NULL); | |
| 107 } | |
| 108 | |
| 109 void RenderViewHostTestHarness::SetContents(WebContents* contents) { | |
| 110 contents_.reset(contents); | |
| 111 } | |
| 112 | |
| 113 WebContents* RenderViewHostTestHarness::CreateTestWebContents() { | |
| 114 // See comment above browser_context_ decl for why we check for NULL here. | |
| 115 if (!browser_context_.get()) | |
| 116 browser_context_.reset(new content::TestBrowserContext()); | |
| 117 | |
| 118 // This will be deleted when the WebContentsImpl goes away. | |
| 119 SiteInstance* instance = SiteInstance::Create(browser_context_.get()); | |
| 120 | |
| 121 return TestWebContents::Create(browser_context_.get(), instance); | |
| 122 } | |
| 123 | |
| 124 void RenderViewHostTestHarness::NavigateAndCommit(const GURL& url) { | |
| 125 static_cast<TestWebContents*>(web_contents())->NavigateAndCommit(url); | |
| 126 } | |
| 127 | |
| 128 void RenderViewHostTestHarness::Reload() { | |
| 129 NavigationEntry* entry = controller().GetLastCommittedEntry(); | |
| 130 DCHECK(entry); | |
| 131 controller().Reload(false); | |
| 132 static_cast<TestRenderViewHost*>( | |
| 133 rvh())->SendNavigate(entry->GetPageID(), entry->GetURL()); | |
| 134 } | |
| 135 | |
| 136 void RenderViewHostTestHarness::SetUp() { | |
| 137 #if defined(USE_AURA) | |
| 138 aura_test_helper_.reset(new aura::test::AuraTestHelper(&message_loop_)); | |
| 139 aura_test_helper_->SetUp(); | |
| 140 #endif | |
| 141 SetContents(CreateTestWebContents()); | |
| 142 } | |
| 143 | |
| 144 void RenderViewHostTestHarness::TearDown() { | |
| 145 SetContents(NULL); | |
| 146 #if defined(USE_AURA) | |
| 147 aura_test_helper_->TearDown(); | |
| 148 #endif | |
| 149 // Make sure that we flush any messages related to WebContentsImpl destruction | |
| 150 // before we destroy the browser context. | |
| 151 MessageLoop::current()->RunAllPending(); | |
| 152 | |
| 153 // Delete any RenderProcessHosts before the BrowserContext goes away. | |
| 154 if (rvh_test_enabler_.rph_factory_.get()) | |
| 155 rvh_test_enabler_.rph_factory_.reset(); | |
| 156 | |
| 157 // Release the browser context on the UI thread. | |
| 158 message_loop_.DeleteSoon(FROM_HERE, browser_context_.release()); | |
| 159 message_loop_.RunAllPending(); | |
| 160 } | |
| 161 | |
| 162 void RenderViewHostTestHarness::SetRenderProcessHostFactory( | |
| 163 RenderProcessHostFactory* factory) { | |
| 164 rvh_test_enabler_.rvh_factory_->set_render_process_host_factory(factory); | |
| 165 } | |
| 166 | |
| 167 } // namespace content | |
| OLD | NEW |