Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1028)

Unified Diff: content/public/test/test_renderer_host.cc

Issue 2496233003: Destroy the old RenderWidgetHostView when swapping out a main frame. (Closed)
Patch Set: rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/test/test_renderer_host.cc
diff --git a/content/public/test/test_renderer_host.cc b/content/public/test/test_renderer_host.cc
index 6817a5a0ac6e40a6008973d12b39e46571055ffb..563ab9307d47bea720251b2e50a1e48277acc74f 100644
--- a/content/public/test/test_renderer_host.cc
+++ b/content/public/test/test_renderer_host.cc
@@ -129,9 +129,39 @@ bool RenderViewHostTester::HasTouchEventHandler(RenderViewHost* rvh) {
RenderViewHostTestEnabler::RenderViewHostTestEnabler()
: rph_factory_(new MockRenderProcessHostFactory()),
rvh_factory_(new TestRenderViewHostFactory(rph_factory_.get())),
- rfh_factory_(new TestRenderFrameHostFactory()) {}
+ rfh_factory_(new TestRenderFrameHostFactory()) {
+#if !defined(OS_ANDROID)
+ ImageTransportFactory::InitializeForUnitTests(
+ base::WrapUnique(new NoTransportImageTransportFactory));
+#else
+ gpu_channel_factory_ = base::MakeUnique<MockGpuChannelEstablishFactory>();
+ ContextProviderFactoryImpl::Initialize(gpu_channel_factory_.get());
+ ui::ContextProviderFactory::SetInstance(
+ ContextProviderFactoryImpl::GetInstance());
+ if (!screen_)
+ screen_.reset(ui::CreateDummyScreenAndroid());
+ display::Screen::SetScreenInstance(screen_.get());
+#endif
+#if defined(OS_MACOSX)
+ if (base::ThreadTaskRunnerHandle::IsSet())
+ ui::WindowResizeHelperMac::Get()->Init(base::ThreadTaskRunnerHandle::Get());
+#endif // OS_MACOSX
+}
RenderViewHostTestEnabler::~RenderViewHostTestEnabler() {
+#if defined(OS_MACOSX)
+ ui::WindowResizeHelperMac::Get()->ShutdownForTests();
+#endif // OS_MACOSX
+#if !defined(OS_ANDROID)
+ // RenderWidgetHostView holds on to a reference to SurfaceManager, so it
+ // must be shut down before the ImageTransportFactory.
+ ImageTransportFactory::Terminate();
+#else
+ display::Screen::SetScreenInstance(nullptr);
+ ui::ContextProviderFactory::SetInstance(nullptr);
+ ContextProviderFactoryImpl::Terminate();
+ gpu_channel_factory_.reset();
+#endif
}
@@ -234,21 +264,13 @@ void RenderViewHostTestHarness::SetUp() {
ui::MaterialDesignController::Initialize();
thread_bundle_.reset(new TestBrowserThreadBundle(thread_bundle_options_));
+ rvh_test_enabler_.reset(new RenderViewHostTestEnabler);
+ if (factory_)
+ rvh_test_enabler_->rvh_factory_->set_render_process_host_factory(factory_);
+
#if defined(OS_WIN)
ole_initializer_.reset(new ui::ScopedOleInitializer());
#endif
-#if !defined(OS_ANDROID)
- ImageTransportFactory::InitializeForUnitTests(
- base::WrapUnique(new NoTransportImageTransportFactory));
-#else
- gpu_channel_factory_ = base::MakeUnique<MockGpuChannelEstablishFactory>();
- ContextProviderFactoryImpl::Initialize(gpu_channel_factory_.get());
- ui::ContextProviderFactory::SetInstance(
- ContextProviderFactoryImpl::GetInstance());
- if (!screen_)
- screen_.reset(ui::CreateDummyScreenAndroid());
- display::Screen::SetScreenInstance(screen_.get());
-#endif
#if defined(USE_AURA)
ui::ContextFactory* context_factory =
ImageTransportFactory::GetInstance()->GetContextFactory();
@@ -268,10 +290,6 @@ void RenderViewHostTestHarness::SetUp() {
if (IsBrowserSideNavigationEnabled())
BrowserSideNavigationSetUp();
-
-#if defined(OS_MACOSX)
- ui::WindowResizeHelperMac::Get()->Init(base::ThreadTaskRunnerHandle::Get());
-#endif // OS_MACOSX
}
void RenderViewHostTestHarness::TearDown() {
@@ -287,17 +305,15 @@ void RenderViewHostTestHarness::TearDown() {
// before we destroy the browser context.
base::RunLoop().RunUntilIdle();
-#if defined(OS_MACOSX)
- ui::WindowResizeHelperMac::Get()->ShutdownForTests();
-#endif // OS_MACOSX
-
#if defined(OS_WIN)
ole_initializer_.reset();
#endif
// Delete any RenderProcessHosts before the BrowserContext goes away.
- if (rvh_test_enabler_.rph_factory_)
- rvh_test_enabler_.rph_factory_.reset();
+ if (rvh_test_enabler_->rph_factory_)
+ rvh_test_enabler_->rph_factory_.reset();
+
+ rvh_test_enabler_.reset();
// Release the browser context by posting itself on the end of the task
// queue. This is preferable to immediate deletion because it will behave
@@ -307,17 +323,6 @@ void RenderViewHostTestHarness::TearDown() {
FROM_HERE,
browser_context_.release());
thread_bundle_.reset();
-
-#if !defined(OS_ANDROID)
- // RenderWidgetHostView holds on to a reference to SurfaceManager, so it
- // must be shut down before the ImageTransportFactory.
- ImageTransportFactory::Terminate();
-#else
- display::Screen::SetScreenInstance(nullptr);
- ui::ContextProviderFactory::SetInstance(nullptr);
- ContextProviderFactoryImpl::Terminate();
- gpu_channel_factory_.reset();
-#endif
}
BrowserContext* RenderViewHostTestHarness::CreateBrowserContext() {
@@ -326,7 +331,10 @@ BrowserContext* RenderViewHostTestHarness::CreateBrowserContext() {
void RenderViewHostTestHarness::SetRenderProcessHostFactory(
RenderProcessHostFactory* factory) {
- rvh_test_enabler_.rvh_factory_->set_render_process_host_factory(factory);
+ if (rvh_test_enabler_)
+ rvh_test_enabler_->rvh_factory_->set_render_process_host_factory(factory);
+ else
+ factory_ = factory;
}
} // namespace content
« content/browser/web_contents/web_contents_impl.cc ('K') | « content/public/test/test_renderer_host.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698