Index: extensions/browser/extensions_test.cc |
diff --git a/extensions/browser/extensions_test.cc b/extensions/browser/extensions_test.cc |
index e3aaba37c62f98e78f7ad04637b4ee50492a0d6e..7cec642c64d263441cc67b704b5ceb145e1d2d8d 100644 |
--- a/extensions/browser/extensions_test.cc |
+++ b/extensions/browser/extensions_test.cc |
@@ -32,24 +32,21 @@ std::unique_ptr<content::TestBrowserContext> CreateTestIncognitoContext() { |
namespace extensions { |
-// This class does work in the constructor instead of SetUp() to give subclasses |
-// a valid BrowserContext to use while initializing their members. For example: |
-// |
-// class MyExtensionsTest : public ExtensionsTest { |
-// MyExtensionsTest() |
-// : my_object_(browser_context())) { |
-// } |
-// }; |
-// TODO(crbug.com/708256): All these instances are setup in the constructor, but |
-// destroyed in TearDown(), which may cause problems. Move this initialization |
-// to SetUp(). |
-ExtensionsTest::ExtensionsTest() |
- : content_browser_client_(new TestContentBrowserClient), |
- content_utility_client_(new TestContentUtilityClient), |
- browser_context_(new content::TestBrowserContext), |
- incognito_context_(CreateTestIncognitoContext()), |
- extensions_browser_client_( |
- new TestExtensionsBrowserClient(browser_context_.get())) { |
+ExtensionsTest::ExtensionsTest() {} |
+ |
+ExtensionsTest::~ExtensionsTest() { |
+ content::SetBrowserClientForTesting(nullptr); |
karandeepb
2017/04/10 22:26:23
I also tried to move:
content::SetBrowserClientF
|
+ content::SetUtilityClientForTesting(nullptr); |
+} |
+ |
+void ExtensionsTest::SetUp() { |
+ content_browser_client_ = base::MakeUnique<TestContentBrowserClient>(); |
+ content_utility_client_ = base::MakeUnique<TestContentUtilityClient>(); |
+ browser_context_ = base::MakeUnique<content::TestBrowserContext>(); |
+ incognito_context_ = CreateTestIncognitoContext(); |
+ extensions_browser_client_ = |
+ base::MakeUnique<TestExtensionsBrowserClient>(browser_context_.get()); |
+ |
BrowserContextDependencyManager::GetInstance()->MarkBrowserContextLive( |
browser_context_.get()); |
content::SetBrowserClientForTesting(content_browser_client_.get()); |
@@ -78,15 +75,7 @@ ExtensionsTest::ExtensionsTest() |
ExtensionPrefsFactory::GetInstance()->SetInstanceForTesting( |
browser_context(), std::move(extension_prefs)); |
-} |
-ExtensionsTest::~ExtensionsTest() { |
- ExtensionsBrowserClient::Set(nullptr); |
- content::SetBrowserClientForTesting(nullptr); |
- content::SetUtilityClientForTesting(nullptr); |
-} |
- |
-void ExtensionsTest::SetUp() { |
// Crashing here? Don't use this class in Chrome's unit_tests. See header. |
BrowserContextDependencyManager::GetInstance() |
->CreateBrowserContextServicesForTest(browser_context_.get()); |
@@ -99,10 +88,9 @@ void ExtensionsTest::TearDown() { |
BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices( |
browser_context_.get()); |
- // TODO(crbug.com/708256): |extension_browser_client_| is reset here but not |
- // unset as the singleton until the destructor. This can lead to use after |
- // free errors. |
extensions_browser_client_.reset(); |
+ ExtensionsBrowserClient::Set(nullptr); |
+ |
browser_context_.reset(); |
incognito_context_.reset(); |
pref_service_.reset(); |