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

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: Remove bool 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;
106 void clearLayoutSubtreeRoot() { m_layoutSubtreeRoot = nullptr; } 106 void clearLayoutSubtreeRoot(const LayoutObject*);
Julien - ping for review 2015/02/27 16:38:09 Should we also use a reference here for API cohere
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);
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 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 322
321 IntSize scrollOffsetForViewportConstrainedObjects() const; 323 IntSize scrollOffsetForViewportConstrainedObjects() const;
322 324
323 // Override scrollbar notifications to update the AXObject cache. 325 // Override scrollbar notifications to update the AXObject cache.
324 virtual void didAddScrollbar(Scrollbar*, ScrollbarOrientation) override; 326 virtual void didAddScrollbar(Scrollbar*, ScrollbarOrientation) override;
325 virtual void willRemoveScrollbar(Scrollbar*, ScrollbarOrientation) override; 327 virtual void willRemoveScrollbar(Scrollbar*, ScrollbarOrientation) override;
326 328
327 // FIXME: This should probably be renamed as the 'inSubtreeLayout' parameter 329 // FIXME: This should probably be renamed as the 'inSubtreeLayout' parameter
328 // passed around the FrameView layout methods can be true while this returns 330 // passed around the FrameView layout methods can be true while this returns
329 // false. 331 // false.
330 bool isSubtreeLayout() const { return !!m_layoutSubtreeRoot; } 332 bool isSubtreeLayout() const { return !m_layoutSubtreeRoots.isEmpty(); }
331 333
332 // Sets the tickmarks for the FrameView, overriding the default behavior 334 // Sets the tickmarks for the FrameView, overriding the default behavior
333 // which is to display the tickmarks corresponding to find results. 335 // which is to display the tickmarks corresponding to find results.
334 // If |m_tickmarks| is empty, the default behavior is restored. 336 // If |m_tickmarks| is empty, the default behavior is restored.
335 void setTickmarks(const Vector<IntRect>& tickmarks) { m_tickmarks = tickmark s; } 337 void setTickmarks(const Vector<IntRect>& tickmarks) { m_tickmarks = tickmark s; }
336 338
337 // Since the compositor can resize the viewport due to top controls and 339 // Since the compositor can resize the viewport due to top controls and
338 // commit scroll offsets before a WebView::resize occurs, we need to adjust 340 // commit scroll offsets before a WebView::resize occurs, we need to adjust
339 // our scroll extents to prevent clamping the scroll offsets. 341 // our scroll extents to prevent clamping the scroll offsets.
340 void setTopControlsViewportAdjustment(float); 342 void setTopControlsViewportAdjustment(float);
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 TemporaryChange<bool> m_scope; 609 TemporaryChange<bool> m_scope;
608 }; 610 };
609 611
610 private: 612 private:
611 explicit FrameView(LocalFrame*); 613 explicit FrameView(LocalFrame*);
612 614
613 void dispose() override; 615 void dispose() override;
614 void reset(); 616 void reset();
615 void init(); 617 void init();
616 618
619 void clearLayoutSubtreeRootsAndMarkContainingBlocks();
620
617 // Called when our frame rect changes (or the rect/scroll position of an anc estor changes). 621 // Called when our frame rect changes (or the rect/scroll position of an anc estor changes).
618 virtual void frameRectsChanged() override; 622 virtual void frameRectsChanged() override;
619 623
620 friend class LayoutPart; 624 friend class LayoutPart;
621 625
622 bool contentsInCompositedLayer() const; 626 bool contentsInCompositedLayer() const;
623 627
624 void applyOverflowToViewportAndSetRenderer(LayoutObject*, ScrollbarMode& hMo de, ScrollbarMode& vMode); 628 void applyOverflowToViewportAndSetRenderer(LayoutObject*, ScrollbarMode& hMo de, ScrollbarMode& vMode);
625 void updateOverflowStatus(bool horizontalOverflow, bool verticalOverflow); 629 void updateOverflowStatus(bool horizontalOverflow, bool verticalOverflow);
626 630
627 void updateCounters(); 631 void updateCounters();
628 void forceLayoutParentViewIfNeeded(); 632 void forceLayoutParentViewIfNeeded();
629 void performPreLayoutTasks(); 633 void performPreLayoutTasks();
630 void performLayout(LayoutObject* rootForThisLayout, bool inSubtreeLayout); 634 void performLayout(bool inSubtreeLayout);
631 void scheduleOrPerformPostLayoutTasks(); 635 void scheduleOrPerformPostLayoutTasks();
632 void performPostLayoutTasks(); 636 void performPostLayoutTasks();
633 637
634 void invalidateTreeIfNeeded(); 638 void invalidateTreeIfNeeded();
635 639
636 void gatherDebugLayoutRects(LayoutObject* layoutRoot);
637
638 DocumentLifecycle& lifecycle() const; 640 DocumentLifecycle& lifecycle() const;
639 641
640 void contentRectangleForPaintInvalidation(const IntRect&); 642 void contentRectangleForPaintInvalidation(const IntRect&);
641 virtual void contentsResized() override; 643 virtual void contentsResized() override;
642 void scrollbarExistenceDidChange(); 644 void scrollbarExistenceDidChange();
643 645
644 // Override Widget methods to do point conversion via renderers, in order to 646 // Override Widget methods to do point conversion via renderers, in order to
645 // take transforms into account. 647 // take transforms into account.
646 virtual IntRect convertToContainingView(const IntRect&) const override; 648 virtual IntRect convertToContainingView(const IntRect&) const override;
647 virtual IntRect convertFromContainingView(const IntRect&) const override; 649 virtual IntRect convertFromContainingView(const IntRect&) const override;
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 RefPtrWillBeMember<LocalFrame> m_frame; 728 RefPtrWillBeMember<LocalFrame> m_frame;
727 729
728 WebDisplayMode m_displayMode; 730 WebDisplayMode m_displayMode;
729 731
730 bool m_doFullPaintInvalidation; 732 bool m_doFullPaintInvalidation;
731 733
732 bool m_canHaveScrollbars; 734 bool m_canHaveScrollbars;
733 unsigned m_slowRepaintObjectCount; 735 unsigned m_slowRepaintObjectCount;
734 736
735 bool m_hasPendingLayout; 737 bool m_hasPendingLayout;
736 LayoutObject* m_layoutSubtreeRoot; 738 HashSet<LayoutObject*> m_layoutSubtreeRoots;
737 739
738 bool m_layoutSchedulingEnabled; 740 bool m_layoutSchedulingEnabled;
739 bool m_inPerformLayout; 741 bool m_inPerformLayout;
740 bool m_inSynchronousPostLayout; 742 bool m_inSynchronousPostLayout;
741 int m_layoutCount; 743 int m_layoutCount;
742 unsigned m_nestedLayoutCount; 744 unsigned m_nestedLayoutCount;
743 Timer<FrameView> m_postLayoutTasksTimer; 745 Timer<FrameView> m_postLayoutTasksTimer;
744 Timer<FrameView> m_updateWidgetsTimer; 746 Timer<FrameView> m_updateWidgetsTimer;
745 bool m_firstLayoutCallbackPending; 747 bool m_firstLayoutCallbackPending;
746 748
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 static const unsigned visualPixelThreshold = 32 * 32; 862 static const unsigned visualPixelThreshold = 32 * 32;
861 if (m_visuallyNonEmptyPixelCount > visualPixelThreshold) 863 if (m_visuallyNonEmptyPixelCount > visualPixelThreshold)
862 setIsVisuallyNonEmpty(); 864 setIsVisuallyNonEmpty();
863 } 865 }
864 866
865 DEFINE_TYPE_CASTS(FrameView, Widget, widget, widget->isFrameView(), widget.isFra meView()); 867 DEFINE_TYPE_CASTS(FrameView, Widget, widget, widget->isFrameView(), widget.isFra meView());
866 868
867 } // namespace blink 869 } // namespace blink
868 870
869 #endif // FrameView_h 871 #endif // FrameView_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698