| Index: extensions/browser/extensions_test.cc
|
| diff --git a/extensions/browser/extensions_test.cc b/extensions/browser/extensions_test.cc
|
| index 4935dd98b4691fd07b79b4697d626362ee2daf8c..21415103d40cacda41f0fbeaaaf0a6bb5f601da4 100644
|
| --- a/extensions/browser/extensions_test.cc
|
| +++ b/extensions/browser/extensions_test.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "extensions/browser/extensions_test.h"
|
|
|
| +#include "base/memory/ptr_util.h"
|
| #include "components/keyed_service/content/browser_context_dependency_manager.h"
|
| #include "components/pref_registry/pref_registry_syncable.h"
|
| #include "components/prefs/pref_service_factory.h"
|
| @@ -31,24 +32,18 @@ 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() {}
|
| +
|
| +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());
|
| +
|
| content::SetBrowserClientForTesting(content_browser_client_.get());
|
| content::SetUtilityClientForTesting(content_utility_client_.get());
|
| ExtensionsBrowserClient::Set(extensions_browser_client_.get());
|
| @@ -75,15 +70,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());
|
| @@ -96,13 +83,14 @@ 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();
|
| browser_context_.reset();
|
| incognito_context_.reset();
|
| pref_service_.reset();
|
| +
|
| + ExtensionsBrowserClient::Set(nullptr);
|
| + content::SetBrowserClientForTesting(nullptr);
|
| + content::SetUtilityClientForTesting(nullptr);
|
| }
|
|
|
| } // namespace extensions
|
|
|