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

Side by Side Diff: Source/core/frame/FrameView.h

Issue 927773002: Keep track of multiple layout roots (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Address concerns. Created 5 years, 10 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
OLDNEW
1 /* 1 /*
2 Copyright (C) 1997 Martin Jones (mjones@kde.org) 2 Copyright (C) 1997 Martin Jones (mjones@kde.org)
3 (C) 1998 Waldo Bastian (bastian@kde.org) 3 (C) 1998 Waldo Bastian (bastian@kde.org)
4 (C) 1998, 1999 Torben Weis (weis@kde.org) 4 (C) 1998, 1999 Torben Weis (weis@kde.org)
5 (C) 1999 Lars Knoll (knoll@kde.org) 5 (C) 1999 Lars Knoll (knoll@kde.org)
6 (C) 1999 Antti Koivisto (koivisto@kde.org) 6 (C) 1999 Antti Koivisto (koivisto@kde.org)
7 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. 7 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
8 8
9 This library is free software; you can redistribute it and/or 9 This library is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Library General Public 10 modify it under the terms of the GNU Library General Public
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 void setContentsSize(const IntSize&); 95 void setContentsSize(const IntSize&);
96 IntPoint clampOffsetAtScale(const IntPoint& offset, float scale) const; 96 IntPoint clampOffsetAtScale(const IntPoint& offset, float scale) const;
97 97
98 void layout(); 98 void layout();
99 bool didFirstLayout() const; 99 bool didFirstLayout() const;
100 void scheduleRelayout(); 100 void scheduleRelayout();
101 void scheduleRelayoutOfSubtree(LayoutObject*); 101 void scheduleRelayoutOfSubtree(LayoutObject*);
102 bool layoutPending() const; 102 bool layoutPending() const;
103 bool isInPerformLayout() const; 103 bool isInPerformLayout() const;
104 104
105 LayoutObject* layoutRoot(bool onlyDuringLayout = false) const; 105 bool isLayoutRoot(const LayoutObject*) const;
esprehn 2015/02/24 02:31:32 reference.
106 void clearLayoutSubtreeRoot() { m_layoutSubtreeRoot = nullptr; } 106 void clearLayoutSubtreeRoot(const LayoutObject*);
107 int layoutCount() const { return m_layoutCount; } 107 int layoutCount() const { return m_layoutCount; }
108 108
109 void countObjectsNeedingLayout(unsigned& needsLayoutObjects, unsigned& total Objects, bool& isPartial);
esprehn 2015/02/24 02:31:32 This should really use a struct, but we can fix th
110
109 bool needsLayout() const; 111 bool needsLayout() const;
110 void setNeedsLayout(); 112 void setNeedsLayout();
111 113
112 void setNeedsUpdateWidgetPositions() { m_needsUpdateWidgetPositions = true; } 114 void setNeedsUpdateWidgetPositions() { m_needsUpdateWidgetPositions = true; }
113 115
114 // Methods for getting/setting the size Blink should use to layout the conte nts. 116 // Methods for getting/setting the size Blink should use to layout the conte nts.
115 IntSize layoutSize(IncludeScrollbarsInRect = ExcludeScrollbars) const; 117 IntSize layoutSize(IncludeScrollbarsInRect = ExcludeScrollbars) const;
116 void setLayoutSize(const IntSize&); 118 void setLayoutSize(const IntSize&);
117 119
118 // If this is set to false, the layout size will need to be explicitly set b y the owner. 120 // If this is set to false, the layout size will need to be explicitly set b y the owner.
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 321
320 IntSize scrollOffsetForViewportConstrainedObjects() const; 322 IntSize scrollOffsetForViewportConstrainedObjects() const;
321 323
322 // Override scrollbar notifications to update the AXObject cache. 324 // Override scrollbar notifications to update the AXObject cache.
323 virtual void didAddScrollbar(Scrollbar*, ScrollbarOrientation) override; 325 virtual void didAddScrollbar(Scrollbar*, ScrollbarOrientation) override;
324 virtual void willRemoveScrollbar(Scrollbar*, ScrollbarOrientation) override; 326 virtual void willRemoveScrollbar(Scrollbar*, ScrollbarOrientation) override;
325 327
326 // FIXME: This should probably be renamed as the 'inSubtreeLayout' parameter 328 // FIXME: This should probably be renamed as the 'inSubtreeLayout' parameter
327 // passed around the FrameView layout methods can be true while this returns 329 // passed around the FrameView layout methods can be true while this returns
328 // false. 330 // false.
329 bool isSubtreeLayout() const { return !!m_layoutSubtreeRoot; } 331 bool isSubtreeLayout() const { return m_isSubtreeLayout; }
330 332
331 // Sets the tickmarks for the FrameView, overriding the default behavior 333 // Sets the tickmarks for the FrameView, overriding the default behavior
332 // which is to display the tickmarks corresponding to find results. 334 // which is to display the tickmarks corresponding to find results.
333 // If |m_tickmarks| is empty, the default behavior is restored. 335 // If |m_tickmarks| is empty, the default behavior is restored.
334 void setTickmarks(const Vector<IntRect>& tickmarks) { m_tickmarks = tickmark s; } 336 void setTickmarks(const Vector<IntRect>& tickmarks) { m_tickmarks = tickmark s; }
335 337
336 // Since the compositor can resize the viewport due to top controls and 338 // Since the compositor can resize the viewport due to top controls and
337 // commit scroll offsets before a WebView::resize occurs, we need to adjust 339 // commit scroll offsets before a WebView::resize occurs, we need to adjust
338 // our scroll extents to prevent clamping the scroll offsets. 340 // our scroll extents to prevent clamping the scroll offsets.
339 void setTopControlsViewportAdjustment(float); 341 void setTopControlsViewportAdjustment(float);
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 TemporaryChange<bool> m_scope; 597 TemporaryChange<bool> m_scope;
596 }; 598 };
597 599
598 private: 600 private:
599 explicit FrameView(LocalFrame*); 601 explicit FrameView(LocalFrame*);
600 602
601 void dispose() override; 603 void dispose() override;
602 void reset(); 604 void reset();
603 void init(); 605 void init();
604 606
607 void clearLayoutSubtreeRootsAndMarkContainingBlocks();
608
605 // Called when our frame rect changes (or the rect/scroll position of an anc estor changes). 609 // Called when our frame rect changes (or the rect/scroll position of an anc estor changes).
606 virtual void frameRectsChanged() override; 610 virtual void frameRectsChanged() override;
607 611
608 friend class LayoutPart; 612 friend class LayoutPart;
609 613
610 bool contentsInCompositedLayer() const; 614 bool contentsInCompositedLayer() const;
611 615
612 void applyOverflowToViewportAndSetRenderer(LayoutObject*, ScrollbarMode& hMo de, ScrollbarMode& vMode); 616 void applyOverflowToViewportAndSetRenderer(LayoutObject*, ScrollbarMode& hMo de, ScrollbarMode& vMode);
613 void updateOverflowStatus(bool horizontalOverflow, bool verticalOverflow); 617 void updateOverflowStatus(bool horizontalOverflow, bool verticalOverflow);
614 618
615 void updateCounters(); 619 void updateCounters();
616 void forceLayoutParentViewIfNeeded(); 620 void forceLayoutParentViewIfNeeded();
617 void performPreLayoutTasks(); 621 void performPreLayoutTasks();
618 void performLayout(LayoutObject* rootForThisLayout, bool inSubtreeLayout); 622 void performLayout(bool inSubtreeLayout);
619 void scheduleOrPerformPostLayoutTasks(); 623 void scheduleOrPerformPostLayoutTasks();
620 void performPostLayoutTasks(); 624 void performPostLayoutTasks();
621 625
622 void invalidateTreeIfNeeded(); 626 void invalidateTreeIfNeeded();
623 627
624 void gatherDebugLayoutRects(LayoutObject* layoutRoot);
625
626 DocumentLifecycle& lifecycle() const; 628 DocumentLifecycle& lifecycle() const;
627 629
628 void contentRectangleForPaintInvalidation(const IntRect&); 630 void contentRectangleForPaintInvalidation(const IntRect&);
629 virtual void contentsResized() override; 631 virtual void contentsResized() override;
630 void scrollbarExistenceDidChange(); 632 void scrollbarExistenceDidChange();
631 633
632 // Override Widget methods to do point conversion via renderers, in order to 634 // Override Widget methods to do point conversion via renderers, in order to
633 // take transforms into account. 635 // take transforms into account.
634 virtual IntRect convertToContainingView(const IntRect&) const override; 636 virtual IntRect convertToContainingView(const IntRect&) const override;
635 virtual IntRect convertFromContainingView(const IntRect&) const override; 637 virtual IntRect convertFromContainingView(const IntRect&) const override;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 RefPtrWillBeMember<LocalFrame> m_frame; 714 RefPtrWillBeMember<LocalFrame> m_frame;
713 715
714 WebDisplayMode m_displayMode; 716 WebDisplayMode m_displayMode;
715 717
716 bool m_doFullPaintInvalidation; 718 bool m_doFullPaintInvalidation;
717 719
718 bool m_canHaveScrollbars; 720 bool m_canHaveScrollbars;
719 unsigned m_slowRepaintObjectCount; 721 unsigned m_slowRepaintObjectCount;
720 722
721 bool m_hasPendingLayout; 723 bool m_hasPendingLayout;
722 LayoutObject* m_layoutSubtreeRoot; 724 HashSet<LayoutObject*> m_layoutSubtreeRoots;
725 bool m_isSubtreeLayout;
esprehn 2015/02/24 02:31:32 It seems like we should be able to get rid of this
723 726
724 bool m_layoutSchedulingEnabled; 727 bool m_layoutSchedulingEnabled;
725 bool m_inPerformLayout; 728 bool m_inPerformLayout;
726 bool m_inSynchronousPostLayout; 729 bool m_inSynchronousPostLayout;
727 int m_layoutCount; 730 int m_layoutCount;
728 unsigned m_nestedLayoutCount; 731 unsigned m_nestedLayoutCount;
729 Timer<FrameView> m_postLayoutTasksTimer; 732 Timer<FrameView> m_postLayoutTasksTimer;
730 Timer<FrameView> m_updateWidgetsTimer; 733 Timer<FrameView> m_updateWidgetsTimer;
731 bool m_firstLayoutCallbackPending; 734 bool m_firstLayoutCallbackPending;
732 735
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
844 static const unsigned visualPixelThreshold = 32 * 32; 847 static const unsigned visualPixelThreshold = 32 * 32;
845 if (m_visuallyNonEmptyPixelCount > visualPixelThreshold) 848 if (m_visuallyNonEmptyPixelCount > visualPixelThreshold)
846 setIsVisuallyNonEmpty(); 849 setIsVisuallyNonEmpty();
847 } 850 }
848 851
849 DEFINE_TYPE_CASTS(FrameView, Widget, widget, widget->isFrameView(), widget.isFra meView()); 852 DEFINE_TYPE_CASTS(FrameView, Widget, widget, widget->isFrameView(), widget.isFra meView());
850 853
851 } // namespace blink 854 } // namespace blink
852 855
853 #endif // FrameView_h 856 #endif // FrameView_h
OLDNEW
« no previous file with comments | « LayoutTests/platform/linux/fast/repaint/subtree-root-skipped-expected.txt ('k') | Source/core/frame/FrameView.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698