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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.h

Issue 2380683006: SPv2: Add support for tracking raster paint invalidations in testing. (Closed)
Patch Set: none Created 4 years, 2 months 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 PaintArtifactCompositor_h 5 #ifndef PaintArtifactCompositor_h
6 #define PaintArtifactCompositor_h 6 #define PaintArtifactCompositor_h
7 7
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "platform/PlatformExport.h" 9 #include "platform/PlatformExport.h"
10 #include "platform/RuntimeEnabledFeatures.h"
11 #include "platform/graphics/GraphicsLayerClient.h"
10 #include "wtf/Noncopyable.h" 12 #include "wtf/Noncopyable.h"
11 #include "wtf/PtrUtil.h" 13 #include "wtf/PtrUtil.h"
12 #include "wtf/Vector.h" 14 #include "wtf/Vector.h"
13 #include <memory> 15 #include <memory>
14 16
15 namespace cc { 17 namespace cc {
16 class Layer; 18 class Layer;
17 } 19 }
18 20
19 namespace gfx { 21 namespace gfx {
20 class Transform; 22 class Transform;
21 class Vector2dF; 23 class Vector2dF;
22 } 24 }
23 25
24 namespace blink { 26 namespace blink {
25 27
28 class DisplayItemClient;
29 class IntRect;
30 class JSONObject;
26 class PaintArtifact; 31 class PaintArtifact;
27 class WebLayer; 32 class WebLayer;
28 struct PaintChunk; 33 struct PaintChunk;
29 34
30 // Responsible for managing compositing in terms of a PaintArtifact. 35 // Responsible for managing compositing in terms of a PaintArtifact.
31 // 36 //
32 // Owns a subtree of the compositor layer tree, and updates it in response to 37 // Owns a subtree of the compositor layer tree, and updates it in response to
33 // changes in the paint artifact. 38 // changes in the paint artifact.
34 // 39 //
35 // PaintArtifactCompositor is the successor to PaintLayerCompositor, reflecting 40 // PaintArtifactCompositor is the successor to PaintLayerCompositor, reflecting
(...skipping 21 matching lines...) Expand all
57 // Returns extra information recorded during unit tests. 62 // Returns extra information recorded during unit tests.
58 // While not part of the normal output of this class, this provides a simple 63 // While not part of the normal output of this class, this provides a simple
59 // way of locating the layers of interest, since there are still a slew of 64 // way of locating the layers of interest, since there are still a slew of
60 // placeholder layers required. 65 // placeholder layers required.
61 struct ExtraDataForTesting { 66 struct ExtraDataForTesting {
62 Vector<scoped_refptr<cc::Layer>> contentLayers; 67 Vector<scoped_refptr<cc::Layer>> contentLayers;
63 }; 68 };
64 void enableExtraDataForTesting() { m_extraDataForTestingEnabled = true; } 69 void enableExtraDataForTesting() { m_extraDataForTestingEnabled = true; }
65 ExtraDataForTesting* getExtraDataForTesting() const { return m_extraDataForT esting.get(); } 70 ExtraDataForTesting* getExtraDataForTesting() const { return m_extraDataForT esting.get(); }
66 71
72 void setTracksPaintInvalidations(bool);
73 void resetTrackedPaintInvalidations();
74 bool hasTrackedPaintInvalidations() const;
75
76 std::unique_ptr<JSONObject> layersAsJSON(LayerTreeFlags) const;
77
67 private: 78 private:
68 PaintArtifactCompositor(); 79 PaintArtifactCompositor();
69 80
70 class ContentLayerClientImpl; 81 class ContentLayerClientImpl;
71 82
72 // Builds a leaf layer that represents a single paint chunk. 83 // Builds a leaf layer that represents a single paint chunk.
73 // Note: cc::Layer API assumes the layer bounds to start at (0, 0) but the b ounding box of 84 // Note: cc::Layer API assumes the layer bounds to start at (0, 0) but the b ounding box of
74 // a paint chunk does not necessarily start at (0, 0) and could even be nega tive. Internally 85 // a paint chunk does not necessarily start at (0, 0) and could even be nega tive. Internally
75 // the generated layer translates the paint chunk to align the bounding box to (0, 0) and 86 // the generated layer translates the paint chunk to align the bounding box to (0, 0) and
76 // return the actual origin of the paint chunk in output parameter layerOffs et. 87 // return the actual origin of the paint chunk in output parameter layerOffs et.
77 scoped_refptr<cc::Layer> layerForPaintChunk(const PaintArtifact&, const Pain tChunk&, gfx::Vector2dF& layerOffset, 88 scoped_refptr<cc::Layer> layerForPaintChunk(const PaintArtifact&, const Pain tChunk&, gfx::Vector2dF& layerOffset,
78 Vector<std::unique_ptr<ContentLayerClientImpl>>& newContentLayerClients) ; 89 Vector<std::unique_ptr<ContentLayerClientImpl>>& newContentLayerClients) ;
79 90
80 // Finds a client among the current vector of clients that matches the paint chunk's id, 91 // Finds a client among the current vector of clients that matches the paint chunk's id,
81 // or otherwise allocates a new one. 92 // or otherwise allocates a new one.
82 std::unique_ptr<ContentLayerClientImpl> clientForPaintChunk(const PaintChunk &); 93 std::unique_ptr<ContentLayerClientImpl> clientForPaintChunk(const PaintChunk &, const PaintArtifact&);
83 94
84 scoped_refptr<cc::Layer> m_rootLayer; 95 scoped_refptr<cc::Layer> m_rootLayer;
85 std::unique_ptr<WebLayer> m_webLayer; 96 std::unique_ptr<WebLayer> m_webLayer;
86 Vector<std::unique_ptr<ContentLayerClientImpl>> m_contentLayerClients; 97 Vector<std::unique_ptr<ContentLayerClientImpl>> m_contentLayerClients;
87 98
88 bool m_extraDataForTestingEnabled = false; 99 bool m_extraDataForTestingEnabled = false;
89 std::unique_ptr<ExtraDataForTesting> m_extraDataForTesting; 100 std::unique_ptr<ExtraDataForTesting> m_extraDataForTesting;
90 friend class StubChromeClientForSPv2; 101 friend class StubChromeClientForSPv2;
102
103 bool m_isTrackingPaintInvalidations;
91 }; 104 };
92 105
93 } // namespace blink 106 } // namespace blink
94 107
95 #endif // PaintArtifactCompositor_h 108 #endif // PaintArtifactCompositor_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698