15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_renderer_host.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/run_loop.h" 81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "content/browser/frame_host/navigation_entry_impl.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_view_host_factory.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_widget_host_impl.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/site_instance_impl.h" 12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "content/public/browser/browser_thread.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/mock_render_process_host.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_browser_context.h" 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "content/test/test_render_frame_host_factory.h" 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "content/test/test_render_view_host.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/test/test_render_view_host_factory.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/test/test_web_contents.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/win/scoped_ole_initializer.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/test/aura_test_helper.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderViewHostTester ------------------------------------------------------- 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RenderViewHostTester* RenderViewHostTester::For(RenderViewHost* host) { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return static_cast<TestRenderViewHost*>(host); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RenderViewHost* RenderViewHostTester::GetPendingForController( 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NavigationController* controller) { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) controller->GetWebContents()); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return web_contents->GetRenderManagerForTesting()->pending_render_view_host(); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool RenderViewHostTester::IsRenderViewHostSwappedOut(RenderViewHost* rvh) { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return static_cast<RenderViewHostImpl*>(rvh)->is_swapped_out(); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool RenderViewHostTester::TestOnMessageReceived(RenderViewHost* rvh, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const IPC::Message& msg) { 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return static_cast<RenderViewHostImpl*>(rvh)->OnMessageReceived(msg); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool RenderViewHostTester::HasTouchEventHandler(RenderViewHost* rvh) { 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderWidgetHostImpl* host_impl = RenderWidgetHostImpl::From(rvh); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return host_impl->has_touch_handler(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderViewHostTestEnabler -------------------------------------------------- 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RenderViewHostTestEnabler::RenderViewHostTestEnabler() 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : rph_factory_(new MockRenderProcessHostFactory()), 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rvh_factory_(new TestRenderViewHostFactory(rph_factory_.get())), 69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) rfh_factory_(new TestRenderFrameHostFactory()) {} 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RenderViewHostTestEnabler::~RenderViewHostTestEnabler() { 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderViewHostTestHarness -------------------------------------------------- 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 77868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)RenderViewHostTestHarness::RenderViewHostTestHarness() 787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) : thread_bundle_options_(TestBrowserThreadBundle::DEFAULT) {} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RenderViewHostTestHarness::~RenderViewHostTestHarness() { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NavigationController& RenderViewHostTestHarness::controller() { 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return web_contents()->GetController(); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebContents* RenderViewHostTestHarness::web_contents() { 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return contents_.get(); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RenderViewHost* RenderViewHostTestHarness::rvh() { 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return web_contents()->GetRenderViewHost(); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RenderViewHost* RenderViewHostTestHarness::pending_rvh() { 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return static_cast<TestWebContents*>(web_contents())-> 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetRenderManagerForTesting()->pending_render_view_host(); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RenderViewHost* RenderViewHostTestHarness::active_rvh() { 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return pending_rvh() ? pending_rvh() : rvh(); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 104a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)RenderFrameHost* RenderViewHostTestHarness::main_rfh() { 105a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( 106a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) this->web_contents()); 107a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return web_contents->GetFrameTree()->GetMainFrame(); 108a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BrowserContext* RenderViewHostTestHarness::browser_context() { 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return browser_context_.get(); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockRenderProcessHost* RenderViewHostTestHarness::process() { 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return static_cast<MockRenderProcessHost*>(active_rvh()->GetProcess()); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RenderViewHostTestHarness::DeleteContents() { 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetContents(NULL); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RenderViewHostTestHarness::SetContents(WebContents* contents) { 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) contents_.reset(contents); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebContents* RenderViewHostTestHarness::CreateTestWebContents() { 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure we ran SetUp() already. 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(ole_initializer_ != NULL); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(aura_test_helper_ != NULL); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This will be deleted when the WebContentsImpl goes away. 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SiteInstance* instance = SiteInstance::Create(browser_context_.get()); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return TestWebContents::Create(browser_context_.get(), instance); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RenderViewHostTestHarness::NavigateAndCommit(const GURL& url) { 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_cast<TestWebContents*>(web_contents())->NavigateAndCommit(url); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RenderViewHostTestHarness::Reload() { 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NavigationEntry* entry = controller().GetLastCommittedEntry(); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(entry); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) controller().Reload(false); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_cast<TestRenderViewHost*>( 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rvh())->SendNavigate(entry->GetPageID(), entry->GetURL()); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void RenderViewHostTestHarness::FailedReload() { 154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NavigationEntry* entry = controller().GetLastCommittedEntry(); 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK(entry); 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) controller().Reload(false); 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static_cast<TestRenderViewHost*>( 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) rvh())->SendFailedNavigate(entry->GetPageID(), entry->GetURL()); 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RenderViewHostTestHarness::SetUp() { 162868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) thread_bundle_.reset(new TestBrowserThreadBundle(thread_bundle_options_)); 163868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ole_initializer_.reset(new ui::ScopedOleInitializer()); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA) 168868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) aura_test_helper_.reset( 169868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) new aura::test::AuraTestHelper(base::MessageLoopForUI::current())); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) aura_test_helper_->SetUp(); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DCHECK(!browser_context_); 1747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch browser_context_.reset(CreateBrowserContext()); 1757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetContents(CreateTestWebContents()); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RenderViewHostTestHarness::TearDown() { 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetContents(NULL); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) aura_test_helper_->TearDown(); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure that we flush any messages related to WebContentsImpl destruction 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // before we destroy the browser context. 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::RunLoop().RunUntilIdle(); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 188868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(OS_WIN) 189868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ole_initializer_.reset(); 190868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif 191868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Delete any RenderProcessHosts before the BrowserContext goes away. 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (rvh_test_enabler_.rph_factory_) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rvh_test_enabler_.rph_factory_.reset(); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 196868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Release the browser context by posting itself on the end of the task 197868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // queue. This is preferable to immediate deletion because it will behave 198868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // properly if the |rph_factory_| reset above enqueued any tasks which 199868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // depend on |browser_context_|. 200868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) BrowserThread::DeleteSoon(content::BrowserThread::UI, 201868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) FROM_HERE, 202868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) browser_context_.release()); 203868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) thread_bundle_.reset(); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2067dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochBrowserContext* RenderViewHostTestHarness::CreateBrowserContext() { 2077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return new TestBrowserContext(); 2087dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 2097dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RenderViewHostTestHarness::SetRenderProcessHostFactory( 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderProcessHostFactory* factory) { 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rvh_test_enabler_.rvh_factory_->set_render_process_host_factory(factory); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 216