OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
3 * Copyright (C) 2013 Intel Corporation. All rights reserved. | 3 * Copyright (C) 2013 Intel Corporation. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 20 matching lines...) Expand all Loading... |
31 #include "platform/geometry/FloatPoint.h" | 31 #include "platform/geometry/FloatPoint.h" |
32 #include "platform/geometry/FloatPoint3D.h" | 32 #include "platform/geometry/FloatPoint3D.h" |
33 #include "platform/geometry/FloatSize.h" | 33 #include "platform/geometry/FloatSize.h" |
34 #include "platform/geometry/IntRect.h" | 34 #include "platform/geometry/IntRect.h" |
35 #include "platform/graphics/Color.h" | 35 #include "platform/graphics/Color.h" |
36 #include "platform/graphics/GraphicsLayerClient.h" | 36 #include "platform/graphics/GraphicsLayerClient.h" |
37 #include "platform/graphics/GraphicsLayerDebugInfo.h" | 37 #include "platform/graphics/GraphicsLayerDebugInfo.h" |
38 #include "platform/graphics/OpaqueRectTrackingContentLayerDelegate.h" | 38 #include "platform/graphics/OpaqueRectTrackingContentLayerDelegate.h" |
39 #include "platform/graphics/filters/FilterOperations.h" | 39 #include "platform/graphics/filters/FilterOperations.h" |
40 #include "platform/transforms/TransformationMatrix.h" | 40 #include "platform/transforms/TransformationMatrix.h" |
41 #include "public/platform/WebCompositorAnimationDelegate.h" | 41 #include "public/platform/WebAnimationDelegate.h" |
42 #include "public/platform/WebContentLayer.h" | 42 #include "public/platform/WebContentLayer.h" |
43 #include "public/platform/WebImageLayer.h" | 43 #include "public/platform/WebImageLayer.h" |
44 #include "public/platform/WebLayerClient.h" | 44 #include "public/platform/WebLayerClient.h" |
45 #include "public/platform/WebLayerScrollClient.h" | 45 #include "public/platform/WebLayerScrollClient.h" |
46 #include "public/platform/WebNinePatchLayer.h" | 46 #include "public/platform/WebNinePatchLayer.h" |
47 #include "wtf/OwnPtr.h" | 47 #include "wtf/OwnPtr.h" |
48 #include "wtf/PassOwnPtr.h" | 48 #include "wtf/PassOwnPtr.h" |
49 #include "wtf/Vector.h" | 49 #include "wtf/Vector.h" |
50 | 50 |
51 namespace blink { | 51 namespace blink { |
52 class GraphicsLayerFactoryChromium; | 52 class GraphicsLayerFactoryChromium; |
53 class WebCompositorAnimation; | 53 class WebAnimation; |
54 class WebLayer; | 54 class WebLayer; |
55 } | 55 } |
56 | 56 |
57 namespace blink { | 57 namespace blink { |
58 | 58 |
59 class FloatRect; | 59 class FloatRect; |
60 class GraphicsContext; | 60 class GraphicsContext; |
61 class GraphicsLayer; | 61 class GraphicsLayer; |
62 class GraphicsLayerFactory; | 62 class GraphicsLayerFactory; |
63 class Image; | 63 class Image; |
64 class JSONObject; | 64 class JSONObject; |
65 class ScrollableArea; | 65 class ScrollableArea; |
66 class TextStream; | 66 class TextStream; |
67 | 67 |
68 // FIXME: find a better home for this declaration. | 68 // FIXME: find a better home for this declaration. |
69 class PLATFORM_EXPORT LinkHighlightClient { | 69 class PLATFORM_EXPORT LinkHighlightClient { |
70 public: | 70 public: |
71 virtual void invalidate() = 0; | 71 virtual void invalidate() = 0; |
72 virtual void clearCurrentGraphicsLayer() = 0; | 72 virtual void clearCurrentGraphicsLayer() = 0; |
73 virtual WebLayer* layer() = 0; | 73 virtual blink::WebLayer* layer() = 0; |
74 | 74 |
75 protected: | 75 protected: |
76 virtual ~LinkHighlightClient() { } | 76 virtual ~LinkHighlightClient() { } |
77 }; | 77 }; |
78 | 78 |
79 typedef Vector<GraphicsLayer*, 64> GraphicsLayerVector; | 79 typedef Vector<GraphicsLayer*, 64> GraphicsLayerVector; |
80 | 80 |
81 // GraphicsLayer is an abstraction for a rendering surface with backing store, | 81 // GraphicsLayer is an abstraction for a rendering surface with backing store, |
82 // which may have associated transformation and animations. | 82 // which may have associated transformation and animations. |
83 | 83 |
84 class PLATFORM_EXPORT GraphicsLayer : public GraphicsContextPainter, public WebC
ompositorAnimationDelegate, public WebLayerScrollClient, public WebLayerClient { | 84 class PLATFORM_EXPORT GraphicsLayer : public GraphicsContextPainter, public blin
k::WebAnimationDelegate, public blink::WebLayerScrollClient, public blink::WebLa
yerClient { |
85 WTF_MAKE_NONCOPYABLE(GraphicsLayer); WTF_MAKE_FAST_ALLOCATED; | 85 WTF_MAKE_NONCOPYABLE(GraphicsLayer); WTF_MAKE_FAST_ALLOCATED; |
86 public: | 86 public: |
87 static PassOwnPtr<GraphicsLayer> create(GraphicsLayerFactory*, GraphicsLayer
Client*); | 87 static PassOwnPtr<GraphicsLayer> create(GraphicsLayerFactory*, GraphicsLayer
Client*); |
88 | 88 |
89 virtual ~GraphicsLayer(); | 89 virtual ~GraphicsLayer(); |
90 | 90 |
91 GraphicsLayerClient* client() const { return m_client; } | 91 GraphicsLayerClient* client() const { return m_client; } |
92 | 92 |
93 // WebLayerClient implementation. | 93 // blink::WebLayerClient implementation. |
94 virtual WebGraphicsLayerDebugInfo* takeDebugInfoFor(WebLayer*) OVERRIDE; | 94 virtual blink::WebGraphicsLayerDebugInfo* takeDebugInfoFor(blink::WebLayer*)
OVERRIDE; |
95 | 95 |
96 GraphicsLayerDebugInfo& debugInfo(); | 96 GraphicsLayerDebugInfo& debugInfo(); |
97 | 97 |
98 void setCompositingReasons(CompositingReasons); | 98 void setCompositingReasons(CompositingReasons); |
99 CompositingReasons compositingReasons() const { return m_debugInfo.compositi
ngReasons(); } | 99 CompositingReasons compositingReasons() const { return m_debugInfo.compositi
ngReasons(); } |
100 void setOwnerNodeId(int); | 100 void setOwnerNodeId(int); |
101 | 101 |
102 GraphicsLayer* parent() const { return m_parent; }; | 102 GraphicsLayer* parent() const { return m_parent; }; |
103 void setParent(GraphicsLayer*); // Internal use only. | 103 void setParent(GraphicsLayer*); // Internal use only. |
104 | 104 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 void setShouldFlattenTransform(bool); | 151 void setShouldFlattenTransform(bool); |
152 void setRenderingContext(int id); | 152 void setRenderingContext(int id); |
153 void setMasksToBounds(bool); | 153 void setMasksToBounds(bool); |
154 | 154 |
155 bool drawsContent() const { return m_drawsContent; } | 155 bool drawsContent() const { return m_drawsContent; } |
156 void setDrawsContent(bool); | 156 void setDrawsContent(bool); |
157 | 157 |
158 bool contentsAreVisible() const { return m_contentsVisible; } | 158 bool contentsAreVisible() const { return m_contentsVisible; } |
159 void setContentsVisible(bool); | 159 void setContentsVisible(bool); |
160 | 160 |
161 void setScrollParent(WebLayer*); | 161 void setScrollParent(blink::WebLayer*); |
162 void setClipParent(WebLayer*); | 162 void setClipParent(blink::WebLayer*); |
163 | 163 |
164 // For special cases, e.g. drawing missing tiles on Android. | 164 // For special cases, e.g. drawing missing tiles on Android. |
165 // The compositor should never paint this color in normal cases because the
RenderLayer | 165 // The compositor should never paint this color in normal cases because the
RenderLayer |
166 // will paint background by itself. | 166 // will paint background by itself. |
167 void setBackgroundColor(const Color&); | 167 void setBackgroundColor(const Color&); |
168 | 168 |
169 // opaque means that we know the layer contents have no alpha | 169 // opaque means that we know the layer contents have no alpha |
170 bool contentsOpaque() const { return m_contentsOpaque; } | 170 bool contentsOpaque() const { return m_contentsOpaque; } |
171 void setContentsOpaque(bool); | 171 void setContentsOpaque(bool); |
172 | 172 |
173 bool backfaceVisibility() const { return m_backfaceVisibility; } | 173 bool backfaceVisibility() const { return m_backfaceVisibility; } |
174 void setBackfaceVisibility(bool visible); | 174 void setBackfaceVisibility(bool visible); |
175 | 175 |
176 float opacity() const { return m_opacity; } | 176 float opacity() const { return m_opacity; } |
177 void setOpacity(float); | 177 void setOpacity(float); |
178 | 178 |
179 void setBlendMode(WebBlendMode); | 179 void setBlendMode(blink::WebBlendMode); |
180 void setIsRootForIsolatedGroup(bool); | 180 void setIsRootForIsolatedGroup(bool); |
181 | 181 |
182 void setFilters(const FilterOperations&); | 182 void setFilters(const FilterOperations&); |
183 | 183 |
184 // Some GraphicsLayers paint only the foreground or the background content | 184 // Some GraphicsLayers paint only the foreground or the background content |
185 void setPaintingPhase(GraphicsLayerPaintingPhase); | 185 void setPaintingPhase(GraphicsLayerPaintingPhase); |
186 | 186 |
187 void setNeedsDisplay(); | 187 void setNeedsDisplay(); |
188 // mark the given rect (in layer coords) as needing dispay. Never goes deep. | 188 // mark the given rect (in layer coords) as needing dispay. Never goes deep. |
189 void setNeedsDisplayInRect(const FloatRect&); | 189 void setNeedsDisplayInRect(const FloatRect&); |
190 | 190 |
191 void setContentsNeedsDisplay(); | 191 void setContentsNeedsDisplay(); |
192 | 192 |
193 // Set that the position/size of the contents (image or video). | 193 // Set that the position/size of the contents (image or video). |
194 void setContentsRect(const IntRect&); | 194 void setContentsRect(const IntRect&); |
195 | 195 |
196 // Return true if the animation is handled by the compositing system. If thi
s returns | 196 // Return true if the animation is handled by the compositing system. If thi
s returns |
197 // false, the animation will be run by AnimationController. | 197 // false, the animation will be run by AnimationController. |
198 // These methods handle both transitions and keyframe animations. | 198 // These methods handle both transitions and keyframe animations. |
199 bool addAnimation(PassOwnPtr<WebCompositorAnimation>); | 199 bool addAnimation(PassOwnPtr<blink::WebAnimation>); |
200 void pauseAnimation(int animationId, double /*timeOffset*/); | 200 void pauseAnimation(int animationId, double /*timeOffset*/); |
201 void removeAnimation(int animationId); | 201 void removeAnimation(int animationId); |
202 | 202 |
203 // Layer contents | 203 // Layer contents |
204 void setContentsToImage(Image*); | 204 void setContentsToImage(Image*); |
205 void setContentsToNinePatch(Image*, const IntRect& aperture); | 205 void setContentsToNinePatch(Image*, const IntRect& aperture); |
206 void setContentsToPlatformLayer(WebLayer* layer) { setContentsTo(layer); } | 206 void setContentsToPlatformLayer(blink::WebLayer* layer) { setContentsTo(laye
r); } |
207 bool hasContentsLayer() const { return m_contentsLayer; } | 207 bool hasContentsLayer() const { return m_contentsLayer; } |
208 | 208 |
209 // For hosting this GraphicsLayer in a native layer hierarchy. | 209 // For hosting this GraphicsLayer in a native layer hierarchy. |
210 WebLayer* platformLayer() const; | 210 blink::WebLayer* platformLayer() const; |
211 | 211 |
212 typedef HashMap<int, int> RenderingContextMap; | 212 typedef HashMap<int, int> RenderingContextMap; |
213 PassRefPtr<JSONObject> layerTreeAsJSON(LayerTreeFlags, RenderingContextMap&)
const; | 213 PassRefPtr<JSONObject> layerTreeAsJSON(LayerTreeFlags, RenderingContextMap&)
const; |
214 | 214 |
215 int paintCount() const { return m_paintCount; } | 215 int paintCount() const { return m_paintCount; } |
216 | 216 |
217 // Return a string with a human readable form of the layer tree, If debug is
true | 217 // Return a string with a human readable form of the layer tree, If debug is
true |
218 // pointers for the layers and timing data will be included in the returned
string. | 218 // pointers for the layers and timing data will be included in the returned
string. |
219 String layerTreeAsText(LayerTreeFlags = LayerTreeNormal) const; | 219 String layerTreeAsText(LayerTreeFlags = LayerTreeNormal) const; |
220 | 220 |
221 void resetTrackedRepaints(); | 221 void resetTrackedRepaints(); |
222 void addRepaintRect(const FloatRect&); | 222 void addRepaintRect(const FloatRect&); |
223 | 223 |
224 void addLinkHighlight(LinkHighlightClient*); | 224 void addLinkHighlight(LinkHighlightClient*); |
225 void removeLinkHighlight(LinkHighlightClient*); | 225 void removeLinkHighlight(LinkHighlightClient*); |
226 // Exposed for tests | 226 // Exposed for tests |
227 unsigned numLinkHighlights() { return m_linkHighlights.size(); } | 227 unsigned numLinkHighlights() { return m_linkHighlights.size(); } |
228 LinkHighlightClient* linkHighlight(int i) { return m_linkHighlights[i]; } | 228 LinkHighlightClient* linkHighlight(int i) { return m_linkHighlights[i]; } |
229 | 229 |
230 void setScrollableArea(ScrollableArea*, bool isMainFrame); | 230 void setScrollableArea(ScrollableArea*, bool isMainFrame); |
231 ScrollableArea* scrollableArea() const { return m_scrollableArea; } | 231 ScrollableArea* scrollableArea() const { return m_scrollableArea; } |
232 | 232 |
233 WebContentLayer* contentLayer() const { return m_layer.get(); } | 233 blink::WebContentLayer* contentLayer() const { return m_layer.get(); } |
234 | 234 |
235 static void registerContentsLayer(WebLayer*); | 235 static void registerContentsLayer(blink::WebLayer*); |
236 static void unregisterContentsLayer(WebLayer*); | 236 static void unregisterContentsLayer(blink::WebLayer*); |
237 | 237 |
238 // GraphicsContextPainter implementation. | 238 // GraphicsContextPainter implementation. |
239 virtual void paint(GraphicsContext&, const IntRect& clip) OVERRIDE; | 239 virtual void paint(GraphicsContext&, const IntRect& clip) OVERRIDE; |
240 | 240 |
241 // WebCompositorAnimationDelegate implementation. | 241 // WebAnimationDelegate implementation. |
242 virtual void notifyAnimationStarted(double monotonicTime, WebCompositorAnima
tion::TargetProperty) OVERRIDE; | 242 virtual void notifyAnimationStarted(double monotonicTime, blink::WebAnimatio
n::TargetProperty) OVERRIDE; |
243 virtual void notifyAnimationFinished(double monotonicTime, WebCompositorAnim
ation::TargetProperty) OVERRIDE; | 243 virtual void notifyAnimationFinished(double monotonicTime, blink::WebAnimati
on::TargetProperty) OVERRIDE; |
244 | 244 |
245 // WebLayerScrollClient implementation. | 245 // WebLayerScrollClient implementation. |
246 virtual void didScroll() OVERRIDE; | 246 virtual void didScroll() OVERRIDE; |
247 | 247 |
248 protected: | 248 protected: |
249 String debugName(WebLayer*) const; | 249 String debugName(blink::WebLayer*) const; |
250 | 250 |
251 explicit GraphicsLayer(GraphicsLayerClient*); | 251 explicit GraphicsLayer(GraphicsLayerClient*); |
252 // GraphicsLayerFactoryChromium that wants to create a GraphicsLayer need to
be friends. | 252 // GraphicsLayerFactoryChromium that wants to create a GraphicsLayer need to
be friends. |
253 friend class GraphicsLayerFactoryChromium; | 253 friend class blink::GraphicsLayerFactoryChromium; |
254 | 254 |
255 // Exposed for tests. | 255 // Exposed for tests. |
256 virtual WebLayer* contentsLayer() const { return m_contentsLayer; } | 256 virtual blink::WebLayer* contentsLayer() const { return m_contentsLayer; } |
257 | 257 |
258 private: | 258 private: |
259 // Callback from the underlying graphics system to draw layer contents. | 259 // Callback from the underlying graphics system to draw layer contents. |
260 void paintGraphicsLayerContents(GraphicsContext&, const IntRect& clip); | 260 void paintGraphicsLayerContents(GraphicsContext&, const IntRect& clip); |
261 | 261 |
262 // Adds a child without calling updateChildList(), so that adding children | 262 // Adds a child without calling updateChildList(), so that adding children |
263 // can be batched before updating. | 263 // can be batched before updating. |
264 void addChildInternal(GraphicsLayer*); | 264 void addChildInternal(GraphicsLayer*); |
265 | 265 |
266 #if ENABLE(ASSERT) | 266 #if ENABLE(ASSERT) |
267 bool hasAncestor(GraphicsLayer*) const; | 267 bool hasAncestor(GraphicsLayer*) const; |
268 #endif | 268 #endif |
269 | 269 |
270 void setReplicatedLayer(GraphicsLayer* layer) { m_replicatedLayer = layer; } | 270 void setReplicatedLayer(GraphicsLayer* layer) { m_replicatedLayer = layer; } |
271 | 271 |
272 void incrementPaintCount() { ++m_paintCount; } | 272 void incrementPaintCount() { ++m_paintCount; } |
273 | 273 |
274 // Helper functions used by settors to keep layer's the state consistent. | 274 // Helper functions used by settors to keep layer's the state consistent. |
275 void updateChildList(); | 275 void updateChildList(); |
276 void updateLayerIsDrawable(); | 276 void updateLayerIsDrawable(); |
277 void updateContentsRect(); | 277 void updateContentsRect(); |
278 | 278 |
279 void setContentsTo(WebLayer*); | 279 void setContentsTo(blink::WebLayer*); |
280 void setupContentsLayer(WebLayer*); | 280 void setupContentsLayer(blink::WebLayer*); |
281 void clearContentsLayerIfUnregistered(); | 281 void clearContentsLayerIfUnregistered(); |
282 WebLayer* contentsLayerIfRegistered(); | 282 blink::WebLayer* contentsLayerIfRegistered(); |
283 | 283 |
284 GraphicsLayerClient* m_client; | 284 GraphicsLayerClient* m_client; |
285 | 285 |
286 // Offset from the owning renderer | 286 // Offset from the owning renderer |
287 IntSize m_offsetFromRenderer; | 287 IntSize m_offsetFromRenderer; |
288 | 288 |
289 // Position is relative to the parent GraphicsLayer | 289 // Position is relative to the parent GraphicsLayer |
290 FloatPoint m_position; | 290 FloatPoint m_position; |
291 FloatSize m_size; | 291 FloatSize m_size; |
292 | 292 |
293 TransformationMatrix m_transform; | 293 TransformationMatrix m_transform; |
294 FloatPoint3D m_transformOrigin; | 294 FloatPoint3D m_transformOrigin; |
295 | 295 |
296 Color m_backgroundColor; | 296 Color m_backgroundColor; |
297 float m_opacity; | 297 float m_opacity; |
298 | 298 |
299 WebBlendMode m_blendMode; | 299 blink::WebBlendMode m_blendMode; |
300 | 300 |
301 bool m_hasTransformOrigin : 1; | 301 bool m_hasTransformOrigin : 1; |
302 bool m_contentsOpaque : 1; | 302 bool m_contentsOpaque : 1; |
303 bool m_shouldFlattenTransform: 1; | 303 bool m_shouldFlattenTransform: 1; |
304 bool m_backfaceVisibility : 1; | 304 bool m_backfaceVisibility : 1; |
305 bool m_masksToBounds : 1; | 305 bool m_masksToBounds : 1; |
306 bool m_drawsContent : 1; | 306 bool m_drawsContent : 1; |
307 bool m_contentsVisible : 1; | 307 bool m_contentsVisible : 1; |
308 bool m_isRootForIsolatedGroup : 1; | 308 bool m_isRootForIsolatedGroup : 1; |
309 | 309 |
(...skipping 10 matching lines...) Expand all Loading... |
320 | 320 |
321 GraphicsLayer* m_replicaLayer; // A layer that replicates this layer. We onl
y allow one, for now. | 321 GraphicsLayer* m_replicaLayer; // A layer that replicates this layer. We onl
y allow one, for now. |
322 // The replica is not parented; this is the p
rimary reference to it. | 322 // The replica is not parented; this is the p
rimary reference to it. |
323 GraphicsLayer* m_replicatedLayer; // For a replica layer, a reference to the
original layer. | 323 GraphicsLayer* m_replicatedLayer; // For a replica layer, a reference to the
original layer. |
324 FloatPoint m_replicatedLayerPosition; // For a replica layer, the position o
f the replica. | 324 FloatPoint m_replicatedLayerPosition; // For a replica layer, the position o
f the replica. |
325 | 325 |
326 IntRect m_contentsRect; | 326 IntRect m_contentsRect; |
327 | 327 |
328 int m_paintCount; | 328 int m_paintCount; |
329 | 329 |
330 OwnPtr<WebContentLayer> m_layer; | 330 OwnPtr<blink::WebContentLayer> m_layer; |
331 OwnPtr<WebImageLayer> m_imageLayer; | 331 OwnPtr<blink::WebImageLayer> m_imageLayer; |
332 OwnPtr<WebNinePatchLayer> m_ninePatchLayer; | 332 OwnPtr<blink::WebNinePatchLayer> m_ninePatchLayer; |
333 WebLayer* m_contentsLayer; | 333 blink::WebLayer* m_contentsLayer; |
334 // We don't have ownership of m_contentsLayer, but we do want to know if a g
iven layer is the | 334 // We don't have ownership of m_contentsLayer, but we do want to know if a g
iven layer is the |
335 // same as our current layer in setContentsTo(). Since m_contentsLayer may b
e deleted at this point, | 335 // same as our current layer in setContentsTo(). Since m_contentsLayer may b
e deleted at this point, |
336 // we stash an ID away when we know m_contentsLayer is alive and use that fo
r comparisons from that point | 336 // we stash an ID away when we know m_contentsLayer is alive and use that fo
r comparisons from that point |
337 // on. | 337 // on. |
338 int m_contentsLayerId; | 338 int m_contentsLayerId; |
339 | 339 |
340 Vector<LinkHighlightClient*> m_linkHighlights; | 340 Vector<LinkHighlightClient*> m_linkHighlights; |
341 | 341 |
342 OwnPtr<OpaqueRectTrackingContentLayerDelegate> m_opaqueRectTrackingContentLa
yerDelegate; | 342 OwnPtr<OpaqueRectTrackingContentLayerDelegate> m_opaqueRectTrackingContentLa
yerDelegate; |
343 | 343 |
344 ScrollableArea* m_scrollableArea; | 344 ScrollableArea* m_scrollableArea; |
345 GraphicsLayerDebugInfo m_debugInfo; | 345 GraphicsLayerDebugInfo m_debugInfo; |
346 int m_3dRenderingContext; | 346 int m_3dRenderingContext; |
347 }; | 347 }; |
348 | 348 |
349 } // namespace blink | 349 } // namespace blink |
350 | 350 |
351 #ifndef NDEBUG | 351 #ifndef NDEBUG |
352 // Outside the WebCore namespace for ease of invocation from gdb. | 352 // Outside the WebCore namespace for ease of invocation from gdb. |
353 void PLATFORM_EXPORT showGraphicsLayerTree(const blink::GraphicsLayer*); | 353 void PLATFORM_EXPORT showGraphicsLayerTree(const blink::GraphicsLayer*); |
354 #endif | 354 #endif |
355 | 355 |
356 #endif // GraphicsLayer_h | 356 #endif // GraphicsLayer_h |
OLD | NEW |