1// Copyright (c) 2012 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 CONTENT_PUBLIC_TEST_TEST_CONTENT_CLIENT_INITIALIZER_
6#define CONTENT_PUBLIC_TEST_TEST_CONTENT_CLIENT_INITIALIZER_
7
8#include "base/basictypes.h"
9#include "base/memory/scoped_ptr.h"
10
11namespace content {
12
13class ContentClient;
14class MockRenderProcessHostFactory;
15class NotificationServiceImpl;
16class TestContentBrowserClient;
17class TestRenderViewHostFactory;
18
19// Initializes various objects needed to run unit tests that use content::
20// objects. Currently this includes setting up the notification service,
21// creating and setting the content client and the content browser client.
22class TestContentClientInitializer {
23 public:
24  TestContentClientInitializer();
25  ~TestContentClientInitializer();
26
27  // Enables switching RenderViewHost creation to use the test version instead
28  // of the real implementation. This will last throughout the lifetime of this
29  // class.
30  void CreateTestRenderViewHosts();
31
32 private:
33  scoped_ptr<NotificationServiceImpl> notification_service_;
34  scoped_ptr<ContentClient> content_client_;
35  scoped_ptr<TestContentBrowserClient> content_browser_client_;
36  scoped_ptr<MockRenderProcessHostFactory> rph_factory_;
37  scoped_ptr<TestRenderViewHostFactory> test_render_view_host_factory_;
38
39  DISALLOW_COPY_AND_ASSIGN(TestContentClientInitializer);
40};
41
42}  // namespace content
43
44#endif  // CONTENT_PUBLIC_TEST_TEST_CONTENT_CLIENT_INITIALIZER_
45