Roll WebRTC 9745:9761, Libjingle 9742:9761
[chromium-blink-merge.git] / cc / layers / content_layer_client.h
blobdeb9d619e32ccad27e1d387b0327c8f9a59bf69d
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_CONTENT_LAYER_CLIENT_H_
6 #define CC_LAYERS_CONTENT_LAYER_CLIENT_H_
8 #include "cc/base/cc_export.h"
9 #include "cc/playback/display_item_list.h"
11 class SkCanvas;
13 namespace gfx {
14 class Rect;
17 namespace cc {
19 class CC_EXPORT ContentLayerClient {
20 public:
21 enum PaintingControlSetting {
22 PAINTING_BEHAVIOR_NORMAL,
23 DISPLAY_LIST_CONSTRUCTION_DISABLED,
24 DISPLAY_LIST_CACHING_DISABLED,
25 DISPLAY_LIST_PAINTING_DISABLED
28 virtual void PaintContents(SkCanvas* canvas,
29 const gfx::Rect& clip,
30 PaintingControlSetting painting_status) = 0;
32 virtual scoped_refptr<DisplayItemList> PaintContentsToDisplayList(
33 const gfx::Rect& clip,
34 PaintingControlSetting painting_status) = 0;
36 // If true the layer may skip clearing the background before rasterizing,
37 // because it will cover any uncleared data with content.
38 virtual bool FillsBoundsCompletely() const = 0;
40 // Returns an estimate of the current memory usage within this object,
41 // excluding memory shared with painting artifacts (i.e.,
42 // DisplayItemList). Should be invoked after PaintContentsToDisplayList,
43 // so that the result includes data cached internally during painting.
44 virtual size_t GetApproximateUnsharedMemoryUsage() const = 0;
46 protected:
47 virtual ~ContentLayerClient() {}
50 } // namespace cc
52 #endif // CC_LAYERS_CONTENT_LAYER_CLIENT_H_