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 #ifndef EXTENSIONS_BROWSER_EXTENSIONS_TEST_H_ 6 #define EXTENSIONS_BROWSER_EXTENSIONS_TEST_H_ 7 8 #include "base/compiler_specific.h" 9 #include "base/macros.h" 10 #include "base/memory/scoped_ptr.h" 11 #include "testing/gtest/include/gtest/gtest.h" 12 13 namespace content { 14 class BrowserContext; 15 class ContentClient; 16 class ContentBrowserClient; 17 } 18 19 namespace extensions { 20 class TestExtensionsBrowserClient; 21 22 // Base class for extensions module unit tests of browser process code. Sets up 23 // the content module and extensions module client interfaces. Initializes 24 // services for a browser context. 25 // 26 // NOTE: Use this class only in extensions_unittests, not in Chrome unit_tests. 27 // BrowserContextKeyedServiceFactory singletons persist between tests. 28 // In Chrome those factories assume any BrowserContext is a Profile and will 29 // cause crashes if it is not. http://crbug.com/395820 30 class ExtensionsTest : public testing::Test { 31 public: 32 ExtensionsTest(); 33 virtual ~ExtensionsTest(); 34 35 // Returned as a BrowserContext since most users don't need methods from 36 // TestBrowserContext. 37 content::BrowserContext* browser_context() { return browser_context_.get(); } 38 39 // Returned as a TestExtensionsBrowserClient since most users need to call 40 // test-specific methods on it. 41 TestExtensionsBrowserClient* extensions_browser_client() { 42 return extensions_browser_client_.get(); 43 } 44 45 // testing::Test overrides: 46 virtual void SetUp() OVERRIDE; 47 virtual void TearDown() OVERRIDE; 48 49 private: 50 scoped_ptr<content::ContentClient> content_client_; 51 scoped_ptr<content::ContentBrowserClient> content_browser_client_; 52 scoped_ptr<content::BrowserContext> browser_context_; 53 scoped_ptr<TestExtensionsBrowserClient> extensions_browser_client_; 54 55 DISALLOW_COPY_AND_ASSIGN(ExtensionsTest); 56 }; 57 58 } // namespace extensions 59 60 #endif // EXTENSIONS_BROWSER_EXTENSIONS_TEST_H_ 61