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

Side by Side Diff: third_party/WebKit/Source/core/dom/Element.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) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Peter Kelly (pmk@post.com) 4 * (C) 2001 Peter Kelly (pmk@post.com)
5 * (C) 2001 Dirk Mueller (mueller@kde.org) 5 * (C) 2001 Dirk Mueller (mueller@kde.org)
6 * (C) 2007 David Smith (catfish.man@gmail.com) 6 * (C) 2007 David Smith (catfish.man@gmail.com)
7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved. 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved.
8 * (C) 2007 Eric Seidel (eric@webkit.org) 8 * (C) 2007 Eric Seidel (eric@webkit.org)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 892 matching lines...) Expand 10 before | Expand all | Expand 10 after
903 double top = 903 double top =
904 scrollToOptions.hasTop() 904 scrollToOptions.hasTop()
905 ? ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.top()) 905 ? ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.top())
906 : 0.0; 906 : 0.0;
907 907
908 ScrollBehavior scrollBehavior = ScrollBehaviorAuto; 908 ScrollBehavior scrollBehavior = ScrollBehaviorAuto;
909 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), 909 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(),
910 scrollBehavior); 910 scrollBehavior);
911 LayoutBox* box = layoutBox(); 911 LayoutBox* box = layoutBox();
912 if (box) { 912 if (box) {
913 double currentScaledLeft = box->scrollLeft(); 913 float currentScaledLeft = box->scrollLeft().toFloat();
914 double currentScaledTop = box->scrollTop(); 914 float currentScaledTop = box->scrollTop().toFloat();
915 double newScaledLeft = 915 float newScaledLeft =
916 left * box->style()->effectiveZoom() + currentScaledLeft; 916 left * box->style()->effectiveZoom() + currentScaledLeft;
917 double newScaledTop = 917 float newScaledTop = top * box->style()->effectiveZoom() + currentScaledTop;
918 top * box->style()->effectiveZoom() + currentScaledTop; 918 box->scrollToPosition(FloatPoint(newScaledLeft, newScaledTop),
919 box->scrollToOffset(DoubleSize(newScaledLeft, newScaledTop), 919 scrollBehavior);
920 scrollBehavior);
921 } 920 }
922 } 921 }
923 922
924 void Element::scrollLayoutBoxTo(const ScrollToOptions& scrollToOptions) { 923 void Element::scrollLayoutBoxTo(const ScrollToOptions& scrollToOptions) {
925 ScrollBehavior scrollBehavior = ScrollBehaviorAuto; 924 ScrollBehavior scrollBehavior = ScrollBehaviorAuto;
926 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), 925 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(),
927 scrollBehavior); 926 scrollBehavior);
928 927
929 LayoutBox* box = layoutBox(); 928 LayoutBox* box = layoutBox();
930 if (box) { 929 if (box) {
931 double scaledLeft = box->scrollLeft(); 930 float scaledLeft = box->scrollLeft().toFloat();
932 double scaledTop = box->scrollTop(); 931 float scaledTop = box->scrollTop().toFloat();
933 if (scrollToOptions.hasLeft()) 932 if (scrollToOptions.hasLeft())
934 scaledLeft = 933 scaledLeft =
935 ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.left()) * 934 ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.left()) *
936 box->style()->effectiveZoom(); 935 box->style()->effectiveZoom();
937 if (scrollToOptions.hasTop()) 936 if (scrollToOptions.hasTop())
938 scaledTop = 937 scaledTop =
939 ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.top()) * 938 ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.top()) *
940 box->style()->effectiveZoom(); 939 box->style()->effectiveZoom();
941 box->scrollToOffset(DoubleSize(scaledLeft, scaledTop), scrollBehavior); 940 box->scrollToPosition(FloatPoint(scaledLeft, scaledTop), scrollBehavior);
942 } 941 }
943 } 942 }
944 943
945 void Element::scrollFrameBy(const ScrollToOptions& scrollToOptions) { 944 void Element::scrollFrameBy(const ScrollToOptions& scrollToOptions) {
946 double left = 945 double left =
947 scrollToOptions.hasLeft() 946 scrollToOptions.hasLeft()
948 ? ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.left()) 947 ? ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.left())
949 : 0.0; 948 : 0.0;
950 double top = 949 double top =
951 scrollToOptions.hasTop() 950 scrollToOptions.hasTop()
952 ? ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.top()) 951 ? ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.top())
953 : 0.0; 952 : 0.0;
954 953
955 ScrollBehavior scrollBehavior = ScrollBehaviorAuto; 954 ScrollBehavior scrollBehavior = ScrollBehaviorAuto;
956 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), 955 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(),
957 scrollBehavior); 956 scrollBehavior);
958 LocalFrame* frame = document().frame(); 957 LocalFrame* frame = document().frame();
959 if (!frame) 958 if (!frame)
960 return; 959 return;
961 ScrollableArea* viewport = 960 ScrollableArea* viewport =
962 frame->view() ? frame->view()->getScrollableArea() : 0; 961 frame->view() ? frame->view()->getScrollableArea() : 0;
963 if (!viewport) 962 if (!viewport)
964 return; 963 return;
965 964
966 double newScaledLeft = 965 float newScaledLeft =
967 left * frame->pageZoomFactor() + viewport->scrollPositionDouble().x(); 966 left * frame->pageZoomFactor() + viewport->scrollOffset().width();
968 double newScaledTop = 967 float newScaledTop =
969 top * frame->pageZoomFactor() + viewport->scrollPositionDouble().y(); 968 top * frame->pageZoomFactor() + viewport->scrollOffset().height();
970 viewport->setScrollPosition(DoublePoint(newScaledLeft, newScaledTop), 969 viewport->setScrollOffset(ScrollOffset(newScaledLeft, newScaledTop),
971 ProgrammaticScroll, scrollBehavior); 970 ProgrammaticScroll, scrollBehavior);
972 } 971 }
973 972
974 void Element::scrollFrameTo(const ScrollToOptions& scrollToOptions) { 973 void Element::scrollFrameTo(const ScrollToOptions& scrollToOptions) {
975 ScrollBehavior scrollBehavior = ScrollBehaviorAuto; 974 ScrollBehavior scrollBehavior = ScrollBehaviorAuto;
976 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), 975 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(),
977 scrollBehavior); 976 scrollBehavior);
978 LocalFrame* frame = document().frame(); 977 LocalFrame* frame = document().frame();
979 if (!frame) 978 if (!frame)
980 return; 979 return;
981 ScrollableArea* viewport = 980 ScrollableArea* viewport =
982 frame->view() ? frame->view()->getScrollableArea() : 0; 981 frame->view() ? frame->view()->getScrollableArea() : 0;
983 if (!viewport) 982 if (!viewport)
984 return; 983 return;
985 984
986 double scaledLeft = viewport->scrollPositionDouble().x(); 985 float scaledLeft = viewport->scrollOffset().width();
987 double scaledTop = viewport->scrollPositionDouble().y(); 986 float scaledTop = viewport->scrollOffset().height();
988 if (scrollToOptions.hasLeft()) 987 if (scrollToOptions.hasLeft())
989 scaledLeft = 988 scaledLeft =
990 ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.left()) * 989 ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.left()) *
991 frame->pageZoomFactor(); 990 frame->pageZoomFactor();
992 if (scrollToOptions.hasTop()) 991 if (scrollToOptions.hasTop())
993 scaledTop = 992 scaledTop =
994 ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.top()) * 993 ScrollableArea::normalizeNonFiniteScroll(scrollToOptions.top()) *
995 frame->pageZoomFactor(); 994 frame->pageZoomFactor();
996 viewport->setScrollPosition(DoublePoint(scaledLeft, scaledTop), 995 viewport->setScrollOffset(ScrollOffset(scaledLeft, scaledTop),
997 ProgrammaticScroll, scrollBehavior); 996 ProgrammaticScroll, scrollBehavior);
998 } 997 }
999 998
1000 bool Element::hasCompositorProxy() const { 999 bool Element::hasCompositorProxy() const {
1001 return hasRareData() && elementRareData()->proxiedPropertyCounts(); 1000 return hasRareData() && elementRareData()->proxiedPropertyCounts();
1002 } 1001 }
1003 1002
1004 void Element::incrementCompositorProxiedProperties(uint32_t mutableProperties) { 1003 void Element::incrementCompositorProxiedProperties(uint32_t mutableProperties) {
1005 ElementRareData& rareData = ensureElementRareData(); 1004 ElementRareData& rareData = ensureElementRareData();
1006 if (!rareData.proxiedPropertyCounts()) 1005 if (!rareData.proxiedPropertyCounts())
1007 setNeedsStyleRecalc(LocalStyleChange, 1006 setNeedsStyleRecalc(LocalStyleChange,
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after
1591 false); 1590 false);
1592 } 1591 }
1593 } 1592 }
1594 1593
1595 if (Fullscreen* fullscreen = Fullscreen::fromIfExists(document())) 1594 if (Fullscreen* fullscreen = Fullscreen::fromIfExists(document()))
1596 fullscreen->elementRemoved(*this); 1595 fullscreen->elementRemoved(*this);
1597 1596
1598 if (document().page()) 1597 if (document().page())
1599 document().page()->pointerLockController().elementRemoved(this); 1598 document().page()->pointerLockController().elementRemoved(this);
1600 1599
1601 setSavedLayerScrollOffset(IntSize()); 1600 setSavedLayerScrollOffset(ScrollOffset());
1602 1601
1603 if (insertionPoint->isInTreeScope() && treeScope() == document()) { 1602 if (insertionPoint->isInTreeScope() && treeScope() == document()) {
1604 const AtomicString& idValue = getIdAttribute(); 1603 const AtomicString& idValue = getIdAttribute();
1605 if (!idValue.isNull()) 1604 if (!idValue.isNull())
1606 updateId(insertionPoint->treeScope(), idValue, nullAtom); 1605 updateId(insertionPoint->treeScope(), idValue, nullAtom);
1607 1606
1608 const AtomicString& nameValue = getNameAttribute(); 1607 const AtomicString& nameValue = getNameAttribute();
1609 if (!nameValue.isNull()) 1608 if (!nameValue.isNull())
1610 updateName(nameValue, nullAtom); 1609 updateName(nameValue, nullAtom);
1611 } 1610 }
(...skipping 1964 matching lines...) Expand 10 before | Expand all | Expand 10 after
3576 toHTMLDocument(document()).removeExtraNamedItem(oldId); 3575 toHTMLDocument(document()).removeExtraNamedItem(oldId);
3577 3576
3578 if (!newId.isEmpty()) 3577 if (!newId.isEmpty())
3579 toHTMLDocument(document()).addExtraNamedItem(newId); 3578 toHTMLDocument(document()).addExtraNamedItem(newId);
3580 } 3579 }
3581 3580
3582 void Element::scheduleSVGFilterLayerUpdateHack() { 3581 void Element::scheduleSVGFilterLayerUpdateHack() {
3583 document().scheduleSVGFilterLayerUpdateHack(*this); 3582 document().scheduleSVGFilterLayerUpdateHack(*this);
3584 } 3583 }
3585 3584
3586 IntSize Element::savedLayerScrollOffset() const { 3585 ScrollOffset Element::savedLayerScrollOffset() const {
3587 return hasRareData() ? elementRareData()->savedLayerScrollOffset() 3586 return hasRareData() ? elementRareData()->savedLayerScrollOffset()
3588 : IntSize(); 3587 : ScrollOffset();
3589 } 3588 }
3590 3589
3591 void Element::setSavedLayerScrollOffset(const IntSize& size) { 3590 void Element::setSavedLayerScrollOffset(const ScrollOffset& size) {
3592 if (size.isZero() && !hasRareData()) 3591 if (size.isZero() && !hasRareData())
3593 return; 3592 return;
3594 ensureElementRareData().setSavedLayerScrollOffset(size); 3593 ensureElementRareData().setSavedLayerScrollOffset(size);
3595 } 3594 }
3596 3595
3597 Attr* Element::attrIfExists(const QualifiedName& name) { 3596 Attr* Element::attrIfExists(const QualifiedName& name) {
3598 if (AttrNodeList* attrNodeList = this->attrNodeList()) { 3597 if (AttrNodeList* attrNodeList = this->attrNodeList()) {
3599 bool shouldIgnoreCase = shouldIgnoreAttributeCase(); 3598 bool shouldIgnoreCase = shouldIgnoreAttributeCase();
3600 for (const auto& attr : *attrNodeList) { 3599 for (const auto& attr : *attrNodeList) {
3601 if (attr->getQualifiedName().matchesPossiblyIgnoringCase( 3600 if (attr->getQualifiedName().matchesPossiblyIgnoringCase(
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after
4046 } 4045 }
4047 4046
4048 DEFINE_TRACE_WRAPPERS(Element) { 4047 DEFINE_TRACE_WRAPPERS(Element) {
4049 if (hasRareData()) { 4048 if (hasRareData()) {
4050 visitor->traceWrappers(elementRareData()); 4049 visitor->traceWrappers(elementRareData());
4051 } 4050 }
4052 ContainerNode::traceWrappers(visitor); 4051 ContainerNode::traceWrappers(visitor);
4053 } 4052 }
4054 4053
4055 } // namespace blink 4054 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698