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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp

Issue 1468753002: Reland of Remove blink::WebLayerClient and WebGraphicsLayerDebugInfo. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: do not access members of m_contentsLayer Created 5 years, 1 month 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 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 10 matching lines...) Expand all
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #include "config.h" 26 #include "config.h"
27 #include "platform/graphics/GraphicsLayer.h" 27 #include "platform/graphics/GraphicsLayer.h"
28 28
29 #include "SkImageFilter.h" 29 #include "SkImageFilter.h"
30 #include "SkMatrix44.h" 30 #include "SkMatrix44.h"
31 #include "base/trace_event/trace_event_argument.h"
32 #include "cc/layers/layer.h"
31 #include "platform/DragImage.h" 33 #include "platform/DragImage.h"
34 #include "platform/JSONValues.h"
32 #include "platform/TraceEvent.h" 35 #include "platform/TraceEvent.h"
33 #include "platform/geometry/FloatRect.h" 36 #include "platform/geometry/FloatRect.h"
34 #include "platform/geometry/LayoutRect.h" 37 #include "platform/geometry/LayoutRect.h"
35 #include "platform/graphics/BitmapImage.h" 38 #include "platform/graphics/BitmapImage.h"
36 #include "platform/graphics/FirstPaintInvalidationTracking.h" 39 #include "platform/graphics/FirstPaintInvalidationTracking.h"
37 #include "platform/graphics/GraphicsContext.h" 40 #include "platform/graphics/GraphicsContext.h"
38 #include "platform/graphics/GraphicsLayerFactory.h" 41 #include "platform/graphics/GraphicsLayerFactory.h"
39 #include "platform/graphics/Image.h" 42 #include "platform/graphics/Image.h"
40 #include "platform/graphics/LinkHighlight.h" 43 #include "platform/graphics/LinkHighlight.h"
41 #include "platform/graphics/filters/SkiaImageFilterBuilder.h" 44 #include "platform/graphics/filters/SkiaImageFilterBuilder.h"
42 #include "platform/graphics/paint/DrawingRecorder.h" 45 #include "platform/graphics/paint/DrawingRecorder.h"
43 #include "platform/graphics/paint/PaintController.h" 46 #include "platform/graphics/paint/PaintController.h"
44 #include "platform/scroll/ScrollableArea.h" 47 #include "platform/scroll/ScrollableArea.h"
45 #include "platform/text/TextStream.h" 48 #include "platform/text/TextStream.h"
46 #include "public/platform/Platform.h" 49 #include "public/platform/Platform.h"
47 #include "public/platform/WebCompositorAnimation.h" 50 #include "public/platform/WebCompositorAnimation.h"
48 #include "public/platform/WebCompositorSupport.h" 51 #include "public/platform/WebCompositorSupport.h"
49 #include "public/platform/WebFilterOperations.h" 52 #include "public/platform/WebFilterOperations.h"
50 #include "public/platform/WebFloatPoint.h" 53 #include "public/platform/WebFloatPoint.h"
51 #include "public/platform/WebFloatRect.h" 54 #include "public/platform/WebFloatRect.h"
52 #include "public/platform/WebGraphicsLayerDebugInfo.h"
53 #include "public/platform/WebLayer.h" 55 #include "public/platform/WebLayer.h"
54 #include "public/platform/WebPoint.h" 56 #include "public/platform/WebPoint.h"
55 #include "public/platform/WebSize.h" 57 #include "public/platform/WebSize.h"
56 #include "wtf/CurrentTime.h" 58 #include "wtf/CurrentTime.h"
57 #include "wtf/HashMap.h" 59 #include "wtf/HashMap.h"
58 #include "wtf/HashSet.h" 60 #include "wtf/HashSet.h"
61 #include "wtf/text/StringUTF8Adaptor.h"
59 #include "wtf/text/WTFString.h" 62 #include "wtf/text/WTFString.h"
60 #include <algorithm> 63 #include <algorithm>
61 64
62 #ifndef NDEBUG 65 #ifndef NDEBUG
63 #include <stdio.h> 66 #include <stdio.h>
64 #endif 67 #endif
65 68
66 namespace blink { 69 namespace blink {
67 70
68 static bool s_drawDebugRedFill = true; 71 static bool s_drawDebugRedFill = true;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 , m_3dRenderingContext(0) 120 , m_3dRenderingContext(0)
118 { 121 {
119 #if ENABLE(ASSERT) 122 #if ENABLE(ASSERT)
120 if (m_client) 123 if (m_client)
121 m_client->verifyNotPainting(); 124 m_client->verifyNotPainting();
122 #endif 125 #endif
123 126
124 m_contentLayerDelegate = adoptPtr(new ContentLayerDelegate(this)); 127 m_contentLayerDelegate = adoptPtr(new ContentLayerDelegate(this));
125 m_layer = adoptPtr(Platform::current()->compositorSupport()->createContentLa yer(m_contentLayerDelegate.get())); 128 m_layer = adoptPtr(Platform::current()->compositorSupport()->createContentLa yer(m_contentLayerDelegate.get()));
126 m_layer->layer()->setDrawsContent(m_drawsContent && m_contentsVisible); 129 m_layer->layer()->setDrawsContent(m_drawsContent && m_contentsVisible);
127 m_layer->layer()->setWebLayerClient(this); 130 m_layer->layer()->setLayerClient(this);
128 131
129 // TODO(rbyers): Expose control over this to the web - crbug.com/489802: 132 // TODO(rbyers): Expose control over this to the web - crbug.com/489802:
130 setScrollBlocksOn(WebScrollBlocksOnStartTouch | WebScrollBlocksOnWheelEvent) ; 133 setScrollBlocksOn(WebScrollBlocksOnStartTouch | WebScrollBlocksOnWheelEvent) ;
131 } 134 }
132 135
133 GraphicsLayer::~GraphicsLayer() 136 GraphicsLayer::~GraphicsLayer()
134 { 137 {
135 for (size_t i = 0; i < m_linkHighlights.size(); ++i) 138 for (size_t i = 0; i < m_linkHighlights.size(); ++i)
136 m_linkHighlights[i]->clearCurrentGraphicsLayer(); 139 m_linkHighlights[i]->clearCurrentGraphicsLayer();
137 m_linkHighlights.clear(); 140 m_linkHighlights.clear();
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 if (childrenChanged) 450 if (childrenChanged)
448 updateChildList(); 451 updateChildList();
449 } 452 }
450 453
451 void GraphicsLayer::setupContentsLayer(WebLayer* contentsLayer) 454 void GraphicsLayer::setupContentsLayer(WebLayer* contentsLayer)
452 { 455 {
453 ASSERT(contentsLayer); 456 ASSERT(contentsLayer);
454 m_contentsLayer = contentsLayer; 457 m_contentsLayer = contentsLayer;
455 m_contentsLayerId = m_contentsLayer->id(); 458 m_contentsLayerId = m_contentsLayer->id();
456 459
457 m_contentsLayer->setWebLayerClient(this); 460 m_contentsLayer->setLayerClient(this);
458 m_contentsLayer->setTransformOrigin(FloatPoint3D()); 461 m_contentsLayer->setTransformOrigin(FloatPoint3D());
459 m_contentsLayer->setUseParentBackfaceVisibility(true); 462 m_contentsLayer->setUseParentBackfaceVisibility(true);
460 463
461 // It is necessary to call setDrawsContent as soon as we receive the new con tentsLayer, for 464 // It is necessary to call setDrawsContent as soon as we receive the new con tentsLayer, for
462 // the correctness of early exit conditions in setDrawsContent() and setCont entsVisible(). 465 // the correctness of early exit conditions in setDrawsContent() and setCont entsVisible().
463 m_contentsLayer->setDrawsContent(m_contentsVisible); 466 m_contentsLayer->setDrawsContent(m_contentsVisible);
464 467
465 // Insert the content layer first. Video elements require this, because they have 468 // Insert the content layer first. Video elements require this, because they have
466 // shadow content that must display in front of the video. 469 // shadow content that must display in front of the video.
467 m_layer->layer()->insertChild(m_contentsLayer, 0); 470 m_layer->layer()->insertChild(m_contentsLayer, 0);
(...skipping 10 matching lines...) Expand all
478 481
479 m_contentsLayer = 0; 482 m_contentsLayer = 0;
480 m_contentsLayerId = 0; 483 m_contentsLayerId = 0;
481 } 484 }
482 485
483 GraphicsLayerDebugInfo& GraphicsLayer::debugInfo() 486 GraphicsLayerDebugInfo& GraphicsLayer::debugInfo()
484 { 487 {
485 return m_debugInfo; 488 return m_debugInfo;
486 } 489 }
487 490
488 WebGraphicsLayerDebugInfo* GraphicsLayer::takeDebugInfoFor(WebLayer* layer)
489 {
490 GraphicsLayerDebugInfo* clone = m_debugInfo.clone();
491 clone->setDebugName(debugName(layer));
492 return clone;
493 }
494
495 WebLayer* GraphicsLayer::contentsLayerIfRegistered() 491 WebLayer* GraphicsLayer::contentsLayerIfRegistered()
496 { 492 {
497 clearContentsLayerIfUnregistered(); 493 clearContentsLayerIfUnregistered();
498 return m_contentsLayer; 494 return m_contentsLayer;
499 } 495 }
500 496
501 void GraphicsLayer::resetTrackedPaintInvalidations() 497 void GraphicsLayer::resetTrackedPaintInvalidations()
502 { 498 {
503 paintInvalidationTrackingMap().remove(this); 499 paintInvalidationTrackingMap().remove(this);
504 } 500 }
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 return json; 760 return json;
765 } 761 }
766 762
767 String GraphicsLayer::layerTreeAsText(LayerTreeFlags flags) const 763 String GraphicsLayer::layerTreeAsText(LayerTreeFlags flags) const
768 { 764 {
769 RenderingContextMap renderingContextMap; 765 RenderingContextMap renderingContextMap;
770 RefPtr<JSONObject> json = layerTreeAsJSON(flags, renderingContextMap); 766 RefPtr<JSONObject> json = layerTreeAsJSON(flags, renderingContextMap);
771 return json->toPrettyJSONString(); 767 return json->toPrettyJSONString();
772 } 768 }
773 769
774 String GraphicsLayer::debugName(WebLayer* webLayer) const 770 static const cc::Layer* ccLayerForWebLayer(const WebLayer* webLayer)
771 {
772 return webLayer ? webLayer->ccLayer() : nullptr;
773 }
774
775 String GraphicsLayer::debugName(cc::Layer* layer) const
775 { 776 {
776 String name; 777 String name;
777 if (!m_client) 778 if (!m_client)
778 return name; 779 return name;
779 780
780 String highlightDebugName; 781 String highlightDebugName;
781 for (size_t i = 0; i < m_linkHighlights.size(); ++i) { 782 for (size_t i = 0; i < m_linkHighlights.size(); ++i) {
782 if (webLayer == m_linkHighlights[i]->layer()) { 783 if (layer == ccLayerForWebLayer(m_linkHighlights[i]->layer())) {
783 highlightDebugName = "LinkHighlight[" + String::number(i) + "] for " + m_client->debugName(this); 784 highlightDebugName = "LinkHighlight[" + String::number(i) + "] for " + m_client->debugName(this);
784 break; 785 break;
785 } 786 }
786 } 787 }
787 788
788 if (webLayer == m_contentsLayer) { 789 if (layer->id() == m_contentsLayerId) {
789 name = "ContentsLayer for " + m_client->debugName(this); 790 name = "ContentsLayer for " + m_client->debugName(this);
790 } else if (!highlightDebugName.isEmpty()) { 791 } else if (!highlightDebugName.isEmpty()) {
791 name = highlightDebugName; 792 name = highlightDebugName;
792 } else if (webLayer == m_layer->layer()) { 793 } else if (layer == ccLayerForWebLayer(m_layer->layer())) {
793 name = m_client->debugName(this); 794 name = m_client->debugName(this);
794 } else { 795 } else {
795 ASSERT_NOT_REACHED(); 796 ASSERT_NOT_REACHED();
796 } 797 }
797 return name; 798 return name;
798 } 799 }
799 800
800 void GraphicsLayer::setCompositingReasons(CompositingReasons reasons) 801 void GraphicsLayer::setCompositingReasons(CompositingReasons reasons)
801 { 802 {
802 m_debugInfo.setCompositingReasons(reasons); 803 m_debugInfo.setCompositingReasons(reasons);
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
1136 if (m_paintingPhase == phase) 1137 if (m_paintingPhase == phase)
1137 return; 1138 return;
1138 m_paintingPhase = phase; 1139 m_paintingPhase = phase;
1139 setNeedsDisplay(); 1140 setNeedsDisplay();
1140 } 1141 }
1141 1142
1142 void GraphicsLayer::addLinkHighlight(LinkHighlight* linkHighlight) 1143 void GraphicsLayer::addLinkHighlight(LinkHighlight* linkHighlight)
1143 { 1144 {
1144 ASSERT(linkHighlight && !m_linkHighlights.contains(linkHighlight)); 1145 ASSERT(linkHighlight && !m_linkHighlights.contains(linkHighlight));
1145 m_linkHighlights.append(linkHighlight); 1146 m_linkHighlights.append(linkHighlight);
1146 linkHighlight->layer()->setWebLayerClient(this); 1147 linkHighlight->layer()->setLayerClient(this);
1147 updateChildList(); 1148 updateChildList();
1148 } 1149 }
1149 1150
1150 void GraphicsLayer::removeLinkHighlight(LinkHighlight* linkHighlight) 1151 void GraphicsLayer::removeLinkHighlight(LinkHighlight* linkHighlight)
1151 { 1152 {
1152 m_linkHighlights.remove(m_linkHighlights.find(linkHighlight)); 1153 m_linkHighlights.remove(m_linkHighlights.find(linkHighlight));
1153 updateChildList(); 1154 updateChildList();
1154 } 1155 }
1155 1156
1156 void GraphicsLayer::setScrollableArea(ScrollableArea* scrollableArea, bool isVie wport) 1157 void GraphicsLayer::setScrollableArea(ScrollableArea* scrollableArea, bool isVie wport)
(...skipping 27 matching lines...) Expand all
1184 { 1185 {
1185 if (m_scrollableArea) { 1186 if (m_scrollableArea) {
1186 DoublePoint newPosition = m_scrollableArea->minimumScrollPosition() + to DoubleSize(m_layer->layer()->scrollPositionDouble()); 1187 DoublePoint newPosition = m_scrollableArea->minimumScrollPosition() + to DoubleSize(m_layer->layer()->scrollPositionDouble());
1187 1188
1188 // FrameView::setScrollPosition doesn't work for compositor commits (int eracts poorly with programmatic scroll animations) 1189 // FrameView::setScrollPosition doesn't work for compositor commits (int eracts poorly with programmatic scroll animations)
1189 // so we need to use the ScrollableArea version. The FrameView method sh ould go away soon anyway. 1190 // so we need to use the ScrollableArea version. The FrameView method sh ould go away soon anyway.
1190 m_scrollableArea->ScrollableArea::setScrollPosition(newPosition, Composi torScroll); 1191 m_scrollableArea->ScrollableArea::setScrollPosition(newPosition, Composi torScroll);
1191 } 1192 }
1192 } 1193 }
1193 1194
1195 scoped_refptr<base::trace_event::ConvertableToTraceFormat> GraphicsLayer::TakeDe bugInfo(cc::Layer* layer)
1196 {
1197 scoped_refptr<base::trace_event::TracedValue> tracedValue = m_debugInfo.asTr acedValue();
1198 tracedValue->SetString("layer_name", WTF::StringUTF8Adaptor(debugName(layer) ).asStringPiece());
1199 return tracedValue;
1200 }
1201
1194 PaintController* GraphicsLayer::paintController() 1202 PaintController* GraphicsLayer::paintController()
1195 { 1203 {
1196 if (!m_paintController) 1204 if (!m_paintController)
1197 m_paintController = PaintController::create(); 1205 m_paintController = PaintController::create();
1198 return m_paintController.get(); 1206 return m_paintController.get();
1199 } 1207 }
1200 1208
1201 } // namespace blink 1209 } // namespace blink
1202 1210
1203 #ifndef NDEBUG 1211 #ifndef NDEBUG
1204 void showGraphicsLayerTree(const blink::GraphicsLayer* layer) 1212 void showGraphicsLayerTree(const blink::GraphicsLayer* layer)
1205 { 1213 {
1206 if (!layer) { 1214 if (!layer) {
1207 fprintf(stderr, "Cannot showGraphicsLayerTree for (nil).\n"); 1215 fprintf(stderr, "Cannot showGraphicsLayerTree for (nil).\n");
1208 return; 1216 return;
1209 } 1217 }
1210 1218
1211 String output = layer->layerTreeAsText(blink::LayerTreeIncludesDebugInfo); 1219 String output = layer->layerTreeAsText(blink::LayerTreeIncludesDebugInfo);
1212 fprintf(stderr, "%s\n", output.utf8().data()); 1220 fprintf(stderr, "%s\n", output.utf8().data());
1213 } 1221 }
1214 #endif 1222 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698