Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: ui/compositor/compositor.h

Issue 45963003: Move test-only ContextFactory implementations out of production targets (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef UI_COMPOSITOR_COMPOSITOR_H_ 5 #ifndef UI_COMPOSITOR_COMPOSITOR_H_
6 #define UI_COMPOSITOR_COMPOSITOR_H_ 6 #define UI_COMPOSITOR_COMPOSITOR_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 16 matching lines...) Expand all
27 namespace base { 27 namespace base {
28 class MessageLoopProxy; 28 class MessageLoopProxy;
29 class RunLoop; 29 class RunLoop;
30 } 30 }
31 31
32 namespace cc { 32 namespace cc {
33 class ContextProvider; 33 class ContextProvider;
34 class Layer; 34 class Layer;
35 class LayerTreeDebugState; 35 class LayerTreeDebugState;
36 class LayerTreeHost; 36 class LayerTreeHost;
37 class TestContextProvider;
38 } 37 }
39 38
40 namespace gfx { 39 namespace gfx {
41 class GLContext; 40 class GLContext;
42 class GLSurface; 41 class GLSurface;
43 class GLShareGroup; 42 class GLShareGroup;
44 class Point; 43 class Point;
45 class Rect; 44 class Rect;
46 class Size; 45 class Size;
47 } 46 }
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 SharedMainThreadContextProvider() = 0; 109 SharedMainThreadContextProvider() = 0;
111 110
112 // Destroys per-compositor data. 111 // Destroys per-compositor data.
113 virtual void RemoveCompositor(Compositor* compositor) = 0; 112 virtual void RemoveCompositor(Compositor* compositor) = 0;
114 113
115 // When true, the factory uses test contexts that do not do real GL 114 // When true, the factory uses test contexts that do not do real GL
116 // operations. 115 // operations.
117 virtual bool DoesCreateTestContexts() = 0; 116 virtual bool DoesCreateTestContexts() = 0;
118 }; 117 };
119 118
120 // The default factory that creates in-process contexts.
121 class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory {
122 public:
123 DefaultContextFactory();
124 virtual ~DefaultContextFactory();
125
126 // ContextFactory implementation
127 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface(
128 Compositor* compositor) OVERRIDE;
129
130 virtual scoped_refptr<Reflector> CreateReflector(
131 Compositor* compositor,
132 Layer* layer) OVERRIDE;
133 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE;
134
135 virtual scoped_refptr<cc::ContextProvider>
136 OffscreenCompositorContextProvider() OVERRIDE;
137 virtual scoped_refptr<cc::ContextProvider>
138 SharedMainThreadContextProvider() OVERRIDE;
139 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE;
140 virtual bool DoesCreateTestContexts() OVERRIDE;
141
142 bool Initialize();
143
144 private:
145 scoped_refptr<webkit::gpu::ContextProviderInProcess>
146 offscreen_compositor_contexts_;
147 scoped_refptr<webkit::gpu::ContextProviderInProcess>
148 shared_main_thread_contexts_;
149
150 DISALLOW_COPY_AND_ASSIGN(DefaultContextFactory);
151 };
152
153 // The factory that creates test contexts.
154 class COMPOSITOR_EXPORT TestContextFactory : public ContextFactory {
155 public:
156 TestContextFactory();
157 virtual ~TestContextFactory();
158
159 // ContextFactory implementation
160 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface(
161 Compositor* compositor) OVERRIDE;
162
163 virtual scoped_refptr<Reflector> CreateReflector(
164 Compositor* mirrored_compositor,
165 Layer* mirroring_layer) OVERRIDE;
166 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE;
167
168 virtual scoped_refptr<cc::ContextProvider>
169 OffscreenCompositorContextProvider() OVERRIDE;
170 virtual scoped_refptr<cc::ContextProvider>
171 SharedMainThreadContextProvider() OVERRIDE;
172 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE;
173 virtual bool DoesCreateTestContexts() OVERRIDE;
174
175 private:
176 scoped_refptr<cc::TestContextProvider> offscreen_compositor_contexts_;
177 scoped_refptr<cc::TestContextProvider> shared_main_thread_contexts_;
178
179 DISALLOW_COPY_AND_ASSIGN(TestContextFactory);
180 };
181
182 // Texture provide an abstraction over the external texture that can be passed 119 // Texture provide an abstraction over the external texture that can be passed
183 // to a layer. 120 // to a layer.
184 class COMPOSITOR_EXPORT Texture : public base::RefCounted<Texture> { 121 class COMPOSITOR_EXPORT Texture : public base::RefCounted<Texture> {
185 public: 122 public:
186 Texture(bool flipped, const gfx::Size& size, float device_scale_factor); 123 Texture(bool flipped, const gfx::Size& size, float device_scale_factor);
187 124
188 bool flipped() const { return flipped_; } 125 bool flipped() const { return flipped_; }
189 gfx::Size size() const { return size_; } 126 gfx::Size size() const { return size_; }
190 float device_scale_factor() const { return device_scale_factor_; } 127 float device_scale_factor() const { return device_scale_factor_; }
191 128
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 // displayable form of pixels comprising a single widget's contents. It draws an 217 // displayable form of pixels comprising a single widget's contents. It draws an
281 // appropriately transformed texture for each transformed view in the widget's 218 // appropriately transformed texture for each transformed view in the widget's
282 // view hierarchy. 219 // view hierarchy.
283 class COMPOSITOR_EXPORT Compositor 220 class COMPOSITOR_EXPORT Compositor
284 : NON_EXPORTED_BASE(public cc::LayerTreeHostClient), 221 : NON_EXPORTED_BASE(public cc::LayerTreeHostClient),
285 public base::SupportsWeakPtr<Compositor> { 222 public base::SupportsWeakPtr<Compositor> {
286 public: 223 public:
287 explicit Compositor(gfx::AcceleratedWidget widget); 224 explicit Compositor(gfx::AcceleratedWidget widget);
288 virtual ~Compositor(); 225 virtual ~Compositor();
289 226
290 // Set up the compositor ContextFactory for a test environment. Unit tests
291 // that do not have a full content environment need to call this before
292 // initializing the Compositor.
293 // Some tests expect pixel output, and they should pass false for
294 // |allow_test_contexts|. Most unit tests should pass true. Once this has been
295 // called, the Initialize() and Terminate() methods should be used as normal.
296 static void InitializeContextFactoryForTests(bool allow_test_contexts);
297
298 static void Initialize(); 227 static void Initialize();
299 static bool WasInitializedWithThread(); 228 static bool WasInitializedWithThread();
300 static scoped_refptr<base::MessageLoopProxy> GetCompositorMessageLoop(); 229 static scoped_refptr<base::MessageLoopProxy> GetCompositorMessageLoop();
301 static void Terminate(); 230 static void Terminate();
302 231
303 // Schedules a redraw of the layer tree associated with this compositor. 232 // Schedules a redraw of the layer tree associated with this compositor.
304 void ScheduleDraw(); 233 void ScheduleDraw();
305 234
306 // Sets the root of the layer tree drawn by this Compositor. The root layer 235 // Sets the root of the layer tree drawn by this Compositor. The root layer
307 // must have no parent. The compositor's root layer is reset if the root layer 236 // must have no parent. The compositor's root layer is reset if the root layer
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 bool draw_on_compositing_end_; 381 bool draw_on_compositing_end_;
453 382
454 base::WeakPtrFactory<Compositor> schedule_draw_factory_; 383 base::WeakPtrFactory<Compositor> schedule_draw_factory_;
455 384
456 DISALLOW_COPY_AND_ASSIGN(Compositor); 385 DISALLOW_COPY_AND_ASSIGN(Compositor);
457 }; 386 };
458 387
459 } // namespace ui 388 } // namespace ui
460 389
461 #endif // UI_COMPOSITOR_COMPOSITOR_H_ 390 #endif // UI_COMPOSITOR_COMPOSITOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698