| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> | 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> |
| 3 * 1999 Lars Knoll <knoll@kde.org> | 3 * 1999 Lars Knoll <knoll@kde.org> |
| 4 * 1999 Antti Koivisto <koivisto@kde.org> | 4 * 1999 Antti Koivisto <koivisto@kde.org> |
| 5 * 2000 Dirk Mueller <mueller@kde.org> | 5 * 2000 Dirk Mueller <mueller@kde.org> |
| 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
| 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
| 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 9 * Copyright (C) 2009 Google Inc. All rights reserved. | 9 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 10 * | 10 * |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 renderer->setWidget(0); | 216 renderer->setWidget(0); |
| 217 } | 217 } |
| 218 | 218 |
| 219 void FrameView::reset() | 219 void FrameView::reset() |
| 220 { | 220 { |
| 221 m_cannotBlitToWindow = false; | 221 m_cannotBlitToWindow = false; |
| 222 m_isOverlapped = false; | 222 m_isOverlapped = false; |
| 223 m_contentIsOpaque = false; | 223 m_contentIsOpaque = false; |
| 224 m_hasPendingLayout = false; | 224 m_hasPendingLayout = false; |
| 225 m_layoutSubtreeRoot = 0; | 225 m_layoutSubtreeRoot = 0; |
| 226 m_delayedLayout = false; | |
| 227 m_doFullRepaint = true; | 226 m_doFullRepaint = true; |
| 228 m_layoutSchedulingEnabled = true; | 227 m_layoutSchedulingEnabled = true; |
| 229 m_inPerformLayout = false; | 228 m_inPerformLayout = false; |
| 230 m_canRepaintDuringPerformLayout = false; | 229 m_canRepaintDuringPerformLayout = false; |
| 231 m_doingPreLayoutStyleUpdate = false; | 230 m_doingPreLayoutStyleUpdate = false; |
| 232 m_inSynchronousPostLayout = false; | 231 m_inSynchronousPostLayout = false; |
| 233 m_layoutCount = 0; | 232 m_layoutCount = 0; |
| 234 m_nestedLayoutCount = 0; | 233 m_nestedLayoutCount = 0; |
| 235 m_postLayoutTasksTimer.stop(); | 234 m_postLayoutTasksTimer.stop(); |
| 236 m_updateWidgetsTimer.stop(); | 235 m_updateWidgetsTimer.stop(); |
| (...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 903 TRACE_EVENT0("webkit", "FrameView::layout"); | 902 TRACE_EVENT0("webkit", "FrameView::layout"); |
| 904 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "Layout"); | 903 TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "Layout"); |
| 905 | 904 |
| 906 // Protect the view from being deleted during layout (in recalcStyle) | 905 // Protect the view from being deleted during layout (in recalcStyle) |
| 907 RefPtr<FrameView> protector(this); | 906 RefPtr<FrameView> protector(this); |
| 908 | 907 |
| 909 // Every scroll that happens during layout is programmatic. | 908 // Every scroll that happens during layout is programmatic. |
| 910 TemporaryChange<bool> changeInProgrammaticScroll(m_inProgrammaticScroll, tru
e); | 909 TemporaryChange<bool> changeInProgrammaticScroll(m_inProgrammaticScroll, tru
e); |
| 911 | 910 |
| 912 m_hasPendingLayout = false; | 911 m_hasPendingLayout = false; |
| 913 m_delayedLayout = false; | |
| 914 | 912 |
| 915 // we shouldn't enter layout() while painting | 913 // we shouldn't enter layout() while painting |
| 916 ASSERT(!isPainting()); | 914 ASSERT(!isPainting()); |
| 917 if (isPainting()) | 915 if (isPainting()) |
| 918 return; | 916 return; |
| 919 | 917 |
| 920 // Store the current maximal outline size to use when computing the old/new | 918 // Store the current maximal outline size to use when computing the old/new |
| 921 // outline rects for repainting. | 919 // outline rects for repainting. |
| 922 renderView()->setOldMaximalOutlineSize(renderView()->maximalOutlineSize()); | 920 renderView()->setOldMaximalOutlineSize(renderView()->maximalOutlineSize()); |
| 923 | 921 |
| (...skipping 877 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1801 m_layoutSubtreeRoot = 0; | 1799 m_layoutSubtreeRoot = 0; |
| 1802 } | 1800 } |
| 1803 if (!m_layoutSchedulingEnabled) | 1801 if (!m_layoutSchedulingEnabled) |
| 1804 return; | 1802 return; |
| 1805 if (!needsLayout()) | 1803 if (!needsLayout()) |
| 1806 return; | 1804 return; |
| 1807 if (!m_frame->document()->shouldScheduleLayout()) | 1805 if (!m_frame->document()->shouldScheduleLayout()) |
| 1808 return; | 1806 return; |
| 1809 InspectorInstrumentation::didInvalidateLayout(m_frame.get()); | 1807 InspectorInstrumentation::didInvalidateLayout(m_frame.get()); |
| 1810 | 1808 |
| 1811 int delay = m_frame->document()->minimumLayoutDelay(); | |
| 1812 if (m_hasPendingLayout && m_delayedLayout && !delay) | |
| 1813 unscheduleRelayout(); | |
| 1814 if (m_hasPendingLayout) | 1809 if (m_hasPendingLayout) |
| 1815 return; | 1810 return; |
| 1816 | |
| 1817 m_delayedLayout = delay != 0; | |
| 1818 m_hasPendingLayout = true; | 1811 m_hasPendingLayout = true; |
| 1819 scheduleAnimation(); | 1812 scheduleAnimation(); |
| 1820 } | 1813 } |
| 1821 | 1814 |
| 1822 static bool isObjectAncestorContainerOf(RenderObject* ancestor, RenderObject* de
scendant) | 1815 static bool isObjectAncestorContainerOf(RenderObject* ancestor, RenderObject* de
scendant) |
| 1823 { | 1816 { |
| 1824 for (RenderObject* r = descendant; r; r = r->container()) { | 1817 for (RenderObject* r = descendant; r; r = r->container()) { |
| 1825 if (r == ancestor) | 1818 if (r == ancestor) |
| 1826 return true; | 1819 return true; |
| 1827 } | 1820 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1854 } else { | 1847 } else { |
| 1855 // Just do a full relayout | 1848 // Just do a full relayout |
| 1856 if (isSubtreeLayout()) | 1849 if (isSubtreeLayout()) |
| 1857 m_layoutSubtreeRoot->markContainingBlocksForLayout(false); | 1850 m_layoutSubtreeRoot->markContainingBlocksForLayout(false); |
| 1858 m_layoutSubtreeRoot = 0; | 1851 m_layoutSubtreeRoot = 0; |
| 1859 relayoutRoot->markContainingBlocksForLayout(false); | 1852 relayoutRoot->markContainingBlocksForLayout(false); |
| 1860 InspectorInstrumentation::didInvalidateLayout(m_frame.get()); | 1853 InspectorInstrumentation::didInvalidateLayout(m_frame.get()); |
| 1861 } | 1854 } |
| 1862 } | 1855 } |
| 1863 } else if (m_layoutSchedulingEnabled) { | 1856 } else if (m_layoutSchedulingEnabled) { |
| 1864 int delay = m_frame->document()->minimumLayoutDelay(); | |
| 1865 m_layoutSubtreeRoot = relayoutRoot; | 1857 m_layoutSubtreeRoot = relayoutRoot; |
| 1866 ASSERT(!m_layoutSubtreeRoot->container() || !m_layoutSubtreeRoot->contai
ner()->needsLayout()); | 1858 ASSERT(!m_layoutSubtreeRoot->container() || !m_layoutSubtreeRoot->contai
ner()->needsLayout()); |
| 1867 InspectorInstrumentation::didInvalidateLayout(m_frame.get()); | 1859 InspectorInstrumentation::didInvalidateLayout(m_frame.get()); |
| 1868 m_delayedLayout = delay != 0; | |
| 1869 m_hasPendingLayout = true; | 1860 m_hasPendingLayout = true; |
| 1870 scheduleAnimation(); | 1861 scheduleAnimation(); |
| 1871 } | 1862 } |
| 1872 } | 1863 } |
| 1873 | 1864 |
| 1874 bool FrameView::layoutPending() const | 1865 bool FrameView::layoutPending() const |
| 1875 { | 1866 { |
| 1876 return m_hasPendingLayout; | 1867 return m_hasPendingLayout; |
| 1877 } | 1868 } |
| 1878 | 1869 |
| 1879 bool FrameView::needsLayout() const | 1870 bool FrameView::needsLayout() const |
| 1880 { | 1871 { |
| 1881 // This can return true in cases where the document does not have a body yet
. | 1872 // This can return true in cases where the document does not have a body yet
. |
| 1882 // Document::shouldScheduleLayout takes care of preventing us from schedulin
g | 1873 // Document::shouldScheduleLayout takes care of preventing us from schedulin
g |
| 1883 // layout in that case. | 1874 // layout in that case. |
| 1884 | 1875 |
| 1885 RenderView* renderView = this->renderView(); | 1876 RenderView* renderView = this->renderView(); |
| 1886 return layoutPending() | 1877 return layoutPending() |
| 1887 || (renderView && renderView->needsLayout()) | 1878 || (renderView && renderView->needsLayout()) |
| 1888 || isSubtreeLayout(); | 1879 || isSubtreeLayout(); |
| 1889 } | 1880 } |
| 1890 | 1881 |
| 1891 void FrameView::setNeedsLayout() | 1882 void FrameView::setNeedsLayout() |
| 1892 { | 1883 { |
| 1893 if (RenderView* renderView = this->renderView()) | 1884 if (RenderView* renderView = this->renderView()) |
| 1894 renderView->setNeedsLayout(); | 1885 renderView->setNeedsLayout(); |
| 1895 } | 1886 } |
| 1896 | 1887 |
| 1897 void FrameView::unscheduleRelayout() | |
| 1898 { | |
| 1899 if (!m_hasPendingLayout) | |
| 1900 return; | |
| 1901 | |
| 1902 m_hasPendingLayout = false; | |
| 1903 m_delayedLayout = false; | |
| 1904 } | |
| 1905 | |
| 1906 void FrameView::serviceScriptedAnimations(double monotonicAnimationStartTime) | 1888 void FrameView::serviceScriptedAnimations(double monotonicAnimationStartTime) |
| 1907 { | 1889 { |
| 1908 for (RefPtr<Frame> frame = m_frame; frame; frame = frame->tree().traverseNex
t()) { | 1890 for (RefPtr<Frame> frame = m_frame; frame; frame = frame->tree().traverseNex
t()) { |
| 1909 frame->view()->serviceScrollAnimations(); | 1891 frame->view()->serviceScrollAnimations(); |
| 1910 if (!RuntimeEnabledFeatures::webAnimationsCSSEnabled()) | 1892 if (!RuntimeEnabledFeatures::webAnimationsCSSEnabled()) |
| 1911 frame->animation().serviceAnimations(); | 1893 frame->animation().serviceAnimations(); |
| 1912 | 1894 |
| 1913 DocumentAnimations::serviceOnAnimationFrame(*frame->document(), monotoni
cAnimationStartTime); | 1895 DocumentAnimations::serviceOnAnimationFrame(*frame->document(), monotoni
cAnimationStartTime); |
| 1914 } | 1896 } |
| 1915 | 1897 |
| (...skipping 1321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3237 void FrameView::willRemoveScrollbar(Scrollbar* scrollbar, ScrollbarOrientation o
rientation) | 3219 void FrameView::willRemoveScrollbar(Scrollbar* scrollbar, ScrollbarOrientation o
rientation) |
| 3238 { | 3220 { |
| 3239 ScrollableArea::willRemoveScrollbar(scrollbar, orientation); | 3221 ScrollableArea::willRemoveScrollbar(scrollbar, orientation); |
| 3240 if (AXObjectCache* cache = axObjectCache()) { | 3222 if (AXObjectCache* cache = axObjectCache()) { |
| 3241 cache->remove(scrollbar); | 3223 cache->remove(scrollbar); |
| 3242 cache->handleScrollbarUpdate(this); | 3224 cache->handleScrollbarUpdate(this); |
| 3243 } | 3225 } |
| 3244 } | 3226 } |
| 3245 | 3227 |
| 3246 } // namespace WebCore | 3228 } // namespace WebCore |
| OLD | NEW |