1 // Copyright 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.
5 #ifndef CC_LAYERS_PICTURE_LAYER_H_
6 #define CC_LAYERS_PICTURE_LAYER_H_
8 #include "cc/base/invalidation_region.h"
9 #include "cc/debug/devtools_instrumentation.h"
10 #include "cc/debug/micro_benchmark_controller.h"
11 #include "cc/layers/layer.h"
12 #include "cc/trees/occlusion_tracker.h"
16 class ContentLayerClient
;
17 class RecordingSource
;
18 class ResourceUpdateQueue
;
20 class CC_EXPORT PictureLayer
: public Layer
{
22 static scoped_refptr
<PictureLayer
> Create(ContentLayerClient
* client
);
27 scoped_ptr
<LayerImpl
> CreateLayerImpl(LayerTreeImpl
* tree_impl
) override
;
28 void SetLayerTreeHost(LayerTreeHost
* host
) override
;
29 void PushPropertiesTo(LayerImpl
* layer
) override
;
30 void SetNeedsDisplayRect(const gfx::Rect
& layer_rect
) override
;
31 bool Update(ResourceUpdateQueue
* queue
,
32 const OcclusionTracker
<Layer
>* occlusion
) override
;
33 void SetIsMask(bool is_mask
) override
;
34 bool SupportsLCDText() const override
;
35 skia::RefPtr
<SkPicture
> GetPicture() const override
;
36 bool IsSuitableForGpuRasterization() const override
;
38 void RunMicroBenchmark(MicroBenchmark
* benchmark
) override
;
40 ContentLayerClient
* client() { return client_
; }
42 RecordingSource
* GetRecordingSourceForTesting() {
43 return recording_source_
.get();
47 explicit PictureLayer(ContentLayerClient
* client
);
48 // Allow tests to inject a recording source.
49 PictureLayer(ContentLayerClient
* client
, scoped_ptr
<RecordingSource
> source
);
50 ~PictureLayer() override
;
52 bool HasDrawableContent() const override
;
53 void UpdateCanUseLCDText();
56 ContentLayerClient
* client_
;
57 scoped_ptr
<RecordingSource
> recording_source_
;
58 devtools_instrumentation::
59 ScopedLayerObjectTracker instrumentation_object_tracker_
;
60 // Invalidation to use the next time update is called.
61 InvalidationRegion pending_invalidation_
;
62 // Invalidation from the last time update was called.
63 Region recording_invalidation_
;
64 gfx::Rect last_updated_visible_content_rect_
;
66 int update_source_frame_number_
;
67 bool can_use_lcd_text_last_frame_
;
69 DISALLOW_COPY_AND_ASSIGN(PictureLayer
);
74 #endif // CC_LAYERS_PICTURE_LAYER_H_