// Copyright 2014 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 "extensions/browser/extensions_test.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/common/content_client.h"
#include "content/public/test/test_browser_context.h"
#include "extensions/browser/test_extensions_browser_client.h"
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())) {
// }
// };
ExtensionsTest::ExtensionsTest()
: content_client_(new content::ContentClient),
content_browser_client_(new content::ContentBrowserClient),
browser_context_(new content::TestBrowserContext),
extensions_browser_client_(
new TestExtensionsBrowserClient(browser_context_.get())) {
content::SetContentClient(content_client_.get());
content::SetBrowserClientForTesting(content_browser_client_.get());
ExtensionsBrowserClient::Set(extensions_browser_client_.get());
}
ExtensionsTest::~ExtensionsTest() {
ExtensionsBrowserClient::Set(NULL);
content::SetBrowserClientForTesting(NULL);
content::SetContentClient(NULL);
}
void ExtensionsTest::SetUp() {
// Crashing here? Don't use this class in Chrome's unit_tests. See header.
BrowserContextDependencyManager::GetInstance()
->CreateBrowserContextServicesForTest(browser_context_.get());
}
void ExtensionsTest::TearDown() {
// Allows individual tests to have BrowserContextKeyedServiceFactory objects
// as member variables instead of singletons. The individual services will be
// cleaned up before the factories are destroyed.
BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices(
browser_context_.get());
}
} // namespace extensions