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 UI_COMPOSITOR_TEST_IN_PROCESS_CONTEXT_FACTORY_H_
6#define UI_COMPOSITOR_TEST_IN_PROCESS_CONTEXT_FACTORY_H_
7
8#include "ui/compositor/compositor.h"
9
10namespace base {
11class Thread;
12}
13
14namespace webkit {
15namespace gpu {
16class ContextProviderInProcess;
17}
18}
19
20namespace ui {
21
22class InProcessContextFactory : public ContextFactory {
23 public:
24  InProcessContextFactory();
25  virtual ~InProcessContextFactory();
26
27  // ContextFactory implementation
28  virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface(
29      Compositor* compositor,
30      bool software_fallback) OVERRIDE;
31
32  virtual scoped_refptr<Reflector> CreateReflector(
33      Compositor* mirrored_compositor,
34      Layer* mirroring_layer) OVERRIDE;
35  virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE;
36
37  virtual scoped_refptr<cc::ContextProvider> SharedMainThreadContextProvider()
38      OVERRIDE;
39  virtual void RemoveCompositor(Compositor* compositor) OVERRIDE;
40  virtual bool DoesCreateTestContexts() OVERRIDE;
41  virtual cc::SharedBitmapManager* GetSharedBitmapManager() OVERRIDE;
42  virtual base::MessageLoopProxy* GetCompositorMessageLoop() OVERRIDE;
43
44 private:
45  scoped_ptr<base::Thread> compositor_thread_;
46  scoped_refptr<webkit::gpu::ContextProviderInProcess>
47      shared_main_thread_contexts_;
48  scoped_ptr<cc::SharedBitmapManager> shared_bitmap_manager_;
49
50  DISALLOW_COPY_AND_ASSIGN(InProcessContextFactory);
51};
52
53}  // namespace ui
54
55#endif  // UI_COMPOSITOR_TEST_IN_PROCESS_CONTEXT_FACTORY_H_
56