blob: c6962ed05662653269b7d2083379d39a3af37cc9 [file] [log] [blame]
[email protected]a80de9112014-07-31 03:15:081// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "extensions/browser/extensions_test.h"
6
7#include "components/keyed_service/content/browser_context_dependency_manager.h"
8#include "content/public/browser/content_browser_client.h"
9#include "content/public/common/content_client.h"
10#include "content/public/test/test_browser_context.h"
11#include "extensions/browser/test_extensions_browser_client.h"
asargent275faaa2015-01-27 23:43:2912#include "extensions/test/test_content_utility_client.h"
[email protected]a80de9112014-07-31 03:15:0813
14namespace extensions {
15
16// This class does work in the constructor instead of SetUp() to give subclasses
17// a valid BrowserContext to use while initializing their members. For example:
18//
19// class MyExtensionsTest : public ExtensionsTest {
20// MyExtensionsTest()
21// : my_object_(browser_context())) {
22// }
23// };
24ExtensionsTest::ExtensionsTest()
25 : content_client_(new content::ContentClient),
asargent275faaa2015-01-27 23:43:2926 content_utility_client_(new TestContentUtilityClient),
[email protected]a80de9112014-07-31 03:15:0827 content_browser_client_(new content::ContentBrowserClient),
28 browser_context_(new content::TestBrowserContext),
29 extensions_browser_client_(
30 new TestExtensionsBrowserClient(browser_context_.get())) {
31 content::SetContentClient(content_client_.get());
asargent275faaa2015-01-27 23:43:2932 content::SetUtilityClientForTesting(content_utility_client_.get());
[email protected]a80de9112014-07-31 03:15:0833 content::SetBrowserClientForTesting(content_browser_client_.get());
34 ExtensionsBrowserClient::Set(extensions_browser_client_.get());
thestig34f7eca2015-02-03 18:42:4035 extensions_browser_client_->set_extension_system_factory(
36 &extension_system_factory_);
[email protected]9fc5bdc82014-08-03 23:49:2637}
[email protected]a80de9112014-07-31 03:15:0838
[email protected]9fc5bdc82014-08-03 23:49:2639ExtensionsTest::~ExtensionsTest() {
40 ExtensionsBrowserClient::Set(NULL);
41 content::SetBrowserClientForTesting(NULL);
asargent275faaa2015-01-27 23:43:2942 content::SetUtilityClientForTesting(NULL);
[email protected]9fc5bdc82014-08-03 23:49:2643 content::SetContentClient(NULL);
44}
45
46void ExtensionsTest::SetUp() {
[email protected]a80de9112014-07-31 03:15:0847 // Crashing here? Don't use this class in Chrome's unit_tests. See header.
48 BrowserContextDependencyManager::GetInstance()
49 ->CreateBrowserContextServicesForTest(browser_context_.get());
50}
51
[email protected]9fc5bdc82014-08-03 23:49:2652void ExtensionsTest::TearDown() {
53 // Allows individual tests to have BrowserContextKeyedServiceFactory objects
54 // as member variables instead of singletons. The individual services will be
55 // cleaned up before the factories are destroyed.
[email protected]a80de9112014-07-31 03:15:0856 BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices(
57 browser_context_.get());
[email protected]a80de9112014-07-31 03:15:0858}
59
60} // namespace extensions