Chromium Code Reviews| Index: Source/core/frame/FrameView.cpp |
| diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp |
| index 957f41cbf5f5c4b1a7da913de325bd673447235d..fd84693d678fdf490fa9c1c2c242bfd341771f6b 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.get()) |
|
esprehn
2015/04/30 23:32:35
You don't need to call get(), you can just test it
benjhayden
2015/04/30 23:55:33
Done.
|
| + m_analyzer = adoptPtr(new LayoutAnalyzer()); |
| + m_analyzer->reset(); |
| +} |
| + |
| PassRefPtr<TracedValue> FrameView::analyzerCounters() |
| { |
| - RefPtr<TracedValue> value = layoutAnalyzer().toTracedValue(); |
| + if (!layoutAnalyzer()) |
| + return TracedValue::create(); |
| + RefPtr<TracedValue> value = layoutAnalyzer()->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 (layoutAnalyzer()) |
|
esprehn
2015/04/30 23:32:35
if (LayoutAnalyzer* analyzer = layoutAnalyzer())
benjhayden
2015/04/30 23:55:33
Changed to m_analyzer.
|
| + layoutAnalyzer()->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 (layoutAnalyzer()) |
| + layoutAnalyzer()->recordCounters(); |
| TRACE_EVENT_END1(PERFORM_LAYOUT_TRACE_CATEGORIES, "FrameView::performLayout", |
| "counters", analyzerCounters()); |
| } |