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

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

Issue 2387883002: Use float for scroll offset. (Closed)
Patch Set: Fix README.md 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 864 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 !visualViewport.shouldDisableDesktopWorkarounds() && 875 !visualViewport.shouldDisableDesktopWorkarounds() &&
876 !screencastEnabled) { 876 !screencastEnabled) {
877 IntRect boundingBox(visualViewport.viewportToRootFrame( 877 IntRect boundingBox(visualViewport.viewportToRootFrame(
878 IntRect(event.x - event.data.tap.width / 2, 878 IntRect(event.x - event.data.tap.width / 2,
879 event.y - event.data.tap.height / 2, event.data.tap.width, 879 event.y - event.data.tap.height / 2, event.data.tap.width,
880 event.data.tap.height))); 880 event.data.tap.height)));
881 881
882 // TODO(bokan): We shouldn't pass details of the VisualViewport offset 882 // TODO(bokan): We shouldn't pass details of the VisualViewport offset
883 // to render_view_impl. crbug.com/459591 883 // to render_view_impl. crbug.com/459591
884 WebSize visualViewportOffset = 884 WebSize visualViewportOffset =
885 flooredIntSize(visualViewport.location()); 885 flooredIntSize(visualViewport.scrollOffset());
886 886
887 if (m_webSettings->multiTargetTapNotificationEnabled()) { 887 if (m_webSettings->multiTargetTapNotificationEnabled()) {
888 Vector<IntRect> goodTargets; 888 Vector<IntRect> goodTargets;
889 HeapVector<Member<Node>> highlightNodes; 889 HeapVector<Member<Node>> highlightNodes;
890 findGoodTouchTargets(boundingBox, mainFrameImpl()->frame(), 890 findGoodTouchTargets(boundingBox, mainFrameImpl()->frame(),
891 goodTargets, highlightNodes); 891 goodTargets, highlightNodes);
892 // FIXME: replace touch adjustment code when numberOfGoodTargets == 1? 892 // FIXME: replace touch adjustment code when numberOfGoodTargets == 1?
893 // Single candidate case is currently handled by: 893 // Single candidate case is currently handled by:
894 // https://bugs.webkit.org/show_bug.cgi?id=85101 894 // https://bugs.webkit.org/show_bug.cgi?id=85101
895 if (goodTargets.size() >= 2 && m_client && 895 if (goodTargets.size() >= 2 && m_client &&
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1022 double durationInSeconds) { 1022 double durationInSeconds) {
1023 VisualViewport& visualViewport = page()->frameHost().visualViewport(); 1023 VisualViewport& visualViewport = page()->frameHost().visualViewport();
1024 WebPoint clampedPoint = targetPosition; 1024 WebPoint clampedPoint = targetPosition;
1025 if (!useAnchor) { 1025 if (!useAnchor) {
1026 clampedPoint = 1026 clampedPoint =
1027 visualViewport.clampDocumentOffsetAtScale(targetPosition, newScale); 1027 visualViewport.clampDocumentOffsetAtScale(targetPosition, newScale);
1028 if (!durationInSeconds) { 1028 if (!durationInSeconds) {
1029 setPageScaleFactor(newScale); 1029 setPageScaleFactor(newScale);
1030 1030
1031 FrameView* view = mainFrameImpl()->frameView(); 1031 FrameView* view = mainFrameImpl()->frameView();
1032 if (view && view->getScrollableArea()) 1032 if (view && view->getScrollableArea()) {
1033 view->getScrollableArea()->setScrollPosition( 1033 view->getScrollableArea()->setScrollOffset(
1034 DoublePoint(clampedPoint.x, clampedPoint.y), ProgrammaticScroll); 1034 ScrollOffset(clampedPoint.x, clampedPoint.y), ProgrammaticScroll);
1035 }
1035 1036
1036 return false; 1037 return false;
1037 } 1038 }
1038 } 1039 }
1039 if (useAnchor && newScale == pageScaleFactor()) 1040 if (useAnchor && newScale == pageScaleFactor())
1040 return false; 1041 return false;
1041 1042
1042 if (m_enableFakePageScaleAnimationForTesting) { 1043 if (m_enableFakePageScaleAnimationForTesting) {
1043 m_fakePageScaleAnimationTargetPosition = targetPosition; 1044 m_fakePageScaleAnimationTargetPosition = targetPosition;
1044 m_fakePageScaleAnimationUseAnchor = useAnchor; 1045 m_fakePageScaleAnimationUseAnchor = useAnchor;
(...skipping 2339 matching lines...) Expand 10 before | Expand all | Expand 10 after
3384 if (!mainFrameImpl()) 3385 if (!mainFrameImpl())
3385 return; 3386 return;
3386 3387
3387 FrameView* view = mainFrameImpl()->frameView(); 3388 FrameView* view = mainFrameImpl()->frameView();
3388 if (!view) 3389 if (!view)
3389 return; 3390 return;
3390 3391
3391 // Order is important: visual viewport location is clamped based on 3392 // Order is important: visual viewport location is clamped based on
3392 // main frame scroll position and visual viewport scale. 3393 // main frame scroll position and visual viewport scale.
3393 3394
3394 view->setScrollPosition(mainFrameOrigin, ProgrammaticScroll); 3395 view->setScrollOffset(toScrollOffset(mainFrameOrigin), ProgrammaticScroll);
3395 3396
3396 setPageScaleFactor(scaleFactor); 3397 setPageScaleFactor(scaleFactor);
3397 3398
3398 page()->frameHost().visualViewport().setLocation(visualViewportOrigin); 3399 page()->frameHost().visualViewport().setLocation(visualViewportOrigin);
3399 } 3400 }
3400 3401
3401 void WebViewImpl::setPageScaleFactorAndLocation(float scaleFactor, 3402 void WebViewImpl::setPageScaleFactorAndLocation(float scaleFactor,
3402 const FloatPoint& location) { 3403 const FloatPoint& location) {
3403 DCHECK(page()); 3404 DCHECK(page());
3404 3405
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
3696 3697
3697 void WebViewImpl::resetScrollAndScaleState() { 3698 void WebViewImpl::resetScrollAndScaleState() {
3698 page()->frameHost().visualViewport().reset(); 3699 page()->frameHost().visualViewport().reset();
3699 3700
3700 if (!page()->mainFrame()->isLocalFrame()) 3701 if (!page()->mainFrame()->isLocalFrame())
3701 return; 3702 return;
3702 3703
3703 if (FrameView* frameView = toLocalFrame(page()->mainFrame())->view()) { 3704 if (FrameView* frameView = toLocalFrame(page()->mainFrame())->view()) {
3704 ScrollableArea* scrollableArea = frameView->layoutViewportScrollableArea(); 3705 ScrollableArea* scrollableArea = frameView->layoutViewportScrollableArea();
3705 3706
3706 if (scrollableArea->scrollPositionDouble() != DoublePoint::zero()) 3707 if (!scrollableArea->scrollOffset().isZero())
3707 scrollableArea->setScrollPosition(DoublePoint::zero(), 3708 scrollableArea->setScrollOffset(ScrollOffset(), ProgrammaticScroll);
3708 ProgrammaticScroll);
3709 } 3709 }
3710 3710
3711 pageScaleConstraintsSet().setNeedsReset(true); 3711 pageScaleConstraintsSet().setNeedsReset(true);
3712 } 3712 }
3713 3713
3714 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action, 3714 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action,
3715 const WebPoint& location) { 3715 const WebPoint& location) {
3716 HitTestResult result = hitTestResultForViewportPos(location); 3716 HitTestResult result = hitTestResultForViewportPos(location);
3717 Node* node = result.innerNode(); 3717 Node* node = result.innerNode();
3718 if (!isHTMLVideoElement(*node) && !isHTMLAudioElement(*node)) 3718 if (!isHTMLVideoElement(*node) && !isHTMLAudioElement(*node))
(...skipping 1029 matching lines...) Expand 10 before | Expand all | Expand 10 after
4748 if (focusedFrame->localFrameRoot() != mainFrameImpl()->frame()) 4748 if (focusedFrame->localFrameRoot() != mainFrameImpl()->frame())
4749 return nullptr; 4749 return nullptr;
4750 return focusedFrame; 4750 return focusedFrame;
4751 } 4751 }
4752 4752
4753 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const { 4753 LocalFrame* WebViewImpl::focusedLocalFrameAvailableForIme() const {
4754 return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr; 4754 return m_imeAcceptEvents ? focusedLocalFrameInWidget() : nullptr;
4755 } 4755 }
4756 4756
4757 } // namespace blink 4757 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebLocalFrameImpl.cpp ('k') | third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698