Commit 043b97ce authored by Sandra Sun's avatar Sandra Sun Committed by Commit Bot

Reland "Correctly initialize and test SnapContainerData in cc."

This reverts commit 0fc70abb.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Revert "Correctly initialize and test SnapContainerData in cc."
> 
> This reverts commit 37061f87.
> 
> Reason for revert:
> The layout tests added by this CL is failing on the CL:
> https://ci.chromium.org/buildbot/chromium.webkit/WebKit%20Win10/37804
> 
> Original change's description:
> > Correctly initialize and test SnapContainerData in cc.
> > 
> > This patch initializes the rect_ field in SnapContainerData in copy
> > constructor and move constructor. Fixing a snapping issue in the
> > composited pages.
> > 
> > We also adds external/wpt/css/css-scroll-snap/ to the virtual/threaded
> > test suite so that they are tested with the composited cases.
> > 
> > snap-at-user-scroll-end-manual-automation.js calls
> > mouseClickInTarget() of pointerevent_common_input.js. That method
> > invokes programmatic scrolls. The test was written before programmatic
> > scroll snapping was implemented so it worked at that time. However,
> > with programmatic scroll snapping implemented, it will always snap
> > in mouseClickIntarget() and cannot test whether the user scroll snaps.
> > This patch adds a parameter shouldScrollToTarget to mouseClickInTarget
> > to avoid invoking programmatic scrolls in the test.
> > 
> > This patch also checks nullptr for layout_box in
> > ScrollManager::SnapAtGestureScrollEnd() to fix a crash.
> > 
> > Bug: 862406, 862571
> > Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
> > Change-Id: I6a53818cf74421a4100ad6f908158abf302a5b8e
> > Reviewed-on: https://chromium-review.googlesource.com/1132386
> > Commit-Queue: Sandra Sun <sunyunjia@chromium.org>
> > Reviewed-by: Majid Valipour <majidvp@chromium.org>
> > Reviewed-by: Robert Flack <flackr@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#574781}
> 
> TBR=flackr@chromium.org,majidvp@chromium.org,sunyunjia@chromium.org
> 
> Change-Id: I55c77c05c0381c8ac638bd106d2d18b1b4332745
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: 862406, 862571
> Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
> Reviewed-on: https://chromium-review.googlesource.com/1136171
> Reviewed-by: Taiju Tsuiki <tzik@chromium.org>
> Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#574825}

TBR=flackr@chromium.org,majidvp@chromium.org,sunyunjia@chromium.org,tzik@chromium.org

Change-Id: I4a9480b68c15e0dfcfd13df6ed6c0e6b8ab5a8e3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 862406, 862571
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Reviewed-on: https://chromium-review.googlesource.com/1136671Reviewed-by: default avatarSandra Sun <sunyunjia@chromium.org>
Commit-Queue: Sandra Sun <sunyunjia@chromium.org>
Cr-Commit-Position: refs/heads/master@{#574926}
parent 7d984150
......@@ -73,24 +73,15 @@ SnapContainerData::SnapContainerData(ScrollSnapType type,
SnapContainerData::SnapContainerData(const SnapContainerData& other) = default;
SnapContainerData::SnapContainerData(SnapContainerData&& other)
: scroll_snap_type_(other.scroll_snap_type_),
max_position_(other.max_position_),
proximity_range_(other.proximity_range_),
snap_area_list_(std::move(other.snap_area_list_)) {}
SnapContainerData::SnapContainerData(SnapContainerData&& other) = default;
SnapContainerData::~SnapContainerData() = default;
SnapContainerData& SnapContainerData::operator=(
const SnapContainerData& other) = default;
SnapContainerData& SnapContainerData::operator=(SnapContainerData&& other) {
scroll_snap_type_ = other.scroll_snap_type_;
max_position_ = other.max_position_;
proximity_range_ = other.proximity_range_;
snap_area_list_ = std::move(other.snap_area_list_);
return *this;
}
SnapContainerData& SnapContainerData::operator=(SnapContainerData&& other) =
default;
void SnapContainerData::AddSnapAreaData(SnapAreaData snap_area_data) {
snap_area_list_.push_back(snap_area_data);
......
......@@ -34,6 +34,11 @@
"base": "http/tests/worklet",
"args": ["--enable-threaded-compositing"]
},
{
"prefix": "threaded",
"base": "external/wpt/css/css-scroll-snap",
"args": ["--enable-threaded-compositing"]
},
{
"prefix": "threaded",
"base": "compositing/webgl",
......
......@@ -45,6 +45,7 @@ body {
</div>
<script>
var snap_test = async_test('Tests that window should snap at user scroll end.');
var body = document.body;
var button = document.getElementById("btn");
var target = document.getElementById("target");
......@@ -80,7 +81,7 @@ button.onclick = function() {
// To make the test result visible.
var content = document.getElementById("content");
body.removeChild(content);
done();
snap_test.done();
}
</script>
\ No newline at end of file
</script>
......@@ -36,9 +36,10 @@ function waitForAnimationEnd() {
}
function inject_input() {
return smoothScroll(2, 20, 20, 'downright', 4000).then(() => {
return smoothScroll(100, 20, 20, 'downright', 4000).then(() => {
return waitForAnimationEnd();
}).then(() => {
return mouseClickInTarget('#btn');
return mouseClickInTarget('#btn', undefined, 'left',
/* shouldScrollToTarget = */ false);
});
}
\ No newline at end of file
}
......@@ -107,7 +107,7 @@ function mouseChordedButtonPress(targetSelector) {
});
}
function mouseClickInTarget(targetSelector, targetFrame, button) {
function mouseClickInTarget(targetSelector, targetFrame, button, shouldScrollToTarget = true) {
var targetDocument = document;
var frameLeft = 0;
var frameTop = 0;
......@@ -122,7 +122,8 @@ function mouseClickInTarget(targetSelector, targetFrame, button) {
}
return new Promise(function(resolve, reject) {
if (window.chrome && chrome.gpuBenchmarking) {
scrollPageIfNeeded(targetSelector, targetDocument);
if (shouldScrollToTarget)
scrollPageIfNeeded(targetSelector, targetDocument);
var target = targetDocument.querySelector(targetSelector);
var targetRect = target.getBoundingClientRect();
var xPosition = frameLeft + targetRect.left + boundaryOffset;
......
# This suite runs the test in external/wpt/css/css-scroll-snap/ with
# --enable-threaded-compositing
\ No newline at end of file
......@@ -628,10 +628,10 @@ void ScrollManager::SnapAtGestureScrollEnd() {
return;
SnapCoordinator* snap_coordinator =
frame_->GetDocument()->GetSnapCoordinator();
if (!snap_coordinator)
LayoutBox* layout_box = LayoutBoxForSnapping();
if (!snap_coordinator || !layout_box)
return;
LayoutBox* layout_box = LayoutBoxForSnapping();
snap_coordinator->PerformSnapping(*layout_box,
did_scroll_x_for_scroll_gesture_,
did_scroll_y_for_scroll_gesture_);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment