1 // 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" 12 13 namespace extensions { 14 15 // This class does work in the constructor instead of SetUp() to give subclasses 16 // a valid BrowserContext to use while initializing their members. For example: 17 // 18 // class MyExtensionsTest : public ExtensionsTest { 19 // MyExtensionsTest() 20 // : my_object_(browser_context())) { 21 // } 22 // }; 23 ExtensionsTest::ExtensionsTest() 24 : content_client_(new content::ContentClient), 25 content_browser_client_(new content::ContentBrowserClient), 26 browser_context_(new content::TestBrowserContext), 27 extensions_browser_client_( 28 new TestExtensionsBrowserClient(browser_context_.get())) { 29 content::SetContentClient(content_client_.get()); 30 content::SetBrowserClientForTesting(content_browser_client_.get()); 31 ExtensionsBrowserClient::Set(extensions_browser_client_.get()); 32 } 33 34 ExtensionsTest::~ExtensionsTest() { 35 ExtensionsBrowserClient::Set(NULL); 36 content::SetBrowserClientForTesting(NULL); 37 content::SetContentClient(NULL); 38 } 39 40 void ExtensionsTest::SetUp() { 41 // Crashing here? Don't use this class in Chrome's unit_tests. See header. 42 BrowserContextDependencyManager::GetInstance() 43 ->CreateBrowserContextServicesForTest(browser_context_.get()); 44 } 45 46 void ExtensionsTest::TearDown() { 47 // Allows individual tests to have BrowserContextKeyedServiceFactory objects 48 // as member variables instead of singletons. The individual services will be 49 // cleaned up before the factories are destroyed. 50 BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices( 51 browser_context_.get()); 52 } 53 54 } // namespace extensions 55