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
13namespace content {
14class BrowserContext;
15class ContentClient;
16class ContentBrowserClient;
17}
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();
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