Index: content/test/test_web_contents_factory.cc |
diff --git a/content/test/test_web_contents_factory.cc b/content/test/test_web_contents_factory.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9e09577d0ef90c71792603bc603bdec4bf1f51d7 |
--- /dev/null |
+++ b/content/test/test_web_contents_factory.cc |
@@ -0,0 +1,50 @@ |
+// Copyright 2015 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 "content/public/test/test_web_contents_factory.h" |
+ |
+#include "base/run_loop.h" |
+#include "content/public/browser/web_contents.h" |
+#include "content/public/test/test_renderer_host.h" |
+#include "content/public/test/web_contents_tester.h" |
+ |
+#if defined(USE_AURA) |
+#include "ui/aura/env.h" |
+#endif |
+ |
+namespace content { |
+ |
+TestWebContentsFactory::TestWebContentsFactory() |
+ : rvh_enabler_(new content::RenderViewHostTestEnabler()), |
+ tear_down_aura_(false) { |
+#if defined(USE_AURA) |
+ if (!aura::Env::HasInstanceForTesting()) { |
+ aura::Env::CreateInstance(true); |
+ tear_down_aura_ = true; |
+ } |
+#endif |
+} |
+ |
+TestWebContentsFactory::~TestWebContentsFactory() { |
+ web_contents_.clear(); |
sky
2015/02/28 17:30:45
Document why you need to explicitly clear here.
Devlin
2015/03/02 17:27:12
Done.
|
+ // Let any posted tasks for web contents deletion run. |
+ base::RunLoop().RunUntilIdle(); |
+ rvh_enabler_.reset(); |
+ // Let any posted tasks for RenderProcess/ViewHost deletion run. |
+ base::RunLoop().RunUntilIdle(); |
+#if defined(USE_AURA) |
+ if (tear_down_aura_) |
+ aura::Env::DeleteInstance(); |
+#endif |
+} |
+ |
+WebContents* TestWebContentsFactory::CreateWebContents( |
+ BrowserContext* context) { |
+ web_contents_.push_back( |
+ WebContentsTester::CreateTestWebContents(context, nullptr)); |
+ DCHECK(web_contents_.back()); |
+ return web_contents_.back(); |
+} |
+ |
+} // namespace content |