OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010, 2011 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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 | 162 |
163 CompositedLayerMapping::CompositedLayerMapping(RenderLayer& layer) | 163 CompositedLayerMapping::CompositedLayerMapping(RenderLayer& layer) |
164 : m_owningLayer(layer) | 164 : m_owningLayer(layer) |
165 , m_isMainFrameRenderViewLayer(false) | 165 , m_isMainFrameRenderViewLayer(false) |
166 , m_requiresOwnBackingStoreForIntrinsicReasons(true) | 166 , m_requiresOwnBackingStoreForIntrinsicReasons(true) |
167 , m_requiresOwnBackingStoreForAncestorReasons(true) | 167 , m_requiresOwnBackingStoreForAncestorReasons(true) |
168 , m_canCompositeFilters(false) | 168 , m_canCompositeFilters(false) |
169 , m_backgroundLayerPaintsFixedRootBackground(false) | 169 , m_backgroundLayerPaintsFixedRootBackground(false) |
170 , m_needToUpdateGraphicsLayer(false) | 170 , m_needToUpdateGraphicsLayer(false) |
171 , m_needToUpdateGraphicsLayerOfAllDecendants(false) | 171 , m_needToUpdateGraphicsLayerOfAllDecendants(false) |
| 172 , m_scrollingContentsAreEmpty(false) |
172 { | 173 { |
173 if (layer.isRootLayer() && renderer()->frame()->isMainFrame()) | 174 if (layer.isRootLayer() && renderer()->frame()->isMainFrame()) |
174 m_isMainFrameRenderViewLayer = true; | 175 m_isMainFrameRenderViewLayer = true; |
175 | 176 |
176 createPrimaryGraphicsLayer(); | 177 createPrimaryGraphicsLayer(); |
177 } | 178 } |
178 | 179 |
179 CompositedLayerMapping::~CompositedLayerMapping() | 180 CompositedLayerMapping::~CompositedLayerMapping() |
180 { | 181 { |
181 // Hits in compositing/squashing/squash-onto-nephew.html. | 182 // Hits in compositing/squashing/squash-onto-nephew.html. |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 m_graphicsLayer = nullptr; | 246 m_graphicsLayer = nullptr; |
246 m_foregroundLayer = nullptr; | 247 m_foregroundLayer = nullptr; |
247 m_backgroundLayer = nullptr; | 248 m_backgroundLayer = nullptr; |
248 m_childContainmentLayer = nullptr; | 249 m_childContainmentLayer = nullptr; |
249 m_childTransformLayer = nullptr; | 250 m_childTransformLayer = nullptr; |
250 m_maskLayer = nullptr; | 251 m_maskLayer = nullptr; |
251 m_childClippingMaskLayer = nullptr; | 252 m_childClippingMaskLayer = nullptr; |
252 | 253 |
253 m_scrollingLayer = nullptr; | 254 m_scrollingLayer = nullptr; |
254 m_scrollingContentsLayer = nullptr; | 255 m_scrollingContentsLayer = nullptr; |
| 256 m_scrollingBlockSelectionLayer = nullptr; |
255 } | 257 } |
256 | 258 |
257 void CompositedLayerMapping::updateOpacity(const RenderStyle* style) | 259 void CompositedLayerMapping::updateOpacity(const RenderStyle* style) |
258 { | 260 { |
259 m_graphicsLayer->setOpacity(compositingOpacity(style->opacity())); | 261 m_graphicsLayer->setOpacity(compositingOpacity(style->opacity())); |
260 } | 262 } |
261 | 263 |
262 void CompositedLayerMapping::updateTransform(const RenderStyle* style) | 264 void CompositedLayerMapping::updateTransform(const RenderStyle* style) |
263 { | 265 { |
264 // FIXME: This could use m_owningLayer.transform(), but that currently has t
ransform-origin | 266 // FIXME: This could use m_owningLayer.transform(), but that currently has t
ransform-origin |
(...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
856 m_scrollingContentsLayer->setSize(scrollSize); | 858 m_scrollingContentsLayer->setSize(scrollSize); |
857 // FIXME: The paint offset and the scroll offset should really be separate c
oncepts. | 859 // FIXME: The paint offset and the scroll offset should really be separate c
oncepts. |
858 m_scrollingContentsLayer->setOffsetFromRenderer(scrollingContentsOffset, Gra
phicsLayer::DontSetNeedsDisplay); | 860 m_scrollingContentsLayer->setOffsetFromRenderer(scrollingContentsOffset, Gra
phicsLayer::DontSetNeedsDisplay); |
859 | 861 |
860 if (m_foregroundLayer) { | 862 if (m_foregroundLayer) { |
861 if (m_foregroundLayer->size() != m_scrollingContentsLayer->size()) | 863 if (m_foregroundLayer->size() != m_scrollingContentsLayer->size()) |
862 m_foregroundLayer->setSize(m_scrollingContentsLayer->size()); | 864 m_foregroundLayer->setSize(m_scrollingContentsLayer->size()); |
863 m_foregroundLayer->setNeedsDisplay(); | 865 m_foregroundLayer->setNeedsDisplay(); |
864 m_foregroundLayer->setOffsetFromRenderer(m_scrollingContentsLayer->offse
tFromRenderer()); | 866 m_foregroundLayer->setOffsetFromRenderer(m_scrollingContentsLayer->offse
tFromRenderer()); |
865 } | 867 } |
| 868 |
| 869 updateScrollingBlockSelection(); |
866 } | 870 } |
867 | 871 |
868 void CompositedLayerMapping::updateChildClippingMaskLayerGeometry() | 872 void CompositedLayerMapping::updateChildClippingMaskLayerGeometry() |
869 { | 873 { |
870 if (!m_childClippingMaskLayer || !renderer()->style()->clipPath()) | 874 if (!m_childClippingMaskLayer || !renderer()->style()->clipPath()) |
871 return; | 875 return; |
872 RenderBox* renderBox = toRenderBox(renderer()); | 876 RenderBox* renderBox = toRenderBox(renderer()); |
873 IntRect clientBox = enclosingIntRect(renderBox->clientBoxRect()); | 877 IntRect clientBox = enclosingIntRect(renderBox->clientBoxRect()); |
874 | 878 |
875 m_childClippingMaskLayer->setPosition(m_graphicsLayer->position()); | 879 m_childClippingMaskLayer->setPosition(m_graphicsLayer->position()); |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1004 } | 1008 } |
1005 | 1009 |
1006 void CompositedLayerMapping::updatePaintingPhases() | 1010 void CompositedLayerMapping::updatePaintingPhases() |
1007 { | 1011 { |
1008 m_graphicsLayer->setPaintingPhase(paintingPhaseForPrimaryLayer()); | 1012 m_graphicsLayer->setPaintingPhase(paintingPhaseForPrimaryLayer()); |
1009 if (m_scrollingContentsLayer) { | 1013 if (m_scrollingContentsLayer) { |
1010 GraphicsLayerPaintingPhase paintPhase = GraphicsLayerPaintOverflowConten
ts | GraphicsLayerPaintCompositedScroll; | 1014 GraphicsLayerPaintingPhase paintPhase = GraphicsLayerPaintOverflowConten
ts | GraphicsLayerPaintCompositedScroll; |
1011 if (!m_foregroundLayer) | 1015 if (!m_foregroundLayer) |
1012 paintPhase |= GraphicsLayerPaintForeground; | 1016 paintPhase |= GraphicsLayerPaintForeground; |
1013 m_scrollingContentsLayer->setPaintingPhase(paintPhase); | 1017 m_scrollingContentsLayer->setPaintingPhase(paintPhase); |
| 1018 m_scrollingBlockSelectionLayer->setPaintingPhase(paintPhase); |
1014 } | 1019 } |
1015 } | 1020 } |
1016 | 1021 |
1017 void CompositedLayerMapping::updateContentsRect() | 1022 void CompositedLayerMapping::updateContentsRect() |
1018 { | 1023 { |
1019 m_graphicsLayer->setContentsRect(pixelSnappedIntRect(contentsBox())); | 1024 m_graphicsLayer->setContentsRect(pixelSnappedIntRect(contentsBox())); |
1020 } | 1025 } |
1021 | 1026 |
| 1027 void CompositedLayerMapping::updateScrollingBlockSelection() |
| 1028 { |
| 1029 if (!m_scrollingBlockSelectionLayer) |
| 1030 return; |
| 1031 |
| 1032 if (!m_scrollingContentsAreEmpty) { |
| 1033 // In this case, the selection will be painted directly into m_scrolling
ContentsLayer. |
| 1034 m_scrollingBlockSelectionLayer->setDrawsContent(false); |
| 1035 return; |
| 1036 } |
| 1037 |
| 1038 const IntRect blockSelectionGapsBounds = m_owningLayer.blockSelectionGapsBou
nds(); |
| 1039 const bool shouldDrawContent = !blockSelectionGapsBounds.isEmpty(); |
| 1040 m_scrollingBlockSelectionLayer->setDrawsContent(shouldDrawContent); |
| 1041 if (!shouldDrawContent) |
| 1042 return; |
| 1043 |
| 1044 const IntPoint position = blockSelectionGapsBounds.location() + m_owningLaye
r.scrollableArea()->adjustedScrollOffset(); |
| 1045 if (m_scrollingBlockSelectionLayer->size() == blockSelectionGapsBounds.size(
) && m_scrollingBlockSelectionLayer->position() == position) |
| 1046 return; |
| 1047 |
| 1048 m_scrollingBlockSelectionLayer->setPosition(position); |
| 1049 m_scrollingBlockSelectionLayer->setSize(blockSelectionGapsBounds.size()); |
| 1050 m_scrollingBlockSelectionLayer->setOffsetFromRenderer(toIntSize(blockSelecti
onGapsBounds.location()), GraphicsLayer::SetNeedsDisplay); |
| 1051 } |
| 1052 |
1022 void CompositedLayerMapping::updateDrawsContent() | 1053 void CompositedLayerMapping::updateDrawsContent() |
1023 { | 1054 { |
1024 if (m_scrollingLayer) { | 1055 if (m_scrollingLayer) { |
1025 // We don't have to consider overflow controls, because we know that the
scrollbars are drawn elsewhere. | 1056 // We don't have to consider overflow controls, because we know that the
scrollbars are drawn elsewhere. |
1026 // m_graphicsLayer only needs backing store if the non-scrolling parts (
background, outlines, borders, shadows etc) need to paint. | 1057 // m_graphicsLayer only needs backing store if the non-scrolling parts (
background, outlines, borders, shadows etc) need to paint. |
1027 // m_scrollingLayer never has backing store. | 1058 // m_scrollingLayer never has backing store. |
1028 // m_scrollingContentsLayer only needs backing store if the scrolled con
tents need to paint. | 1059 // m_scrollingContentsLayer only needs backing store if the scrolled con
tents need to paint. |
1029 bool hasNonScrollingPaintedContent = m_owningLayer.hasVisibleContent() &
& m_owningLayer.hasBoxDecorationsOrBackground(); | 1060 bool hasNonScrollingPaintedContent = m_owningLayer.hasVisibleContent() &
& m_owningLayer.hasBoxDecorationsOrBackground(); |
1030 m_graphicsLayer->setDrawsContent(hasNonScrollingPaintedContent); | 1061 m_graphicsLayer->setDrawsContent(hasNonScrollingPaintedContent); |
1031 | 1062 |
1032 bool hasScrollingPaintedContent = m_owningLayer.hasVisibleContent() && (
renderer()->hasBackground() || paintsChildren()); | 1063 m_scrollingContentsAreEmpty = !m_owningLayer.hasVisibleContent() || !(re
nderer()->hasBackground() || paintsChildren()); |
1033 m_scrollingContentsLayer->setDrawsContent(hasScrollingPaintedContent); | 1064 m_scrollingContentsLayer->setDrawsContent(!m_scrollingContentsAreEmpty); |
| 1065 |
| 1066 updateScrollingBlockSelection(); |
1034 return; | 1067 return; |
1035 } | 1068 } |
1036 | 1069 |
1037 bool hasPaintedContent = containsPaintedContent(); | 1070 bool hasPaintedContent = containsPaintedContent(); |
1038 if (hasPaintedContent && isAcceleratedCanvas(renderer())) { | 1071 if (hasPaintedContent && isAcceleratedCanvas(renderer())) { |
1039 CanvasRenderingContext* context = toHTMLCanvasElement(renderer()->node()
)->renderingContext(); | 1072 CanvasRenderingContext* context = toHTMLCanvasElement(renderer()->node()
)->renderingContext(); |
1040 // Content layer may be null if context is lost. | 1073 // Content layer may be null if context is lost. |
1041 if (blink::WebLayer* contentLayer = context->platformLayer()) { | 1074 if (blink::WebLayer* contentLayer = context->platformLayer()) { |
1042 Color bgColor(Color::transparent); | 1075 Color bgColor(Color::transparent); |
1043 if (contentLayerSupportsDirectBackgroundComposition(renderer())) { | 1076 if (contentLayerSupportsDirectBackgroundComposition(renderer())) { |
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1407 // Outer layer which corresponds with the scroll view. | 1440 // Outer layer which corresponds with the scroll view. |
1408 m_scrollingLayer = createGraphicsLayer(CompositingReasonLayerForScro
llingContainer); | 1441 m_scrollingLayer = createGraphicsLayer(CompositingReasonLayerForScro
llingContainer); |
1409 m_scrollingLayer->setDrawsContent(false); | 1442 m_scrollingLayer->setDrawsContent(false); |
1410 m_scrollingLayer->setMasksToBounds(true); | 1443 m_scrollingLayer->setMasksToBounds(true); |
1411 | 1444 |
1412 // Inner layer which renders the content that scrolls. | 1445 // Inner layer which renders the content that scrolls. |
1413 m_scrollingContentsLayer = createGraphicsLayer(CompositingReasonLaye
rForScrollingContents); | 1446 m_scrollingContentsLayer = createGraphicsLayer(CompositingReasonLaye
rForScrollingContents); |
1414 m_scrollingContentsLayer->setDrawsContent(true); | 1447 m_scrollingContentsLayer->setDrawsContent(true); |
1415 m_scrollingLayer->addChild(m_scrollingContentsLayer.get()); | 1448 m_scrollingLayer->addChild(m_scrollingContentsLayer.get()); |
1416 | 1449 |
| 1450 m_scrollingBlockSelectionLayer = createGraphicsLayer(CompositingReas
onLayerForScrollingBlockSelection); |
| 1451 m_scrollingBlockSelectionLayer->setDrawsContent(true); |
| 1452 m_scrollingContentsLayer->addChild(m_scrollingBlockSelectionLayer.ge
t()); |
| 1453 |
1417 layerChanged = true; | 1454 layerChanged = true; |
1418 if (scrollingCoordinator) | 1455 if (scrollingCoordinator) |
1419 scrollingCoordinator->scrollableAreaScrollLayerDidChange(m_ownin
gLayer.scrollableArea()); | 1456 scrollingCoordinator->scrollableAreaScrollLayerDidChange(m_ownin
gLayer.scrollableArea()); |
1420 } | 1457 } |
1421 } else if (m_scrollingLayer) { | 1458 } else if (m_scrollingLayer) { |
1422 m_scrollingLayer = nullptr; | 1459 m_scrollingLayer = nullptr; |
1423 m_scrollingContentsLayer = nullptr; | 1460 m_scrollingContentsLayer = nullptr; |
| 1461 m_scrollingBlockSelectionLayer = nullptr; |
1424 layerChanged = true; | 1462 layerChanged = true; |
1425 if (scrollingCoordinator) | 1463 if (scrollingCoordinator) |
1426 scrollingCoordinator->scrollableAreaScrollLayerDidChange(m_owningLay
er.scrollableArea()); | 1464 scrollingCoordinator->scrollableAreaScrollLayerDidChange(m_owningLay
er.scrollableArea()); |
1427 } | 1465 } |
1428 | 1466 |
1429 return layerChanged; | 1467 return layerChanged; |
1430 } | 1468 } |
1431 | 1469 |
1432 static void updateScrollParentForGraphicsLayer(GraphicsLayer* layer, GraphicsLay
er* topmostLayer, RenderLayer* scrollParent, ScrollingCoordinator* scrollingCoor
dinator) | 1470 static void updateScrollParentForGraphicsLayer(GraphicsLayer* layer, GraphicsLay
er* topmostLayer, RenderLayer* scrollParent, ScrollingCoordinator* scrollingCoor
dinator) |
1433 { | 1471 { |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1728 | 1766 |
1729 LayoutRect CompositedLayerMapping::contentsBox() const | 1767 LayoutRect CompositedLayerMapping::contentsBox() const |
1730 { | 1768 { |
1731 LayoutRect contentsBox = contentsRect(renderer()); | 1769 LayoutRect contentsBox = contentsRect(renderer()); |
1732 contentsBox.move(contentOffsetInCompositingLayer()); | 1770 contentsBox.move(contentOffsetInCompositingLayer()); |
1733 return contentsBox; | 1771 return contentsBox; |
1734 } | 1772 } |
1735 | 1773 |
1736 GraphicsLayer* CompositedLayerMapping::parentForSublayers() const | 1774 GraphicsLayer* CompositedLayerMapping::parentForSublayers() const |
1737 { | 1775 { |
| 1776 if (m_scrollingBlockSelectionLayer) |
| 1777 return m_scrollingBlockSelectionLayer.get(); |
| 1778 |
1738 if (m_scrollingContentsLayer) | 1779 if (m_scrollingContentsLayer) |
1739 return m_scrollingContentsLayer.get(); | 1780 return m_scrollingContentsLayer.get(); |
1740 | 1781 |
1741 if (m_childContainmentLayer) | 1782 if (m_childContainmentLayer) |
1742 return m_childContainmentLayer.get(); | 1783 return m_childContainmentLayer.get(); |
1743 | 1784 |
1744 if (m_childTransformLayer) | 1785 if (m_childTransformLayer) |
1745 return m_childTransformLayer.get(); | 1786 return m_childTransformLayer.get(); |
1746 | 1787 |
1747 return m_graphicsLayer.get(); | 1788 return m_graphicsLayer.get(); |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2052 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Paint", "data"
, InspectorPaintEvent::data(m_owningLayer.renderer(), clip, graphicsLayer)); | 2093 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Paint", "data"
, InspectorPaintEvent::data(m_owningLayer.renderer(), clip, graphicsLayer)); |
2053 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.stack"), "
CallStack", "stack", InspectorCallStackEvent::currentCallStack()); | 2094 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.stack"), "
CallStack", "stack", InspectorCallStackEvent::currentCallStack()); |
2054 // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeli
ne migrates to tracing. | 2095 // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeli
ne migrates to tracing. |
2055 InspectorInstrumentation::willPaint(m_owningLayer.renderer(), graphicsLayer)
; | 2096 InspectorInstrumentation::willPaint(m_owningLayer.renderer(), graphicsLayer)
; |
2056 | 2097 |
2057 if (graphicsLayer == m_graphicsLayer.get() | 2098 if (graphicsLayer == m_graphicsLayer.get() |
2058 || graphicsLayer == m_foregroundLayer.get() | 2099 || graphicsLayer == m_foregroundLayer.get() |
2059 || graphicsLayer == m_backgroundLayer.get() | 2100 || graphicsLayer == m_backgroundLayer.get() |
2060 || graphicsLayer == m_maskLayer.get() | 2101 || graphicsLayer == m_maskLayer.get() |
2061 || graphicsLayer == m_childClippingMaskLayer.get() | 2102 || graphicsLayer == m_childClippingMaskLayer.get() |
2062 || graphicsLayer == m_scrollingContentsLayer.get()) { | 2103 || graphicsLayer == m_scrollingContentsLayer.get() |
| 2104 || graphicsLayer == m_scrollingBlockSelectionLayer.get()) { |
2063 | 2105 |
2064 GraphicsLayerPaintInfo paintInfo; | 2106 GraphicsLayerPaintInfo paintInfo; |
2065 paintInfo.renderLayer = &m_owningLayer; | 2107 paintInfo.renderLayer = &m_owningLayer; |
2066 paintInfo.compositedBounds = compositedBounds(); | 2108 paintInfo.compositedBounds = compositedBounds(); |
2067 paintInfo.offsetFromRenderer = graphicsLayer->offsetFromRenderer(); | 2109 paintInfo.offsetFromRenderer = graphicsLayer->offsetFromRenderer(); |
2068 paintInfo.paintingPhase = paintingPhase; | 2110 paintInfo.paintingPhase = paintingPhase; |
2069 paintInfo.isBackgroundLayer = (graphicsLayer == m_backgroundLayer); | 2111 paintInfo.isBackgroundLayer = (graphicsLayer == m_backgroundLayer); |
2070 | 2112 |
2071 // We have to use the same root as for hit testing, because both methods
can compute and cache clipRects. | 2113 // We have to use the same root as for hit testing, because both methods
can compute and cache clipRects. |
2072 doPaintTask(paintInfo, &context, clip); | 2114 doPaintTask(paintInfo, &context, clip); |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2214 } else if (graphicsLayer == m_layerForHorizontalScrollbar.get()) { | 2256 } else if (graphicsLayer == m_layerForHorizontalScrollbar.get()) { |
2215 name = "Horizontal Scrollbar Layer"; | 2257 name = "Horizontal Scrollbar Layer"; |
2216 } else if (graphicsLayer == m_layerForVerticalScrollbar.get()) { | 2258 } else if (graphicsLayer == m_layerForVerticalScrollbar.get()) { |
2217 name = "Vertical Scrollbar Layer"; | 2259 name = "Vertical Scrollbar Layer"; |
2218 } else if (graphicsLayer == m_layerForScrollCorner.get()) { | 2260 } else if (graphicsLayer == m_layerForScrollCorner.get()) { |
2219 name = "Scroll Corner Layer"; | 2261 name = "Scroll Corner Layer"; |
2220 } else if (graphicsLayer == m_scrollingLayer.get()) { | 2262 } else if (graphicsLayer == m_scrollingLayer.get()) { |
2221 name = "Scrolling Layer"; | 2263 name = "Scrolling Layer"; |
2222 } else if (graphicsLayer == m_scrollingContentsLayer.get()) { | 2264 } else if (graphicsLayer == m_scrollingContentsLayer.get()) { |
2223 name = "Scrolling Contents Layer"; | 2265 name = "Scrolling Contents Layer"; |
| 2266 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { |
| 2267 name = "Scrolling Block Selection Layer"; |
2224 } else { | 2268 } else { |
2225 ASSERT_NOT_REACHED(); | 2269 ASSERT_NOT_REACHED(); |
2226 } | 2270 } |
2227 | 2271 |
2228 return name; | 2272 return name; |
2229 } | 2273 } |
2230 | 2274 |
2231 } // namespace WebCore | 2275 } // namespace WebCore |
OLD | NEW |