| Index: Source/core/frame/FrameView.cpp
|
| diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp
|
| index 957f41cbf5f5c4b1a7da913de325bd673447235d..74e23dc96c9f96b191802d21986146f5ae768365 100644
|
| --- a/Source/core/frame/FrameView.cpp
|
| +++ b/Source/core/frame/FrameView.cpp
|
| @@ -812,9 +812,24 @@ static inline void layoutFromRootObject(LayoutObject& root)
|
| root.layout();
|
| }
|
|
|
| +void FrameView::prepareLayoutAnalyzer()
|
| +{
|
| + bool isTracing = false;
|
| + TRACE_EVENT_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("blink.debug.layout"), &isTracing);
|
| + if (!isTracing) {
|
| + m_analyzer.clear();
|
| + return;
|
| + }
|
| + if (!m_analyzer)
|
| + m_analyzer = adoptPtr(new LayoutAnalyzer());
|
| + m_analyzer->reset();
|
| +}
|
| +
|
| PassRefPtr<TracedValue> FrameView::analyzerCounters()
|
| {
|
| - RefPtr<TracedValue> value = layoutAnalyzer().toTracedValue();
|
| + if (!m_analyzer)
|
| + return TracedValue::create();
|
| + RefPtr<TracedValue> value = m_analyzer->toTracedValue();
|
| value->setString("host", layoutView()->document().location()->host());
|
| return value;
|
| }
|
| @@ -826,7 +841,7 @@ void FrameView::performLayout(bool inSubtreeLayout)
|
| ASSERT(inSubtreeLayout || m_layoutSubtreeRoots.isEmpty());
|
|
|
| TRACE_EVENT_BEGIN0(PERFORM_LAYOUT_TRACE_CATEGORIES, "FrameView::performLayout");
|
| - layoutAnalyzer().reset();
|
| + prepareLayoutAnalyzer();
|
|
|
| ScriptForbiddenScope forbidScript;
|
|
|
| @@ -842,7 +857,8 @@ void FrameView::performLayout(bool inSubtreeLayout)
|
| forceLayoutParentViewIfNeeded();
|
|
|
| if (inSubtreeLayout) {
|
| - layoutAnalyzer().increment(LayoutAnalyzer::PerformLayoutRootLayoutObjects, m_layoutSubtreeRoots.size());
|
| + if (m_analyzer)
|
| + m_analyzer->increment(LayoutAnalyzer::PerformLayoutRootLayoutObjects, m_layoutSubtreeRoots.size());
|
| while (m_layoutSubtreeRoots.size()) {
|
| LayoutObject& root = *m_layoutSubtreeRoots.takeAny();
|
| if (!root.needsLayout())
|
| @@ -863,7 +879,8 @@ void FrameView::performLayout(bool inSubtreeLayout)
|
|
|
| lifecycle().advanceTo(DocumentLifecycle::AfterPerformLayout);
|
|
|
| - layoutAnalyzer().recordCounters();
|
| + if (m_analyzer)
|
| + m_analyzer->recordCounters();
|
| TRACE_EVENT_END1(PERFORM_LAYOUT_TRACE_CATEGORIES, "FrameView::performLayout",
|
| "counters", analyzerCounters());
|
| }
|
|
|