blob: 3f5dd0ac1eee240b495847a0b4c2e07d471d8bd0 [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#ifndef EXTENSIONS_BROWSER_EXTENSIONS_TEST_H_
6#define EXTENSIONS_BROWSER_EXTENSIONS_TEST_H_
7
[email protected]9fc5bdc82014-08-03 23:49:268#include "base/compiler_specific.h"
[email protected]a80de9112014-07-31 03:15:089#include "base/macros.h"
10#include "base/memory/scoped_ptr.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13namespace content {
jamescook30a1ccd2014-09-09 15:59:2114class BrowserContext;
[email protected]a80de9112014-07-31 03:15:0815class ContentClient;
16class ContentBrowserClient;
[email protected]a80de9112014-07-31 03:15:0817}
18
19namespace extensions {
20class 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
30class ExtensionsTest : public testing::Test {
31 public:
32 ExtensionsTest();
dchengf9afb372014-10-27 21:43:1433 ~ExtensionsTest() override;
[email protected]a80de9112014-07-31 03:15:0834
jamescook30a1ccd2014-09-09 15:59:2135 // 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.
[email protected]a80de9112014-07-31 03:15:0841 TestExtensionsBrowserClient* extensions_browser_client() {
42 return extensions_browser_client_.get();
43 }
44
[email protected]9fc5bdc82014-08-03 23:49:2645 // testing::Test overrides:
dchengf9afb372014-10-27 21:43:1446 void SetUp() override;
47 void TearDown() override;
[email protected]9fc5bdc82014-08-03 23:49:2648
[email protected]a80de9112014-07-31 03:15:0849 private:
yoz0e463fa2014-11-19 22:00:4850 // TODO(yoz): Add a NotificationService here; it's used widely enough.
[email protected]a80de9112014-07-31 03:15:0851 scoped_ptr<content::ContentClient> content_client_;
52 scoped_ptr<content::ContentBrowserClient> content_browser_client_;
jamescook30a1ccd2014-09-09 15:59:2153 scoped_ptr<content::BrowserContext> browser_context_;
[email protected]a80de9112014-07-31 03:15:0854 scoped_ptr<TestExtensionsBrowserClient> extensions_browser_client_;
55
56 DISALLOW_COPY_AND_ASSIGN(ExtensionsTest);
57};
58
59} // namespace extensions
60
61#endif // EXTENSIONS_BROWSER_EXTENSIONS_TEST_H_