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

Side by Side Diff: third_party/WebKit/Source/web/WebViewImpl.cpp

Issue 2387883002: Use float for scroll offset. (Closed)
Patch Set: Created 4 years, 2 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) 2011, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after
1013 double durationInSeconds) { 1013 double durationInSeconds) {
1014 VisualViewport& visualViewport = page()->frameHost().visualViewport(); 1014 VisualViewport& visualViewport = page()->frameHost().visualViewport();
1015 WebPoint clampedPoint = targetPosition; 1015 WebPoint clampedPoint = targetPosition;
1016 if (!useAnchor) { 1016 if (!useAnchor) {
1017 clampedPoint = 1017 clampedPoint =
1018 visualViewport.clampDocumentOffsetAtScale(targetPosition, newScale); 1018 visualViewport.clampDocumentOffsetAtScale(targetPosition, newScale);
1019 if (!durationInSeconds) { 1019 if (!durationInSeconds) {
1020 setPageScaleFactor(newScale); 1020 setPageScaleFactor(newScale);
1021 1021
1022 FrameView* view = mainFrameImpl()->frameView(); 1022 FrameView* view = mainFrameImpl()->frameView();
1023 if (view && view->getScrollableArea()) 1023 if (view && view->getScrollableArea()) {
1024 view->getScrollableArea()->setScrollPosition( 1024 view->getScrollableArea()->setScrollOffset(
1025 DoublePoint(clampedPoint.x, clampedPoint.y), ProgrammaticScroll); 1025 ScrollOffset(clampedPoint.x, clampedPoint.y), ProgrammaticScroll);
1026 }
1026 1027
1027 return false; 1028 return false;
1028 } 1029 }
1029 } 1030 }
1030 if (useAnchor && newScale == pageScaleFactor()) 1031 if (useAnchor && newScale == pageScaleFactor())
1031 return false; 1032 return false;
1032 1033
1033 if (m_enableFakePageScaleAnimationForTesting) { 1034 if (m_enableFakePageScaleAnimationForTesting) {
1034 m_fakePageScaleAnimationTargetPosition = targetPosition; 1035 m_fakePageScaleAnimationTargetPosition = targetPosition;
1035 m_fakePageScaleAnimationUseAnchor = useAnchor; 1036 m_fakePageScaleAnimationUseAnchor = useAnchor;
(...skipping 2325 matching lines...) Expand 10 before | Expand all | Expand 10 after
3361 if (!mainFrameImpl()) 3362 if (!mainFrameImpl())
3362 return; 3363 return;
3363 3364
3364 FrameView* view = mainFrameImpl()->frameView(); 3365 FrameView* view = mainFrameImpl()->frameView();
3365 if (!view) 3366 if (!view)
3366 return; 3367 return;
3367 3368
3368 // Order is important: visual viewport location is clamped based on 3369 // Order is important: visual viewport location is clamped based on
3369 // main frame scroll position and visual viewport scale. 3370 // main frame scroll position and visual viewport scale.
3370 3371
3371 view->setScrollPosition(mainFrameOrigin, ProgrammaticScroll); 3372 view->setScrollOffset(toScrollOffset(mainFrameOrigin), ProgrammaticScroll);
3372 3373
3373 setPageScaleFactor(scaleFactor); 3374 setPageScaleFactor(scaleFactor);
3374 3375
3375 page()->frameHost().visualViewport().setLocation(visualViewportOrigin); 3376 page()->frameHost().visualViewport().setLocation(visualViewportOrigin);
3376 } 3377 }
3377 3378
3378 void WebViewImpl::setPageScaleFactorAndLocation(float scaleFactor, 3379 void WebViewImpl::setPageScaleFactorAndLocation(float scaleFactor,
3379 const FloatPoint& location) { 3380 const FloatPoint& location) {
3380 DCHECK(page()); 3381 DCHECK(page());
3381 3382
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
3672 3673
3673 void WebViewImpl::resetScrollAndScaleState() { 3674 void WebViewImpl::resetScrollAndScaleState() {
3674 page()->frameHost().visualViewport().reset(); 3675 page()->frameHost().visualViewport().reset();
3675 3676
3676 if (!page()->mainFrame()->isLocalFrame()) 3677 if (!page()->mainFrame()->isLocalFrame())
3677 return; 3678 return;
3678 3679
3679 if (FrameView* frameView = toLocalFrame(page()->mainFrame())->view()) { 3680 if (FrameView* frameView = toLocalFrame(page()->mainFrame())->view()) {
3680 ScrollableArea* scrollableArea = frameView->layoutViewportScrollableArea(); 3681 ScrollableArea* scrollableArea = frameView->layoutViewportScrollableArea();
3681 3682
3682 if (scrollableArea->scrollPositionDouble() != DoublePoint::zero()) 3683 if (!scrollableArea->scrollOffset().isZero())
3683 scrollableArea->setScrollPosition(DoublePoint::zero(), 3684 scrollableArea->setScrollOffset(ScrollOffset(), ProgrammaticScroll);
3684 ProgrammaticScroll);
3685 } 3685 }
3686 3686
3687 pageScaleConstraintsSet().setNeedsReset(true); 3687 pageScaleConstraintsSet().setNeedsReset(true);
3688 } 3688 }
3689 3689
3690 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action, 3690 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action,
3691 const WebPoint& location) { 3691 const WebPoint& location) {
3692 HitTestResult result = hitTestResultForViewportPos(location); 3692 HitTestResult result = hitTestResultForViewportPos(location);
3693 Node* node = result.innerNode(); 3693 Node* node = result.innerNode();
3694 if (!isHTMLVideoElement(*node) && !isHTMLAudioElement(*node)) 3694 if (!isHTMLVideoElement(*node) && !isHTMLAudioElement(*node))
(...skipping 1001 matching lines...) Expand 10 before | Expand all | Expand 10 after
4696 if (focusedFrame->localFrameRoot() != mainFrameImpl()->frame()) 4696 if (focusedFrame->localFrameRoot() != mainFrameImpl()->frame())
4697 return nullptr; 4697 return nullptr;
4698 return focusedFrame; 4698 return focusedFrame;
4699 } 4699 }
4700 4700
4701 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const { 4701 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const {
4702 return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr; 4702 return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr;
4703 } 4703 }
4704 4704
4705 } // namespace blink 4705 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698