1 // Copyright 2013 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.
5 #ifndef CC_TEST_LAYER_TREE_PIXEL_TEST_H_
6 #define CC_TEST_LAYER_TREE_PIXEL_TEST_H_
10 #include "base/files/file_path.h"
11 #include "base/memory/ref_counted.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "cc/resources/single_release_callback.h"
14 #include "cc/test/layer_tree_test.h"
15 #include "ui/gl/gl_implementation.h"
20 class GLInProcessContext
;
24 class CopyOutputRequest
;
25 class CopyOutputResult
;
27 class PixelComparator
;
28 class SolidColorLayer
;
32 class LayerTreePixelTest
: public LayerTreeTest
{
41 ~LayerTreePixelTest() override
;
43 scoped_ptr
<OutputSurface
> CreateOutputSurface() override
;
44 void WillActivateTreeOnThread(LayerTreeHostImpl
* impl
) override
;
46 virtual scoped_ptr
<CopyOutputRequest
> CreateCopyOutputRequest();
48 void ReadbackResult(scoped_ptr
<CopyOutputResult
> result
);
50 void BeginTest() override
;
51 void SetupTree() override
;
52 void AfterTest() override
;
53 void EndTest() override
;
57 scoped_refptr
<SolidColorLayer
> CreateSolidColorLayer(const gfx::Rect
& rect
,
59 scoped_refptr
<SolidColorLayer
> CreateSolidColorLayerWithBorder(
60 const gfx::Rect
& rect
,
63 SkColor border_color
);
64 scoped_refptr
<TextureLayer
> CreateTextureLayer(const gfx::Rect
& rect
,
65 const SkBitmap
& bitmap
);
67 void RunPixelTest(PixelTestType type
,
68 scoped_refptr
<Layer
> content_root
,
69 base::FilePath file_name
);
71 void RunSingleThreadedPixelTest(PixelTestType test_type
,
72 scoped_refptr
<Layer
> content_root
,
73 base::FilePath file_name
);
75 void RunPixelTestWithReadbackTarget(PixelTestType type
,
76 scoped_refptr
<Layer
> content_root
,
78 base::FilePath file_name
);
80 scoped_ptr
<SkBitmap
> CopyTextureMailboxToBitmap(
81 const gfx::Size
& size
,
82 const TextureMailbox
& texture_mailbox
);
84 void CopyBitmapToTextureMailboxAsTexture(
85 const SkBitmap
& bitmap
,
86 TextureMailbox
* texture_mailbox
,
87 scoped_ptr
<SingleReleaseCallback
>* release_callback
);
89 void ReleaseTextureMailbox(scoped_ptr
<gpu::GLInProcessContext
> context
,
94 void set_enlarge_texture_amount(const gfx::Vector2d
& enlarge_texture_amount
) {
95 enlarge_texture_amount_
= enlarge_texture_amount
;
98 // Common CSS colors defined for tests to use.
99 static const SkColor kCSSOrange
= 0xffffa500;
100 static const SkColor kCSSBrown
= 0xffa52a2a;
101 static const SkColor kCSSGreen
= 0xff008000;
103 gfx::DisableNullDrawGLBindings enable_pixel_output_
;
104 scoped_ptr
<PixelComparator
> pixel_comparator_
;
105 PixelTestType test_type_
;
106 scoped_refptr
<Layer
> content_root_
;
107 Layer
* readback_target_
;
108 base::FilePath ref_file_
;
109 scoped_ptr
<SkBitmap
> result_bitmap_
;
110 std::vector
<scoped_refptr
<TextureLayer
>> texture_layers_
;
111 int pending_texture_mailbox_callbacks_
;
112 bool impl_side_painting_
;
113 gfx::Vector2d enlarge_texture_amount_
;
118 #endif // CC_TEST_LAYER_TREE_PIXEL_TEST_H_