OLD | NEW |
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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 class RenderBox; | 56 class RenderBox; |
57 class RenderEmbeddedObject; | 57 class RenderEmbeddedObject; |
58 class RenderObject; | 58 class RenderObject; |
59 class RenderPart; | 59 class RenderPart; |
60 class RenderScrollbarPart; | 60 class RenderScrollbarPart; |
61 class RenderView; | 61 class RenderView; |
62 struct CompositedSelectionBound; | 62 struct CompositedSelectionBound; |
63 | 63 |
64 typedef unsigned long long DOMTimeStamp; | 64 typedef unsigned long long DOMTimeStamp; |
65 | 65 |
66 // FIXME: Oilpan: move Widget (and thereby FrameView) to the heap. | |
67 class FrameView final : public Widget, public ScrollableArea { | 66 class FrameView final : public Widget, public ScrollableArea { |
68 public: | 67 public: |
69 friend class RenderView; | 68 friend class RenderView; |
70 friend class Internals; | 69 friend class Internals; |
71 | 70 |
72 static PassRefPtr<FrameView> create(LocalFrame*); | 71 static PassRefPtrWillBeRawPtr<FrameView> create(LocalFrame*); |
73 static PassRefPtr<FrameView> create(LocalFrame*, const IntSize& initialSize)
; | 72 static PassRefPtrWillBeRawPtr<FrameView> create(LocalFrame*, const IntSize&
initialSize); |
74 | 73 |
75 virtual ~FrameView(); | 74 virtual ~FrameView(); |
76 | 75 |
77 virtual void invalidateRect(const IntRect&) override; | 76 virtual void invalidateRect(const IntRect&) override; |
78 virtual void setFrameRect(const IntRect&) override; | 77 virtual void setFrameRect(const IntRect&) override; |
79 | 78 |
80 LocalFrame& frame() const | 79 LocalFrame& frame() const |
81 { | 80 { |
82 ASSERT(m_frame); | 81 ASSERT(m_frame); |
83 return *m_frame; | 82 return *m_frame; |
84 } | 83 } |
85 | 84 |
86 Page* page() const; | 85 Page* page() const; |
87 | 86 |
88 RenderView* renderView() const; | 87 RenderView* renderView() const; |
89 | 88 |
90 void setCanHaveScrollbars(bool); | 89 void setCanHaveScrollbars(bool); |
91 | 90 |
92 PassRefPtr<Scrollbar> createScrollbar(ScrollbarOrientation); | 91 PassRefPtrWillBeRawPtr<Scrollbar> createScrollbar(ScrollbarOrientation); |
93 | 92 |
94 void setContentsSize(const IntSize&); | 93 void setContentsSize(const IntSize&); |
95 IntPoint clampOffsetAtScale(const IntPoint& offset, float scale) const; | 94 IntPoint clampOffsetAtScale(const IntPoint& offset, float scale) const; |
96 | 95 |
97 void layout(bool allowSubtree = true); | 96 void layout(bool allowSubtree = true); |
98 bool didFirstLayout() const; | 97 bool didFirstLayout() const; |
99 void scheduleRelayout(); | 98 void scheduleRelayout(); |
100 void scheduleRelayoutOfSubtree(RenderObject*); | 99 void scheduleRelayoutOfSubtree(RenderObject*); |
101 bool layoutPending() const; | 100 bool layoutPending() const; |
102 bool isInPerformLayout() const; | 101 bool isInPerformLayout() const; |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 | 221 |
223 void updateLayoutAndStyleForPainting(); | 222 void updateLayoutAndStyleForPainting(); |
224 void updateLayoutAndStyleIfNeededRecursive(); | 223 void updateLayoutAndStyleIfNeededRecursive(); |
225 | 224 |
226 void invalidateTreeIfNeededRecursive(); | 225 void invalidateTreeIfNeededRecursive(); |
227 | 226 |
228 void incrementVisuallyNonEmptyCharacterCount(unsigned); | 227 void incrementVisuallyNonEmptyCharacterCount(unsigned); |
229 void incrementVisuallyNonEmptyPixelCount(const IntSize&); | 228 void incrementVisuallyNonEmptyPixelCount(const IntSize&); |
230 void setIsVisuallyNonEmpty() { m_isVisuallyNonEmpty = true; } | 229 void setIsVisuallyNonEmpty() { m_isVisuallyNonEmpty = true; } |
231 void enableAutoSizeMode(const IntSize& minSize, const IntSize& maxSize); | 230 void enableAutoSizeMode(const IntSize& minSize, const IntSize& maxSize); |
232 void disableAutoSizeMode() { m_autoSizeInfo.clear(); } | 231 void disableAutoSizeMode() { disposeAutoSizeInfo(); } |
233 | 232 |
234 void forceLayout(bool allowSubtree = false); | 233 void forceLayout(bool allowSubtree = false); |
235 void forceLayoutForPagination(const FloatSize& pageSize, const FloatSize& or
iginalPageSize, float maximumShrinkFactor); | 234 void forceLayoutForPagination(const FloatSize& pageSize, const FloatSize& or
iginalPageSize, float maximumShrinkFactor); |
236 | 235 |
237 bool scrollToFragment(const KURL&); | 236 bool scrollToFragment(const KURL&); |
238 bool scrollToAnchor(const String&); | 237 bool scrollToAnchor(const String&); |
239 void maintainScrollPositionAtAnchor(Node*); | 238 void maintainScrollPositionAtAnchor(Node*); |
240 void scrollElementToRect(Element*, const IntRect&); | 239 void scrollElementToRect(Element*, const IntRect&); |
241 void scrollContentsIfNeededRecursive(); | 240 void scrollContentsIfNeededRecursive(); |
242 | 241 |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 void scrollbarStyleChangedInternal(); | 344 void scrollbarStyleChangedInternal(); |
346 void notifyPageThatContentAreaWillPaintInternal() const; | 345 void notifyPageThatContentAreaWillPaintInternal() const; |
347 | 346 |
348 // The window that hosts the FrameView. The FrameView will communicate scrol
ls and repaints to the | 347 // The window that hosts the FrameView. The FrameView will communicate scrol
ls and repaints to the |
349 // host window in the window's coordinate space. | 348 // host window in the window's coordinate space. |
350 HostWindow* hostWindow() const; | 349 HostWindow* hostWindow() const; |
351 | 350 |
352 // Returns a clip rect in host window coordinates. Used to clip the blit on
a scroll. | 351 // Returns a clip rect in host window coordinates. Used to clip the blit on
a scroll. |
353 IntRect windowClipRect(IncludeScrollbarsInRect = ExcludeScrollbars) const; | 352 IntRect windowClipRect(IncludeScrollbarsInRect = ExcludeScrollbars) const; |
354 | 353 |
| 354 typedef WillBeHeapHashSet<RefPtrWillBeMember<Widget> > ChildrenWidgetSet; |
| 355 |
355 // Functions for child manipulation and inspection. | 356 // Functions for child manipulation and inspection. |
356 const HashSet<RefPtr<Widget> >* children() const { return &m_children; } | 357 const ChildrenWidgetSet* children() const { return &m_children; } |
357 void addChild(PassRefPtr<Widget>); | 358 void addChild(PassRefPtrWillBeRawPtr<Widget>); |
358 void removeChildInternal(Widget*); | 359 void removeChildInternal(Widget*); |
359 | 360 |
360 // If the scroll view does not use a native widget, then it will have cross-
platform Scrollbars. These functions | 361 // If the scroll view does not use a native widget, then it will have cross-
platform Scrollbars. These functions |
361 // can be used to obtain those scrollbars. | 362 // can be used to obtain those scrollbars. |
362 virtual Scrollbar* horizontalScrollbar() const override { return m_horizonta
lScrollbar.get(); } | 363 virtual Scrollbar* horizontalScrollbar() const override { return m_horizonta
lScrollbar.get(); } |
363 virtual Scrollbar* verticalScrollbar() const override { return m_verticalScr
ollbar.get(); } | 364 virtual Scrollbar* verticalScrollbar() const override { return m_verticalScr
ollbar.get(); } |
364 | 365 |
365 void positionScrollbarLayers(); | 366 void positionScrollbarLayers(); |
366 | 367 |
367 // Functions for setting and retrieving the scrolling mode in each axis (hor
izontal/vertical). The mode has values of | 368 // Functions for setting and retrieving the scrolling mode in each axis (hor
izontal/vertical). The mode has values of |
(...skipping 17 matching lines...) Expand all Loading... |
385 | 386 |
386 void setCanHaveScrollbarsInternal(bool); | 387 void setCanHaveScrollbarsInternal(bool); |
387 bool canHaveScrollbars() const { return horizontalScrollbarMode() != Scrollb
arAlwaysOff || verticalScrollbarMode() != ScrollbarAlwaysOff; } | 388 bool canHaveScrollbars() const { return horizontalScrollbarMode() != Scrollb
arAlwaysOff || verticalScrollbarMode() != ScrollbarAlwaysOff; } |
388 | 389 |
389 // By default, paint events are clipped to the visible area. If set to | 390 // By default, paint events are clipped to the visible area. If set to |
390 // false, paint events are no longer clipped. | 391 // false, paint events are no longer clipped. |
391 bool clipsPaintInvalidations() const { return m_clipsRepaints; } | 392 bool clipsPaintInvalidations() const { return m_clipsRepaints; } |
392 void setClipsRepaints(bool); | 393 void setClipsRepaints(bool); |
393 | 394 |
394 // Overridden by FrameView to create custom CSS scrollbars if applicable. | 395 // Overridden by FrameView to create custom CSS scrollbars if applicable. |
395 PassRefPtr<Scrollbar> createScrollbarInternal(ScrollbarOrientation); | 396 PassRefPtrWillBeRawPtr<Scrollbar> createScrollbarInternal(ScrollbarOrientati
on); |
396 | 397 |
397 // The visible content rect has a location that is the scrolled offset of th
e document. The width and height are the viewport width | 398 // The visible content rect has a location that is the scrolled offset of th
e document. The width and height are the viewport width |
398 // and height. By default the scrollbars themselves are excluded from this r
ectangle, but an optional boolean argument allows them to be | 399 // and height. By default the scrollbars themselves are excluded from this r
ectangle, but an optional boolean argument allows them to be |
399 // included. | 400 // included. |
400 virtual IntRect visibleContentRect(IncludeScrollbarsInRect = ExcludeScrollba
rs) const override; | 401 virtual IntRect visibleContentRect(IncludeScrollbarsInRect = ExcludeScrollba
rs) const override; |
401 IntSize visibleSize() const { return visibleContentRect().size(); } | 402 IntSize visibleSize() const { return visibleContentRect().size(); } |
402 | 403 |
403 // visibleContentRect().size() is computed from unscaledVisibleContentSize()
divided by the value of visibleContentScaleFactor. | 404 // visibleContentRect().size() is computed from unscaledVisibleContentSize()
divided by the value of visibleContentScaleFactor. |
404 // For the main frame, visibleContentScaleFactor is equal to the page's page
ScaleFactor; it's 1 otherwise. | 405 // For the main frame, visibleContentScaleFactor is equal to the page's page
ScaleFactor; it's 1 otherwise. |
405 IntSize unscaledVisibleContentSize(IncludeScrollbarsInRect = ExcludeScrollba
rs) const; | 406 IntSize unscaledVisibleContentSize(IncludeScrollbarsInRect = ExcludeScrollba
rs) const; |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
532 virtual IntRect convertFromScrollbarToContainingView(const Scrollbar*, const
IntRect&) const override; | 533 virtual IntRect convertFromScrollbarToContainingView(const Scrollbar*, const
IntRect&) const override; |
533 virtual IntRect convertFromContainingViewToScrollbar(const Scrollbar*, const
IntRect&) const override; | 534 virtual IntRect convertFromContainingViewToScrollbar(const Scrollbar*, const
IntRect&) const override; |
534 virtual IntPoint convertFromScrollbarToContainingView(const Scrollbar*, cons
t IntPoint&) const override; | 535 virtual IntPoint convertFromScrollbarToContainingView(const Scrollbar*, cons
t IntPoint&) const override; |
535 virtual IntPoint convertFromContainingViewToScrollbar(const Scrollbar*, cons
t IntPoint&) const override; | 536 virtual IntPoint convertFromContainingViewToScrollbar(const Scrollbar*, cons
t IntPoint&) const override; |
536 | 537 |
537 void calculateAndPaintOverhangAreas(GraphicsContext*, const IntRect& dirtyRe
ct); | 538 void calculateAndPaintOverhangAreas(GraphicsContext*, const IntRect& dirtyRe
ct); |
538 void calculateAndPaintOverhangBackground(GraphicsContext*, const IntRect& di
rtyRect); | 539 void calculateAndPaintOverhangBackground(GraphicsContext*, const IntRect& di
rtyRect); |
539 | 540 |
540 virtual bool isFrameView() const override { return true; } | 541 virtual bool isFrameView() const override { return true; } |
541 | 542 |
| 543 virtual void trace(Visitor*) override; |
| 544 |
542 protected: | 545 protected: |
543 bool scrollContentsFastPath(const IntSize& scrollDelta); | 546 bool scrollContentsFastPath(const IntSize& scrollDelta); |
544 void scrollContentsSlowPath(const IntRect& updateRect); | 547 void scrollContentsSlowPath(const IntRect& updateRect); |
545 | 548 |
546 bool isVerticalDocument() const; | 549 bool isVerticalDocument() const; |
547 bool isFlippedDocument() const; | 550 bool isFlippedDocument() const; |
548 | 551 |
549 // Prevents creation of scrollbars. Used to prevent drawing two sets of | 552 // Prevents creation of scrollbars. Used to prevent drawing two sets of |
550 // overlay scrollbars in the case of the pinch viewport. | 553 // overlay scrollbars in the case of the pinch viewport. |
551 bool scrollbarsDisabled() const; | 554 bool scrollbarsDisabled() const; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
596 { } | 599 { } |
597 private: | 600 private: |
598 TemporaryChange<bool> m_scope; | 601 TemporaryChange<bool> m_scope; |
599 }; | 602 }; |
600 | 603 |
601 bool scrollbarsDisabledInternal() const { return false; } | 604 bool scrollbarsDisabledInternal() const { return false; } |
602 | 605 |
603 private: | 606 private: |
604 explicit FrameView(LocalFrame*); | 607 explicit FrameView(LocalFrame*); |
605 | 608 |
| 609 void dispose(); |
606 void reset(); | 610 void reset(); |
607 void init(); | 611 void init(); |
608 | 612 |
609 virtual void frameRectsChanged() override; | 613 virtual void frameRectsChanged() override; |
610 | 614 |
611 friend class RenderPart; | 615 friend class RenderPart; |
612 | 616 |
613 bool contentsInCompositedLayer() const; | 617 bool contentsInCompositedLayer() const; |
614 | 618 |
615 void applyOverflowToViewportAndSetRenderer(RenderObject*, ScrollbarMode& hMo
de, ScrollbarMode& vMode); | 619 void applyOverflowToViewportAndSetRenderer(RenderObject*, ScrollbarMode& hMo
de, ScrollbarMode& vMode); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
666 | 670 |
667 void updateScrollCorner(); | 671 void updateScrollCorner(); |
668 | 672 |
669 FrameView* parentFrameView() const; | 673 FrameView* parentFrameView() const; |
670 | 674 |
671 AXObjectCache* axObjectCache() const; | 675 AXObjectCache* axObjectCache() const; |
672 void removeFromAXObjectCache(); | 676 void removeFromAXObjectCache(); |
673 | 677 |
674 void setLayoutSizeInternal(const IntSize&); | 678 void setLayoutSizeInternal(const IntSize&); |
675 | 679 |
| 680 void disposeAutoSizeInfo(); |
| 681 |
676 bool paintInvalidationIsAllowed() const | 682 bool paintInvalidationIsAllowed() const |
677 { | 683 { |
678 return !isInPerformLayout() || canInvalidatePaintDuringPerformLayout(); | 684 return !isInPerformLayout() || canInvalidatePaintDuringPerformLayout(); |
679 } | 685 } |
680 | 686 |
681 bool adjustScrollbarExistence(ComputeScrollbarExistenceOption = FirstPass); | 687 bool adjustScrollbarExistence(ComputeScrollbarExistenceOption = FirstPass); |
682 void adjustScrollbarOpacity(); | 688 void adjustScrollbarOpacity(); |
683 // FIXME(bokan): setScrollOffset, setScrollPosition, scrollTo, scrollToOffse
tWithoutAnimation, | 689 // FIXME(bokan): setScrollOffset, setScrollPosition, scrollTo, scrollToOffse
tWithoutAnimation, |
684 // notifyScrollPositionChanged...there's too many ways to scroll this class.
This needs | 690 // notifyScrollPositionChanged...there's too many ways to scroll this class.
This needs |
685 // some cleanup. | 691 // some cleanup. |
686 void setScrollOffsetFromUpdateScrollbars(const DoubleSize&); | 692 void setScrollOffsetFromUpdateScrollbars(const DoubleSize&); |
687 | 693 |
688 IntRect rectToCopyOnScroll() const; | 694 IntRect rectToCopyOnScroll() const; |
689 | 695 |
690 void calculateOverhangAreasForPainting(IntRect& horizontalOverhangRect, IntR
ect& verticalOverhangRect); | 696 void calculateOverhangAreasForPainting(IntRect& horizontalOverhangRect, IntR
ect& verticalOverhangRect); |
691 void updateOverhangAreas(); | 697 void updateOverhangAreas(); |
692 | 698 |
693 bool isFrameViewScrollbar(const Widget* child) const { return horizontalScro
llbar() == child || verticalScrollbar() == child; } | 699 bool isFrameViewScrollbar(const Widget* child) const { return horizontalScro
llbar() == child || verticalScrollbar() == child; } |
694 | 700 |
695 static double s_currentFrameTimeStamp; // used for detecting decoded resourc
e thrash in the cache | 701 static double s_currentFrameTimeStamp; // used for detecting decoded resourc
e thrash in the cache |
696 static bool s_inPaintContents; | 702 static bool s_inPaintContents; |
697 | 703 |
698 LayoutSize m_size; | 704 LayoutSize m_size; |
699 | 705 |
700 typedef WillBeHeapHashSet<RefPtrWillBeMember<RenderEmbeddedObject> > Embedde
dObjectSet; | 706 typedef WillBeHeapHashSet<RefPtrWillBeMember<RenderEmbeddedObject> > Embedde
dObjectSet; |
701 WillBePersistentHeapHashSet<RefPtrWillBeMember<RenderEmbeddedObject> > m_par
tUpdateSet; | 707 WillBeHeapHashSet<RefPtrWillBeMember<RenderEmbeddedObject> > m_partUpdateSet
; |
702 | 708 |
703 // FIXME: These are just "children" of the FrameView and should be RefPtr<Wi
dget> instead. | 709 // FIXME: These are just "children" of the FrameView and should be RefPtrWil
lBeMember<Widget> instead. |
704 WillBePersistentHeapHashSet<RefPtrWillBeMember<RenderPart> > m_parts; | 710 WillBeHeapHashSet<RefPtrWillBeMember<RenderPart> > m_parts; |
705 | 711 |
706 // Oilpan: the use of a persistent back reference 'emulates' the | 712 // The RefPtr cycle between LocalFrame and FrameView is broken |
707 // RefPtr-cycle that is kept between the two objects non-Oilpan. | 713 // when a LocalFrame is detached by FrameLoader::detachFromParent(). |
| 714 // It clears the LocalFrame's m_view reference via setView(nullptr). |
708 // | 715 // |
709 // That cycle is broken when a LocalFrame is detached by | 716 // For Oilpan, Member reference cycles pose no problem, but |
710 // FrameLoader::detachFromParent(), it then clears its | 717 // LocalFrame's FrameView is also cleared by setView(). This additionally |
711 // FrameView's m_frame reference by calling setView(nullptr). | 718 // triggers FrameView::dispose(), which performs the operations |
712 RefPtrWillBePersistent<LocalFrame> m_frame; | 719 // that cannot be delayed until finalization time. |
| 720 RefPtrWillBeMember<LocalFrame> m_frame; |
713 | 721 |
714 bool m_doFullPaintInvalidation; | 722 bool m_doFullPaintInvalidation; |
715 | 723 |
716 bool m_canHaveScrollbars; | 724 bool m_canHaveScrollbars; |
717 unsigned m_slowRepaintObjectCount; | 725 unsigned m_slowRepaintObjectCount; |
718 | 726 |
719 bool m_hasPendingLayout; | 727 bool m_hasPendingLayout; |
720 RenderObject* m_layoutSubtreeRoot; | 728 RenderObject* m_layoutSubtreeRoot; |
721 | 729 |
722 bool m_layoutSchedulingEnabled; | 730 bool m_layoutSchedulingEnabled; |
(...skipping 22 matching lines...) Expand all Loading... |
745 | 753 |
746 bool m_wasScrolledByUser; | 754 bool m_wasScrolledByUser; |
747 bool m_inProgrammaticScroll; | 755 bool m_inProgrammaticScroll; |
748 bool m_safeToPropagateScrollToParent; | 756 bool m_safeToPropagateScrollToParent; |
749 | 757 |
750 double m_lastPaintTime; | 758 double m_lastPaintTime; |
751 | 759 |
752 bool m_isTrackingPaintInvalidations; // Used for testing. | 760 bool m_isTrackingPaintInvalidations; // Used for testing. |
753 Vector<IntRect> m_trackedPaintInvalidationRects; | 761 Vector<IntRect> m_trackedPaintInvalidationRects; |
754 | 762 |
755 RefPtrWillBePersistent<Node> m_nodeToDraw; | 763 RefPtrWillBeMember<Node> m_nodeToDraw; |
756 PaintBehavior m_paintBehavior; | 764 PaintBehavior m_paintBehavior; |
757 bool m_isPainting; | 765 bool m_isPainting; |
758 | 766 |
759 unsigned m_visuallyNonEmptyCharacterCount; | 767 unsigned m_visuallyNonEmptyCharacterCount; |
760 unsigned m_visuallyNonEmptyPixelCount; | 768 unsigned m_visuallyNonEmptyPixelCount; |
761 bool m_isVisuallyNonEmpty; | 769 bool m_isVisuallyNonEmpty; |
762 bool m_firstVisuallyNonEmptyLayoutCallbackPending; | 770 bool m_firstVisuallyNonEmptyLayoutCallbackPending; |
763 | 771 |
764 RefPtrWillBePersistent<Node> m_maintainScrollPositionAnchor; | 772 RefPtrWillBeMember<Node> m_maintainScrollPositionAnchor; |
765 | 773 |
766 // Renderer to hold our custom scroll corner. | 774 // Renderer to hold our custom scroll corner. |
767 RawPtrWillBePersistent<RenderScrollbarPart> m_scrollCorner; | 775 RawPtrWillBeMember<RenderScrollbarPart> m_scrollCorner; |
768 | 776 |
769 OwnPtr<ScrollableAreaSet> m_scrollableAreas; | 777 OwnPtr<ScrollableAreaSet> m_scrollableAreas; |
770 OwnPtr<ResizerAreaSet> m_resizerAreas; | 778 OwnPtr<ResizerAreaSet> m_resizerAreas; |
771 OwnPtr<ViewportConstrainedObjectSet> m_viewportConstrainedObjects; | 779 OwnPtr<ViewportConstrainedObjectSet> m_viewportConstrainedObjects; |
772 OwnPtr<FrameViewAutoSizeInfo> m_autoSizeInfo; | 780 OwnPtrWillBeMember<FrameViewAutoSizeInfo> m_autoSizeInfo; |
773 | 781 |
774 float m_visibleContentScaleFactor; | 782 float m_visibleContentScaleFactor; |
775 IntSize m_inputEventsOffsetForEmulation; | 783 IntSize m_inputEventsOffsetForEmulation; |
776 float m_inputEventsScaleFactorForEmulation; | 784 float m_inputEventsScaleFactorForEmulation; |
777 | 785 |
778 IntSize m_layoutSize; | 786 IntSize m_layoutSize; |
779 bool m_layoutSizeFixedToFrameSize; | 787 bool m_layoutSizeFixedToFrameSize; |
780 | 788 |
781 Timer<FrameView> m_didScrollTimer; | 789 Timer<FrameView> m_didScrollTimer; |
782 | 790 |
783 Vector<IntRect> m_tickmarks; | 791 Vector<IntRect> m_tickmarks; |
784 | 792 |
785 bool m_needsUpdateWidgetPositions; | |
786 float m_topControlsViewportAdjustment; | 793 float m_topControlsViewportAdjustment; |
787 | 794 |
788 RefPtr<Scrollbar> m_horizontalScrollbar; | 795 bool m_needsUpdateWidgetPositions; |
789 RefPtr<Scrollbar> m_verticalScrollbar; | 796 |
| 797 #if ENABLE(OILPAN) && ENABLE(ASSERT) |
| 798 // Verified when finalizing. |
| 799 bool m_hasBeenDisposed; |
| 800 #endif |
| 801 |
| 802 RefPtrWillBeMember<Scrollbar> m_horizontalScrollbar; |
| 803 RefPtrWillBeMember<Scrollbar> m_verticalScrollbar; |
790 ScrollbarMode m_horizontalScrollbarMode; | 804 ScrollbarMode m_horizontalScrollbarMode; |
791 ScrollbarMode m_verticalScrollbarMode; | 805 ScrollbarMode m_verticalScrollbarMode; |
792 | 806 |
793 bool m_horizontalScrollbarLock; | 807 bool m_horizontalScrollbarLock; |
794 bool m_verticalScrollbarLock; | 808 bool m_verticalScrollbarLock; |
795 | 809 |
796 HashSet<RefPtr<Widget> > m_children; | 810 ChildrenWidgetSet m_children; |
797 | 811 |
798 DoubleSize m_pendingScrollDelta; | 812 DoubleSize m_pendingScrollDelta; |
799 DoublePoint m_scrollPosition; | 813 DoublePoint m_scrollPosition; |
800 DoublePoint m_cachedScrollPosition; | 814 DoublePoint m_cachedScrollPosition; |
801 IntSize m_contentsSize; | 815 IntSize m_contentsSize; |
802 | 816 |
803 int m_scrollbarsAvoidingResizer; | 817 int m_scrollbarsAvoidingResizer; |
804 bool m_scrollbarsSuppressed; | 818 bool m_scrollbarsSuppressed; |
805 | 819 |
806 bool m_inUpdateScrollbars; | 820 bool m_inUpdateScrollbars; |
(...skipping 23 matching lines...) Expand all Loading... |
830 m_visuallyNonEmptyPixelCount += size.width() * size.height(); | 844 m_visuallyNonEmptyPixelCount += size.width() * size.height(); |
831 // Use a threshold value to prevent very small amounts of visible content fr
om triggering didFirstVisuallyNonEmptyLayout | 845 // Use a threshold value to prevent very small amounts of visible content fr
om triggering didFirstVisuallyNonEmptyLayout |
832 static const unsigned visualPixelThreshold = 32 * 32; | 846 static const unsigned visualPixelThreshold = 32 * 32; |
833 if (m_visuallyNonEmptyPixelCount > visualPixelThreshold) | 847 if (m_visuallyNonEmptyPixelCount > visualPixelThreshold) |
834 setIsVisuallyNonEmpty(); | 848 setIsVisuallyNonEmpty(); |
835 } | 849 } |
836 | 850 |
837 DEFINE_TYPE_CASTS(FrameView, Widget, widget, widget->isFrameView(), widget.isFra
meView()); | 851 DEFINE_TYPE_CASTS(FrameView, Widget, widget, widget->isFrameView(), widget.isFra
meView()); |
838 | 852 |
839 class AllowPaintInvalidationScope { | 853 class AllowPaintInvalidationScope { |
| 854 STACK_ALLOCATED(); |
840 public: | 855 public: |
841 explicit AllowPaintInvalidationScope(FrameView* view) | 856 explicit AllowPaintInvalidationScope(FrameView* view) |
842 : m_view(view) | 857 : m_view(view) |
843 , m_originalValue(view ? view->canInvalidatePaintDuringPerformLayout() :
false) | 858 , m_originalValue(view ? view->canInvalidatePaintDuringPerformLayout() :
false) |
844 { | 859 { |
845 if (!m_view) | 860 if (!m_view) |
846 return; | 861 return; |
847 | 862 |
848 m_view->setCanInvalidatePaintDuringPerformLayout(true); | 863 m_view->setCanInvalidatePaintDuringPerformLayout(true); |
849 } | 864 } |
850 | 865 |
851 ~AllowPaintInvalidationScope() | 866 ~AllowPaintInvalidationScope() |
852 { | 867 { |
853 if (!m_view) | 868 if (!m_view) |
854 return; | 869 return; |
855 | 870 |
856 m_view->setCanInvalidatePaintDuringPerformLayout(m_originalValue); | 871 m_view->setCanInvalidatePaintDuringPerformLayout(m_originalValue); |
857 } | 872 } |
| 873 |
858 private: | 874 private: |
859 FrameView* m_view; | 875 RawPtrWillBeMember<FrameView> m_view; |
860 bool m_originalValue; | 876 bool m_originalValue; |
861 }; | 877 }; |
862 | 878 |
863 } // namespace blink | 879 } // namespace blink |
864 | 880 |
865 #endif // FrameView_h | 881 #endif // FrameView_h |
OLD | NEW |