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

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

Issue 191693002: Delay scrollContents until the next paint (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fix nit Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « LayoutTests/fast/repaint/scroll-in-fixed-layer.html ('k') | Source/core/frame/FrameView.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 virtual IntRect windowResizerRect() const OVERRIDE; 144 virtual IntRect windowResizerRect() const OVERRIDE;
145 145
146 virtual float visibleContentScaleFactor() const OVERRIDE { return m_visibleC ontentScaleFactor; } 146 virtual float visibleContentScaleFactor() const OVERRIDE { return m_visibleC ontentScaleFactor; }
147 void setVisibleContentScaleFactor(float); 147 void setVisibleContentScaleFactor(float);
148 148
149 virtual float inputEventsScaleFactor() const OVERRIDE; 149 virtual float inputEventsScaleFactor() const OVERRIDE;
150 virtual IntSize inputEventsOffsetForEmulation() const OVERRIDE; 150 virtual IntSize inputEventsOffsetForEmulation() const OVERRIDE;
151 void setInputEventsTransformForEmulation(const IntSize&, float); 151 void setInputEventsTransformForEmulation(const IntSize&, float);
152 152
153 virtual void setScrollPosition(const IntPoint&) OVERRIDE; 153 virtual void setScrollPosition(const IntPoint&) OVERRIDE;
154 virtual void repaintFixedElementsAfterScrolling() OVERRIDE;
155 virtual void updateFixedElementsAfterScrolling() OVERRIDE;
156 virtual bool shouldRubberBandInDirection(ScrollDirection) const OVERRIDE; 154 virtual bool shouldRubberBandInDirection(ScrollDirection) const OVERRIDE;
157 virtual bool isRubberBandInProgress() const OVERRIDE; 155 virtual bool isRubberBandInProgress() const OVERRIDE;
158 void setScrollPositionNonProgrammatically(const IntPoint&); 156 void setScrollPositionNonProgrammatically(const IntPoint&);
159 157
160 // This is different than visibleContentRect() in that it ignores negative ( or overly positive) 158 // This is different than visibleContentRect() in that it ignores negative ( or overly positive)
161 // offsets from rubber-banding, and it takes zooming into account. 159 // offsets from rubber-banding, and it takes zooming into account.
162 LayoutRect viewportConstrainedVisibleContentRect() const; 160 LayoutRect viewportConstrainedVisibleContentRect() const;
163 void viewportConstrainedVisibleContentSizeChanged(bool widthChanged, bool he ightChanged); 161 void viewportConstrainedVisibleContentSizeChanged(bool widthChanged, bool he ightChanged);
164 162
165 AtomicString mediaType() const; 163 AtomicString mediaType() const;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 void setIsVisuallyNonEmpty() { m_isVisuallyNonEmpty = true; } 224 void setIsVisuallyNonEmpty() { m_isVisuallyNonEmpty = true; }
227 void enableAutoSizeMode(bool enable, const IntSize& minSize, const IntSize& maxSize); 225 void enableAutoSizeMode(bool enable, const IntSize& minSize, const IntSize& maxSize);
228 226
229 void forceLayout(bool allowSubtree = false); 227 void forceLayout(bool allowSubtree = false);
230 void forceLayoutForPagination(const FloatSize& pageSize, const FloatSize& or iginalPageSize, float maximumShrinkFactor); 228 void forceLayoutForPagination(const FloatSize& pageSize, const FloatSize& or iginalPageSize, float maximumShrinkFactor);
231 229
232 bool scrollToFragment(const KURL&); 230 bool scrollToFragment(const KURL&);
233 bool scrollToAnchor(const String&); 231 bool scrollToAnchor(const String&);
234 void maintainScrollPositionAtAnchor(Node*); 232 void maintainScrollPositionAtAnchor(Node*);
235 void scrollElementToRect(Element*, const IntRect&); 233 void scrollElementToRect(Element*, const IntRect&);
234 void scrollContentsIfNeededRecursive();
236 235
237 // Methods to convert points and rects between the coordinate space of the r enderer, and this view. 236 // Methods to convert points and rects between the coordinate space of the r enderer, and this view.
238 IntRect convertFromRenderer(const RenderObject*, const IntRect&) const; 237 IntRect convertFromRenderer(const RenderObject*, const IntRect&) const;
239 IntRect convertToRenderer(const RenderObject*, const IntRect&) const; 238 IntRect convertToRenderer(const RenderObject*, const IntRect&) const;
240 IntPoint convertFromRenderer(const RenderObject*, const IntPoint&) const; 239 IntPoint convertFromRenderer(const RenderObject*, const IntPoint&) const;
241 IntPoint convertToRenderer(const RenderObject*, const IntPoint&) const; 240 IntPoint convertToRenderer(const RenderObject*, const IntPoint&) const;
242 241
243 bool isFrameViewScrollCorner(RenderScrollbarPart* scrollCorner) const { retu rn m_scrollCorner == scrollCorner; } 242 bool isFrameViewScrollCorner(RenderScrollbarPart* scrollCorner) const { retu rn m_scrollCorner == scrollCorner; }
244 243
245 bool isScrollable(); 244 bool isScrollable();
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 virtual void scrollTo(const IntSize&) OVERRIDE; 323 virtual void scrollTo(const IntSize&) OVERRIDE;
325 virtual IntRect scrollableAreaBoundingBox() const OVERRIDE; 324 virtual IntRect scrollableAreaBoundingBox() const OVERRIDE;
326 virtual bool scrollAnimatorEnabled() const OVERRIDE; 325 virtual bool scrollAnimatorEnabled() const OVERRIDE;
327 virtual bool usesCompositedScrolling() const OVERRIDE; 326 virtual bool usesCompositedScrolling() const OVERRIDE;
328 virtual GraphicsLayer* layerForScrolling() const OVERRIDE; 327 virtual GraphicsLayer* layerForScrolling() const OVERRIDE;
329 virtual GraphicsLayer* layerForHorizontalScrollbar() const OVERRIDE; 328 virtual GraphicsLayer* layerForHorizontalScrollbar() const OVERRIDE;
330 virtual GraphicsLayer* layerForVerticalScrollbar() const OVERRIDE; 329 virtual GraphicsLayer* layerForVerticalScrollbar() const OVERRIDE;
331 virtual GraphicsLayer* layerForScrollCorner() const OVERRIDE; 330 virtual GraphicsLayer* layerForScrollCorner() const OVERRIDE;
332 331
333 protected: 332 protected:
333 virtual void scrollContentsIfNeeded();
334 virtual bool scrollContentsFastPath(const IntSize& scrollDelta, const IntRec t& rectToScroll, const IntRect& clipRect) OVERRIDE; 334 virtual bool scrollContentsFastPath(const IntSize& scrollDelta, const IntRec t& rectToScroll, const IntRect& clipRect) OVERRIDE;
335 virtual void scrollContentsSlowPath(const IntRect& updateRect) OVERRIDE; 335 virtual void scrollContentsSlowPath(const IntRect& updateRect) OVERRIDE;
336 336
337 virtual bool isVerticalDocument() const OVERRIDE; 337 virtual bool isVerticalDocument() const OVERRIDE;
338 virtual bool isFlippedDocument() const OVERRIDE; 338 virtual bool isFlippedDocument() const OVERRIDE;
339 339
340 private: 340 private:
341 explicit FrameView(LocalFrame*); 341 explicit FrameView(LocalFrame*);
342 342
343 void reset(); 343 void reset();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 virtual void notifyPageThatContentAreaWillPaint() const OVERRIDE; 387 virtual void notifyPageThatContentAreaWillPaint() const OVERRIDE;
388 388
389 void scheduleUpdateWidgetsIfNecessary(); 389 void scheduleUpdateWidgetsIfNecessary();
390 void updateWidgetsTimerFired(Timer<FrameView>*); 390 void updateWidgetsTimerFired(Timer<FrameView>*);
391 bool updateWidgets(); 391 bool updateWidgets();
392 392
393 void scrollToAnchor(); 393 void scrollToAnchor();
394 void scrollPositionChanged(); 394 void scrollPositionChanged();
395 void didScrollTimerFired(Timer<FrameView>*); 395 void didScrollTimerFired(Timer<FrameView>*);
396 396
397 void updateLayersAndCompositingAfterScrollIfNeeded();
398 void updateFixedElementRepaintRectsAfterScroll();
399
397 bool hasCustomScrollbars() const; 400 bool hasCustomScrollbars() const;
398 bool shouldUseCustomScrollbars(Element*& customScrollbarElement, LocalFrame* & customScrollbarFrame); 401 bool shouldUseCustomScrollbars(Element*& customScrollbarElement, LocalFrame* & customScrollbarFrame);
399 402
400 virtual void updateScrollCorner() OVERRIDE; 403 virtual void updateScrollCorner() OVERRIDE;
401 404
402 FrameView* parentFrameView() const; 405 FrameView* parentFrameView() const;
403 406
404 AXObjectCache* axObjectCache() const; 407 AXObjectCache* axObjectCache() const;
405 void removeFromAXObjectCache(); 408 void removeFromAXObjectCache();
406 409
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 m_view->setCanRepaintDuringPerformLayout(m_originalValue); 564 m_view->setCanRepaintDuringPerformLayout(m_originalValue);
562 } 565 }
563 private: 566 private:
564 FrameView* m_view; 567 FrameView* m_view;
565 bool m_originalValue; 568 bool m_originalValue;
566 }; 569 };
567 570
568 } // namespace WebCore 571 } // namespace WebCore
569 572
570 #endif // FrameView_h 573 #endif // FrameView_h
OLDNEW
« no previous file with comments | « LayoutTests/fast/repaint/scroll-in-fixed-layer.html ('k') | Source/core/frame/FrameView.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698