summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/scroll/scroll_animator_base.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-05-15 10:20:33 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-05-15 10:28:57 +0000
commitd17ea114e5ef69ad5d5d7413280a13e6428098aa (patch)
tree2c01a75df69f30d27b1432467cfe7c1467a498da /chromium/third_party/blink/renderer/platform/scroll/scroll_animator_base.cc
parent8c5c43c7b138c9b4b0bf56d946e61d3bbc111bec (diff)
downloadqtwebengine-chromium-d17ea114e5ef69ad5d5d7413280a13e6428098aa.tar.gz
BASELINE: Update Chromium to 67.0.3396.47
Change-Id: Idcb1341782e417561a2473eeecc82642dafda5b7 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/scroll/scroll_animator_base.cc')
-rw-r--r--chromium/third_party/blink/renderer/platform/scroll/scroll_animator_base.cc89
1 files changed, 89 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/platform/scroll/scroll_animator_base.cc b/chromium/third_party/blink/renderer/platform/scroll/scroll_animator_base.cc
new file mode 100644
index 00000000000..db194b61fe3
--- /dev/null
+++ b/chromium/third_party/blink/renderer/platform/scroll/scroll_animator_base.cc
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2010, Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "third_party/blink/renderer/platform/scroll/scroll_animator_base.h"
+
+#include "third_party/blink/renderer/platform/scroll/scrollable_area.h"
+#include "third_party/blink/renderer/platform/wtf/math_extras.h"
+
+namespace blink {
+
+ScrollAnimatorBase::ScrollAnimatorBase(ScrollableArea* scrollable_area)
+ : scrollable_area_(scrollable_area) {}
+
+ScrollAnimatorBase::~ScrollAnimatorBase() = default;
+
+ScrollOffset ScrollAnimatorBase::ComputeDeltaToConsume(
+ const ScrollOffset& delta) const {
+ ScrollOffset new_pos =
+ scrollable_area_->ClampScrollOffset(current_offset_ + delta);
+ return new_pos - current_offset_;
+}
+
+ScrollResult ScrollAnimatorBase::UserScroll(ScrollGranularity,
+ const ScrollOffset& delta) {
+ ScrollOffset consumed_delta = ComputeDeltaToConsume(delta);
+ ScrollOffset new_pos = current_offset_ + consumed_delta;
+ if (current_offset_ == new_pos)
+ return ScrollResult(false, false, delta.Width(), delta.Height());
+
+ current_offset_ = new_pos;
+
+ NotifyOffsetChanged();
+
+ return ScrollResult(consumed_delta.Width(), consumed_delta.Height(),
+ delta.Width() - consumed_delta.Width(),
+ delta.Height() - consumed_delta.Height());
+}
+
+void ScrollAnimatorBase::ScrollToOffsetWithoutAnimation(
+ const ScrollOffset& offset) {
+ current_offset_ = offset;
+ NotifyOffsetChanged();
+}
+
+void ScrollAnimatorBase::SetCurrentOffset(const ScrollOffset& offset) {
+ current_offset_ = offset;
+}
+
+ScrollOffset ScrollAnimatorBase::CurrentOffset() const {
+ return current_offset_;
+}
+
+void ScrollAnimatorBase::NotifyOffsetChanged() {
+ ScrollOffsetChanged(current_offset_, kUserScroll);
+}
+
+void ScrollAnimatorBase::Trace(blink::Visitor* visitor) {
+ visitor->Trace(scrollable_area_);
+ ScrollAnimatorCompositorCoordinator::Trace(visitor);
+}
+
+} // namespace blink