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

Unified Diff: third_party/WebKit/Source/core/layout/TracedLayoutObject.cpp

Issue 1864403003: Trace LayoutObject src attributes and parent frames (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/TracedLayoutObject.cpp
diff --git a/third_party/WebKit/Source/core/layout/TracedLayoutObject.cpp b/third_party/WebKit/Source/core/layout/TracedLayoutObject.cpp
index fddb6c4aea6748ba1ea9a99221dffb885c1b9f6c..87fb70efad53ba02cb66a25dbc5ca45ab27890b7 100644
--- a/third_party/WebKit/Source/core/layout/TracedLayoutObject.cpp
+++ b/third_party/WebKit/Source/core/layout/TracedLayoutObject.cpp
@@ -4,10 +4,14 @@
#include "core/layout/TracedLayoutObject.h"
+#include "core/frame/FrameView.h"
#include "core/layout/LayoutInline.h"
+#include "core/layout/LayoutPart.h"
#include "core/layout/LayoutTableCell.h"
#include "core/layout/LayoutText.h"
#include "core/layout/LayoutView.h"
+#include "public/web/WebLocalFrame.h"
+#include "web/WebLocalFrameImpl.h"
#include <inttypes.h>
namespace blink {
@@ -16,6 +20,17 @@ namespace {
void dumpToTracedValue(const LayoutObject& object, bool traceGeometry, TracedValue* tracedValue)
{
+ if (object.isLayoutPart()) {
+ FrameView* frameView = toFrameView(toLayoutPart(object).widget());
+ if (frameView) {
+ WebLocalFrame* frame = WebLocalFrameImpl::fromFrame(frameView->frame());
+ tracedValue->beginDictionary("tree");
+ tracedValue->setString("scope", "LayoutTree");
+ tracedValue->setString("id_ref", String::format("%p", frame));
+ tracedValue->endDictionary();
+ }
+ }
+
tracedValue->setString("address", String::format("%" PRIxPTR, reinterpret_cast<uintptr_t>(&object)));
tracedValue->setString("name", object.name());
if (Node* node = object.node()) {
@@ -30,6 +45,10 @@ void dumpToTracedValue(const LayoutObject& object, bool traceGeometry, TracedVal
tracedValue->pushString(element.classNames()[i]);
tracedValue->endArray();
}
+ if (object.isLayoutIFrame()
+ || object.isLayoutImage()
+ || object.isVideo())
+ tracedValue->setString("src", element.getAttribute("src"));
}
}
@@ -70,8 +89,11 @@ void dumpToTracedValue(const LayoutObject& object, bool traceGeometry, TracedVal
tracedValue->setBoolean("posChildNeeds", object.posChildNeedsLayout());
if (object.isTableCell()) {
const LayoutTableCell& c = toLayoutTableCell(object);
- tracedValue->setDouble("row", c.rowIndex());
- tracedValue->setDouble("col", c.absoluteColumnIndex());
+ if (c.row()->rowIndexWasSet() &&
+ (!c.row()->section() || !c.row()->section()->needsCellRecalc()))
+ tracedValue->setDouble("row", c.rowIndex());
+ if (c.hasSetAbsoluteColumnIndex())
+ tracedValue->setDouble("col", c.absoluteColumnIndex());
if (c.rowSpan() != 1)
tracedValue->setDouble("rowSpan", c.rowSpan());
if (c.colSpan() != 1)
@@ -103,6 +125,19 @@ PassOwnPtr<TracedValue> TracedLayoutObject::create(const LayoutView& view, bool
{
OwnPtr<TracedValue> tracedValue = TracedValue::create();
dumpToTracedValue(view, traceGeometry, tracedValue.get());
+
+ LayoutObject* o = view.frameView()->frame().ownerLayoutObject();
+ if (o) {
+ FrameView* frameView = toFrameView(toLayoutPart(o)->widget());
+ if (frameView) {
+ WebLocalFrame* wlf = WebLocalFrameImpl::fromFrame(frameView->frame());
+ tracedValue->beginDictionary("owner");
+ tracedValue->setString("LayoutObject", String::format("%" PRIxPTR, reinterpret_cast<uintptr_t>(o)));
+ tracedValue->setString("LayoutTree", String::format("%p", wlf));
+ tracedValue->endDictionary();
+ }
+ }
+
return tracedValue;
}

Powered by Google App Engine
This is Rietveld 408576698