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

Side by Side Diff: Source/core/rendering/RenderObject.cpp

Issue 357703002: Introduce builders for tracing event arguments (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2009 Google Inc. All rights reserved. 7 * Copyright (C) 2009 Google Inc. All rights reserved.
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 1446 matching lines...) Expand 10 before | Expand all | Expand 10 after
1457 paintInvalidationContainer = parentRenderFlowThread; 1457 paintInvalidationContainer = parentRenderFlowThread;
1458 } 1458 }
1459 return paintInvalidationContainer ? paintInvalidationContainer : view(); 1459 return paintInvalidationContainer ? paintInvalidationContainer : view();
1460 } 1460 }
1461 1461
1462 bool RenderObject::isPaintInvalidationContainer() const 1462 bool RenderObject::isPaintInvalidationContainer() const
1463 { 1463 {
1464 return hasLayer() && toRenderLayerModelObject(this)->layer()->isPaintInvalid ationContainer(); 1464 return hasLayer() && toRenderLayerModelObject(this)->layer()->isPaintInvalid ationContainer();
1465 } 1465 }
1466 1466
1467 template<typename T> PassRefPtr<JSONValue> jsonObjectForRect(const T& rect) 1467 template<typename T> void addJsonObjectForRect(TracedValue& value, const char* n ame, const T& rect)
1468 { 1468 {
1469 RefPtr<JSONObject> object = JSONObject::create(); 1469 value.beginDictionary(name)
1470 object->setNumber("x", rect.x()); 1470 .setDouble("x", rect.x())
1471 object->setNumber("y", rect.y()); 1471 .setDouble("y", rect.y())
1472 object->setNumber("width", rect.width()); 1472 .setDouble("width", rect.width())
1473 object->setNumber("height", rect.height()); 1473 .setDouble("height", rect.height())
1474 return object.release(); 1474 .endDictionary();
1475 } 1475 }
1476 1476
1477 static PassRefPtr<JSONValue> jsonObjectForPaintInvalidationInfo(const IntRect& r ect, const String& invalidationReason) 1477 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForPaintInvali dationInfo(const IntRect& rect, const String& invalidationReason)
1478 { 1478 {
1479 RefPtr<JSONObject> object = JSONObject::create(); 1479 TracedValue value;
1480 object->setValue("rect", jsonObjectForRect(rect)); 1480 addJsonObjectForRect(value, "rect", rect);
1481 object->setString("invalidation_reason", invalidationReason); 1481 value.setString("invalidation_reason", invalidationReason);
1482 return object.release(); 1482 return value.finish();
1483 } 1483 }
1484 1484
1485 LayoutRect RenderObject::computePaintInvalidationRect(const RenderLayerModelObje ct* paintInvalidationContainer) const 1485 LayoutRect RenderObject::computePaintInvalidationRect(const RenderLayerModelObje ct* paintInvalidationContainer) const
1486 { 1486 {
1487 return clippedOverflowRectForPaintInvalidation(paintInvalidationContainer); 1487 return clippedOverflowRectForPaintInvalidation(paintInvalidationContainer);
1488 } 1488 }
1489 1489
1490 void RenderObject::invalidatePaintUsingContainer(const RenderLayerModelObject* p aintInvalidationContainer, const IntRect& r, InvalidationReason invalidationReas on) const 1490 void RenderObject::invalidatePaintUsingContainer(const RenderLayerModelObject* p aintInvalidationContainer, const IntRect& r, InvalidationReason invalidationReas on) const
1491 { 1491 {
1492 if (r.isEmpty()) 1492 if (r.isEmpty())
1493 return; 1493 return;
1494 1494
1495 // FIXME: This should be an assert, but editing/selection can trigger this c ase to invalidate 1495 // FIXME: This should be an assert, but editing/selection can trigger this c ase to invalidate
1496 // the selection. crbug.com/368140. 1496 // the selection. crbug.com/368140.
1497 if (!isRooted()) 1497 if (!isRooted())
1498 return; 1498 return;
1499 1499
1500 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("blink.invalidation"), "RenderObject: :invalidatePaintUsingContainer()", 1500 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("blink.invalidation"), "RenderObject: :invalidatePaintUsingContainer()",
1501 "object", this->debugName().ascii(), 1501 "object", this->debugName().ascii(),
1502 "info", TracedValue::fromJSONValue(jsonObjectForPaintInvalidationInfo(r, invalidationReasonToString(invalidationReason)))); 1502 "info", jsonObjectForPaintInvalidationInfo(r, invalidationReasonToString (invalidationReason)));
1503 1503
1504 // For querying RenderLayer::compositingState() 1504 // For querying RenderLayer::compositingState()
1505 DisableCompositingQueryAsserts disabler; 1505 DisableCompositingQueryAsserts disabler;
1506 1506
1507 if (paintInvalidationContainer->isRenderFlowThread()) { 1507 if (paintInvalidationContainer->isRenderFlowThread()) {
1508 toRenderFlowThread(paintInvalidationContainer)->repaintRectangleInRegion s(r); 1508 toRenderFlowThread(paintInvalidationContainer)->repaintRectangleInRegion s(r);
1509 return; 1509 return;
1510 } 1510 }
1511 1511
1512 if (paintInvalidationContainer->hasFilter() && paintInvalidationContainer->l ayer()->requiresFullLayerImageForFilters()) { 1512 if (paintInvalidationContainer->hasFilter() && paintInvalidationContainer->l ayer()->requiresFullLayerImageForFilters()) {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1610 return; 1610 return;
1611 1611
1612 clearPaintInvalidationState(); 1612 clearPaintInvalidationState();
1613 1613
1614 for (RenderObject* child = slowFirstChild(); child; child = child->nextSibli ng()) { 1614 for (RenderObject* child = slowFirstChild(); child; child = child->nextSibli ng()) {
1615 if (!child->isOutOfFlowPositioned()) 1615 if (!child->isOutOfFlowPositioned())
1616 child->invalidateTreeAfterLayout(paintInvalidationContainer); 1616 child->invalidateTreeAfterLayout(paintInvalidationContainer);
1617 } 1617 }
1618 } 1618 }
1619 1619
1620 static PassRefPtr<JSONValue> jsonObjectForOldAndNewRects(const LayoutRect& oldRe ct, const LayoutRect& newRect) 1620 static PassRefPtr<TraceEvent::ConvertableToTraceFormat> jsonObjectForOldAndNewRe cts(const LayoutRect& oldRect, const LayoutRect& newRect)
1621 { 1621 {
1622 RefPtr<JSONObject> object = JSONObject::create(); 1622 TracedValue value;
1623 1623 addJsonObjectForRect(value, "old", oldRect);
1624 object->setValue("old", jsonObjectForRect(oldRect)); 1624 addJsonObjectForRect(value, "new", newRect);
1625 object->setValue("new", jsonObjectForRect(newRect)); 1625 return value.finish();
1626 return object.release();
1627 } 1626 }
1628 1627
1629 bool RenderObject::invalidatePaintAfterLayoutIfNeeded(const RenderLayerModelObje ct* paintInvalidationContainer, InvalidationReason invalidationReason, 1628 bool RenderObject::invalidatePaintAfterLayoutIfNeeded(const RenderLayerModelObje ct* paintInvalidationContainer, InvalidationReason invalidationReason,
1630 const LayoutRect& oldBounds, const LayoutPoint& oldLocation, const LayoutRec t* newBoundsPtr, const LayoutPoint* newLocationPtr) 1629 const LayoutRect& oldBounds, const LayoutPoint& oldLocation, const LayoutRec t* newBoundsPtr, const LayoutPoint* newLocationPtr)
1631 { 1630 {
1632 RenderView* v = view(); 1631 RenderView* v = view();
1633 if (v->document().printing()) 1632 if (v->document().printing())
1634 return false; // Don't invalidate paints if we're printing. 1633 return false; // Don't invalidate paints if we're printing.
1635 1634
1636 // This ASSERT fails due to animations. See https://bugs.webkit.org/show_bu g.cgi?id=37048 1635 // This ASSERT fails due to animations. See https://bugs.webkit.org/show_bu g.cgi?id=37048
1637 // ASSERT(!newBoundsPtr || *newBoundsPtr == clippedOverflowRectForPaintInval idation(paintInvalidationContainer)); 1636 // ASSERT(!newBoundsPtr || *newBoundsPtr == clippedOverflowRectForPaintInval idation(paintInvalidationContainer));
1638 LayoutRect newBounds = newBoundsPtr ? *newBoundsPtr : computePaintInvalidati onRect(); 1637 LayoutRect newBounds = newBoundsPtr ? *newBoundsPtr : computePaintInvalidati onRect();
1639 LayoutPoint newLocation = newLocationPtr ? (*newLocationPtr) : RenderLayer:: positionFromPaintInvalidationContainer(this, paintInvalidationContainer); 1638 LayoutPoint newLocation = newLocationPtr ? (*newLocationPtr) : RenderLayer:: positionFromPaintInvalidationContainer(this, paintInvalidationContainer);
1640 1639
1641 // FIXME: This should use a ConvertableToTraceFormat when they are available in Blink. 1640 // FIXME: This should use a ConvertableToTraceFormat when they are available in Blink.
1642 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("blink.invalidation"), "RenderObject: :invalidatePaintAfterLayoutIfNeeded()", 1641 TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("blink.invalidation"), "RenderObject: :invalidatePaintAfterLayoutIfNeeded()",
1643 "object", this->debugName().ascii(), 1642 "object", this->debugName().ascii(),
1644 "info", TracedValue::fromJSONValue(jsonObjectForOldAndNewRects(oldBounds , newBounds))); 1643 "info", jsonObjectForOldAndNewRects(oldBounds, newBounds));
1645 1644
1646 // Presumably a background or a border exists if border-fit:lines was specif ied. 1645 // Presumably a background or a border exists if border-fit:lines was specif ied.
1647 if (invalidationReason == InvalidationIncremental && style()->borderFit() == BorderFitLines) 1646 if (invalidationReason == InvalidationIncremental && style()->borderFit() == BorderFitLines)
1648 invalidationReason = InvalidationBorderFitLines; 1647 invalidationReason = InvalidationBorderFitLines;
1649 1648
1650 if (invalidationReason == InvalidationIncremental && style()->hasBorderRadiu s()) { 1649 if (invalidationReason == InvalidationIncremental && style()->hasBorderRadiu s()) {
1651 // If a border-radius exists and width/height is smaller than 1650 // If a border-radius exists and width/height is smaller than
1652 // radius width/height, we cannot use delta-paint-invalidation. 1651 // radius width/height, we cannot use delta-paint-invalidation.
1653 RoundedRect oldRoundedRect = style()->getRoundedBorderFor(oldBounds); 1652 RoundedRect oldRoundedRect = style()->getRoundedBorderFor(oldBounds);
1654 RoundedRect newRoundedRect = style()->getRoundedBorderFor(newBounds); 1653 RoundedRect newRoundedRect = style()->getRoundedBorderFor(newBounds);
(...skipping 1861 matching lines...) Expand 10 before | Expand all | Expand 10 after
3516 { 3515 {
3517 if (object1) { 3516 if (object1) {
3518 const WebCore::RenderObject* root = object1; 3517 const WebCore::RenderObject* root = object1;
3519 while (root->parent()) 3518 while (root->parent())
3520 root = root->parent(); 3519 root = root->parent();
3521 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); 3520 root->showRenderTreeAndMark(object1, "*", object2, "-", 0);
3522 } 3521 }
3523 } 3522 }
3524 3523
3525 #endif 3524 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698