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

Unified Diff: third_party/WebKit/Source/core/dom/Element.cpp

Issue 2911103002: Revert of Implement Element.scrollIntoView for scroll-behavior: smooth. (Closed)
Patch Set: Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/core/dom/Element.h ('k') | third_party/WebKit/Source/core/dom/Element.idl » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/dom/Element.cpp
diff --git a/third_party/WebKit/Source/core/dom/Element.cpp b/third_party/WebKit/Source/core/dom/Element.cpp
index 18ec4fe437006de16562acfa3dc242457b3cfd7d..3f81b6d16ea1a13085c0da5c6c8f7578f0135a2b 100644
--- a/third_party/WebKit/Source/core/dom/Element.cpp
+++ b/third_party/WebKit/Source/core/dom/Element.cpp
@@ -30,7 +30,6 @@
#include "bindings/core/v8/Dictionary.h"
#include "bindings/core/v8/ExceptionMessages.h"
#include "bindings/core/v8/ExceptionState.h"
-#include "bindings/core/v8/ScrollIntoViewOptionsOrBoolean.h"
#include "bindings/core/v8/V8DOMActivityLogger.h"
#include "core/CSSValueKeywords.h"
#include "core/SVGNames.h"
@@ -96,7 +95,6 @@
#include "core/frame/LocalDOMWindow.h"
#include "core/frame/LocalFrame.h"
#include "core/frame/LocalFrameView.h"
-#include "core/frame/ScrollIntoViewOptions.h"
#include "core/frame/ScrollToOptions.h"
#include "core/frame/Settings.h"
#include "core/frame/UseCounter.h"
@@ -143,7 +141,6 @@
#include "platform/graphics/CompositorMutableProperties.h"
#include "platform/graphics/CompositorMutation.h"
#include "platform/scroll/ScrollableArea.h"
-#include "platform/scroll/SmoothScrollSequencer.h"
#include "platform/wtf/BitVector.h"
#include "platform/wtf/HashFunctions.h"
#include "platform/wtf/text/CString.h"
@@ -441,88 +438,27 @@
EnsureElementRareData().SetNonce(nonce);
}
-void Element::scrollIntoView(ScrollIntoViewOptionsOrBoolean arg) {
- ScrollIntoViewOptions options;
- if (arg.isBoolean()) {
- if (arg.getAsBoolean())
- options.setBlock("start");
- else
- options.setBlock("end");
- options.setInlinePosition("nearest");
- } else if (arg.isScrollIntoViewOptions()) {
- options = arg.getAsScrollIntoViewOptions();
- if (!RuntimeEnabledFeatures::cssomSmoothScrollEnabled() &&
- options.behavior() == "smooth") {
- options.setBehavior("instant");
- }
- }
- scrollIntoViewWithOptions(options);
-}
-
void Element::scrollIntoView(bool align_to_top) {
- ScrollIntoViewOptionsOrBoolean arg;
- arg.setBoolean(align_to_top);
- scrollIntoView(arg);
-}
-
-static ScrollAlignment ToPhysicalAlignment(const ScrollIntoViewOptions& options,
- ScrollOrientation axis,
- bool is_horizontal_writing_mode) {
- String alignment =
- ((axis == kHorizontalScroll && is_horizontal_writing_mode) ||
- (axis == kVerticalScroll && !is_horizontal_writing_mode))
- ? options.inlinePosition()
- : options.block();
-
- if (alignment == "center")
- return ScrollAlignment::kAlignCenterAlways;
- if (alignment == "nearest")
- return ScrollAlignment::kAlignToEdgeIfNeeded;
- if (alignment == "start") {
- return (axis == kHorizontalScroll) ? ScrollAlignment::kAlignLeftAlways
- : ScrollAlignment::kAlignTopAlways;
- }
- if (alignment == "end") {
- return (axis == kHorizontalScroll) ? ScrollAlignment::kAlignRightAlways
- : ScrollAlignment::kAlignBottomAlways;
- }
-
- // Default values
- if (is_horizontal_writing_mode) {
- return (axis == kHorizontalScroll) ? ScrollAlignment::kAlignToEdgeIfNeeded
- : ScrollAlignment::kAlignTopAlways;
- }
- return (axis == kHorizontalScroll) ? ScrollAlignment::kAlignLeftAlways
- : ScrollAlignment::kAlignToEdgeIfNeeded;
-}
-
-void Element::scrollIntoViewWithOptions(const ScrollIntoViewOptions& options) {
GetDocument().EnsurePaintLocationDataValidForNode(this);
- if (!GetLayoutObject() || !GetDocument().GetPage())
+ if (!GetLayoutObject())
return;
bool make_visible_in_visual_viewport =
!GetDocument().GetPage()->GetSettings().GetInertVisualViewport();
- ScrollBehavior behavior = (options.behavior() == "smooth")
- ? kScrollBehaviorSmooth
- : kScrollBehaviorAuto;
-
- bool is_horizontal_writing_mode =
- GetComputedStyle()->IsHorizontalWritingMode();
- ScrollAlignment align_x = ToPhysicalAlignment(options, kHorizontalScroll,
- is_horizontal_writing_mode);
- ScrollAlignment align_y =
- ToPhysicalAlignment(options, kVerticalScroll, is_horizontal_writing_mode);
-
- GetDocument().GetPage()->GetSmoothScrollSequencer()->AbortAnimations();
LayoutRect bounds = BoundingBox();
- GetLayoutObject()->ScrollRectToVisible(
- bounds, align_x, align_y, kProgrammaticScroll,
- make_visible_in_visual_viewport, behavior);
-
- GetDocument().GetPage()->GetSmoothScrollSequencer()->RunQueuedAnimations();
+ // Align to the top / bottom and to the closest edge.
+ if (align_to_top)
+ GetLayoutObject()->ScrollRectToVisible(
+ bounds, ScrollAlignment::kAlignToEdgeIfNeeded,
+ ScrollAlignment::kAlignTopAlways, kProgrammaticScroll,
+ make_visible_in_visual_viewport);
+ else
+ GetLayoutObject()->ScrollRectToVisible(
+ bounds, ScrollAlignment::kAlignToEdgeIfNeeded,
+ ScrollAlignment::kAlignBottomAlways, kProgrammaticScroll,
+ make_visible_in_visual_viewport);
GetDocument().SetSequentialFocusNavigationStartingPoint(this);
}
« no previous file with comments | « third_party/WebKit/Source/core/dom/Element.h ('k') | third_party/WebKit/Source/core/dom/Element.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698