Chromium Code Reviews| 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 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 143 , m_needsUpdateWidgetGeometries(false) | 143 , m_needsUpdateWidgetGeometries(false) |
| 144 , m_needsUpdateViewportIntersection(true) | 144 , m_needsUpdateViewportIntersection(true) |
| 145 , m_needsUpdateViewportIntersectionInSubtree(true) | 145 , m_needsUpdateViewportIntersectionInSubtree(true) |
| 146 #if ENABLE(ASSERT) | 146 #if ENABLE(ASSERT) |
| 147 , m_hasBeenDisposed(false) | 147 , m_hasBeenDisposed(false) |
| 148 #endif | 148 #endif |
| 149 , m_horizontalScrollbarMode(ScrollbarAuto) | 149 , m_horizontalScrollbarMode(ScrollbarAuto) |
| 150 , m_verticalScrollbarMode(ScrollbarAuto) | 150 , m_verticalScrollbarMode(ScrollbarAuto) |
| 151 , m_horizontalScrollbarLock(false) | 151 , m_horizontalScrollbarLock(false) |
| 152 , m_verticalScrollbarLock(false) | 152 , m_verticalScrollbarLock(false) |
| 153 , m_scrollOverrideEnabled(false) | |
| 153 , m_scrollbarsAvoidingResizer(0) | 154 , m_scrollbarsAvoidingResizer(0) |
| 154 , m_scrollbarsSuppressed(false) | 155 , m_scrollbarsSuppressed(false) |
| 155 , m_inUpdateScrollbars(false) | 156 , m_inUpdateScrollbars(false) |
| 156 , m_frameTimingRequestsDirty(true) | 157 , m_frameTimingRequestsDirty(true) |
| 157 , m_viewportIntersectionValid(false) | 158 , m_viewportIntersectionValid(false) |
| 158 , m_hiddenForThrottling(false) | 159 , m_hiddenForThrottling(false) |
| 159 , m_crossOriginForThrottling(false) | 160 , m_crossOriginForThrottling(false) |
| 160 , m_subtreeThrottled(false) | 161 , m_subtreeThrottled(false) |
| 161 , m_isUpdatingAllLifecyclePhases(false) | 162 , m_isUpdatingAllLifecyclePhases(false) |
| 162 , m_scrollAnchor(this) | 163 , m_scrollAnchor(this) |
| (...skipping 1394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1557 scrollToFragmentAnchor(); | 1558 scrollToFragmentAnchor(); |
| 1558 } | 1559 } |
| 1559 | 1560 |
| 1560 void FrameView::clearFragmentAnchor() | 1561 void FrameView::clearFragmentAnchor() |
| 1561 { | 1562 { |
| 1562 m_fragmentAnchor = nullptr; | 1563 m_fragmentAnchor = nullptr; |
| 1563 } | 1564 } |
| 1564 | 1565 |
| 1565 void FrameView::setScrollPosition(const DoublePoint& scrollPoint, ScrollType scr ollType, ScrollBehavior scrollBehavior) | 1566 void FrameView::setScrollPosition(const DoublePoint& scrollPoint, ScrollType scr ollType, ScrollBehavior scrollBehavior) |
| 1566 { | 1567 { |
| 1567 DoublePoint newScrollPosition = clampScrollPosition(scrollPoint); | 1568 DoublePoint newScrollPosition = clampScrollPosition(applyScrollOverrideToPos ition(newScrollPosition)); |
| 1568 if (newScrollPosition == scrollPositionDouble()) | 1569 if (newScrollPosition == scrollPositionDouble()) |
| 1569 return; | 1570 return; |
| 1570 | 1571 |
| 1571 if (scrollBehavior == ScrollBehaviorAuto) | 1572 if (scrollBehavior == ScrollBehaviorAuto) |
| 1572 scrollBehavior = scrollBehaviorStyle(); | 1573 scrollBehavior = scrollBehaviorStyle(); |
| 1573 | 1574 |
| 1574 ScrollableArea::setScrollPosition(newScrollPosition, scrollType, scrollBehav ior); | 1575 ScrollableArea::setScrollPosition(newScrollPosition, scrollType, scrollBehav ior); |
| 1575 } | 1576 } |
| 1576 | 1577 |
| 1578 void FrameView::setScrollOverride(const DoublePoint& position) | |
| 1579 { | |
| 1580 m_scrollOverrideEnabled = true; | |
| 1581 m_scrollOverridePosition = position; | |
| 1582 setScrollPosition(scrollPosition(), ProgrammaticScroll, ScrollBehaviorInstan t); | |
| 1583 } | |
| 1584 | |
| 1585 void FrameView::clearScrollOverride() | |
| 1586 { | |
| 1587 m_scrollOverrideEnabled = false; | |
| 1588 } | |
| 1589 | |
| 1577 void FrameView::didUpdateElasticOverscroll() | 1590 void FrameView::didUpdateElasticOverscroll() |
| 1578 { | 1591 { |
| 1579 Page* page = frame().page(); | 1592 Page* page = frame().page(); |
| 1580 if (!page) | 1593 if (!page) |
| 1581 return; | 1594 return; |
| 1582 FloatSize elasticOverscroll = page->chromeClient().elasticOverscroll(); | 1595 FloatSize elasticOverscroll = page->chromeClient().elasticOverscroll(); |
| 1583 if (m_horizontalScrollbar) { | 1596 if (m_horizontalScrollbar) { |
| 1584 float delta = elasticOverscroll.width() - m_horizontalScrollbar->elastic Overscroll(); | 1597 float delta = elasticOverscroll.width() - m_horizontalScrollbar->elastic Overscroll(); |
| 1585 if (delta != 0) { | 1598 if (delta != 0) { |
| 1586 m_horizontalScrollbar->setElasticOverscroll(elasticOverscroll.width( )); | 1599 m_horizontalScrollbar->setElasticOverscroll(elasticOverscroll.width( )); |
| (...skipping 1639 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3226 return orientation == HorizontalScrollbar ? scrollSize.width() : scrollS ize.height(); | 3239 return orientation == HorizontalScrollbar ? scrollSize.width() : scrollS ize.height(); |
| 3227 } | 3240 } |
| 3228 | 3241 |
| 3229 return scrollbar->totalSize() - scrollbar->visibleSize(); | 3242 return scrollbar->totalSize() - scrollbar->visibleSize(); |
| 3230 } | 3243 } |
| 3231 | 3244 |
| 3232 void FrameView::setScrollOffset(const DoublePoint& offset, ScrollType scrollType ) | 3245 void FrameView::setScrollOffset(const DoublePoint& offset, ScrollType scrollType ) |
| 3233 { | 3246 { |
| 3234 // TODO(skobes): We shouldn't have to clamp here; instead we should update c allers | 3247 // TODO(skobes): We shouldn't have to clamp here; instead we should update c allers |
| 3235 // ScrollableArea::scrollPositionChanged to only pass clamped offsets. | 3248 // ScrollableArea::scrollPositionChanged to only pass clamped offsets. |
| 3236 DoublePoint newPosition = clampScrollPosition(offset); | 3249 DoublePoint newPosition = clampScrollPosition(applyScrollOverrideToPosition( offset)); |
| 3237 | 3250 |
| 3238 DoublePoint oldPosition = m_scrollPosition; | 3251 DoublePoint oldPosition = m_scrollPosition; |
| 3239 DoubleSize scrollDelta = newPosition - oldPosition; | 3252 DoubleSize scrollDelta = newPosition - oldPosition; |
| 3240 if (scrollDelta.isZero()) | 3253 if (scrollDelta.isZero()) |
| 3241 return; | 3254 return; |
| 3242 | 3255 |
| 3243 if (m_frame->settings() && m_frame->settings()->rootLayerScrolls()) { | 3256 if (m_frame->settings() && m_frame->settings()->rootLayerScrolls()) { |
| 3244 // Don't scroll the FrameView! | 3257 // Don't scroll the FrameView! |
| 3245 ASSERT_NOT_REACHED(); | 3258 ASSERT_NOT_REACHED(); |
| 3246 } | 3259 } |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 3275 if (AXObjectCache* cache = m_frame->document()->existingAXObjectCache()) | 3288 if (AXObjectCache* cache = m_frame->document()->existingAXObjectCache()) |
| 3276 cache->handleScrollPositionChanged(this); | 3289 cache->handleScrollPositionChanged(this); |
| 3277 | 3290 |
| 3278 frame().loader().saveScrollState(); | 3291 frame().loader().saveScrollState(); |
| 3279 frame().loader().client()->didChangeScrollOffset(); | 3292 frame().loader().client()->didChangeScrollOffset(); |
| 3280 | 3293 |
| 3281 if (RuntimeEnabledFeatures::scrollAnchoringEnabled() && scrollType != Anchor ingScroll) | 3294 if (RuntimeEnabledFeatures::scrollAnchoringEnabled() && scrollType != Anchor ingScroll) |
| 3282 m_scrollAnchor.clear(); | 3295 m_scrollAnchor.clear(); |
| 3283 } | 3296 } |
| 3284 | 3297 |
| 3298 DoublePoint FrameView::applyScrollOverrideToPosition(const DoublePoint& position ) | |
| 3299 { | |
| 3300 DoublePoint newPosition = position; | |
| 3301 if (m_scrollOverrideEnabled) { | |
| 3302 if (m_scrollOverridePosition.x() >= 0) | |
|
Sami
2016/06/23 17:34:03
Do we need to validate the coordinates again here?
Eric Seckler
2016/06/23 18:12:43
At the moment, I'm using a value <0 to signal "no
Sami
2016/06/24 14:48:26
Oh I see, I didn't notice we can override just one
| |
| 3303 newPosition.setX(m_scrollOverridePosition.x()); | |
| 3304 if (m_scrollOverridePosition.y() >= 0) | |
| 3305 newPosition.setY(m_scrollOverridePosition.y()); | |
| 3306 } | |
| 3307 return newPosition; | |
| 3308 } | |
| 3309 | |
| 3285 void FrameView::windowResizerRectChanged() | 3310 void FrameView::windowResizerRectChanged() |
| 3286 { | 3311 { |
| 3287 updateScrollbars(); | 3312 updateScrollbars(); |
| 3288 } | 3313 } |
| 3289 | 3314 |
| 3290 bool FrameView::hasOverlayScrollbars() const | 3315 bool FrameView::hasOverlayScrollbars() const |
| 3291 { | 3316 { |
| 3292 return (m_horizontalScrollbar && m_horizontalScrollbar->isOverlayScrollbar() ) | 3317 return (m_horizontalScrollbar && m_horizontalScrollbar->isOverlayScrollbar() ) |
| 3293 || (m_verticalScrollbar && m_verticalScrollbar->isOverlayScrollbar()); | 3318 || (m_verticalScrollbar && m_verticalScrollbar->isOverlayScrollbar()); |
| 3294 } | 3319 } |
| (...skipping 847 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4142 return m_subtreeThrottled || (m_hiddenForThrottling && m_crossOriginForThrot tling); | 4167 return m_subtreeThrottled || (m_hiddenForThrottling && m_crossOriginForThrot tling); |
| 4143 } | 4168 } |
| 4144 | 4169 |
| 4145 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const | 4170 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const |
| 4146 { | 4171 { |
| 4147 ASSERT(!layoutViewItem().isNull()); | 4172 ASSERT(!layoutViewItem().isNull()); |
| 4148 return *layoutView(); | 4173 return *layoutView(); |
| 4149 } | 4174 } |
| 4150 | 4175 |
| 4151 } // namespace blink | 4176 } // namespace blink |
| OLD | NEW |