15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "webkit/support/web_gesture_curve_mock.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebFloatSize.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebGestureCurveTarget.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "webkit/support/weburl_loader_mock_factory.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebGestureCurveMock::WebGestureCurveMock(const WebKit::WebFloatPoint& velocity, 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebKit::WebSize& cumulative_scroll) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : velocity_(velocity), 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cumulative_scroll_(cumulative_scroll) { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebGestureCurveMock::~WebGestureCurveMock() { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebGestureCurveMock::apply(double time, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebGestureCurveTarget* target) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebSize displacement(velocity_.x * time, velocity_.y * time); 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebKit::WebFloatSize increment(displacement.width - cumulative_scroll_.width, 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) displacement.height - cumulative_scroll_.height); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cumulative_scroll_ = displacement; 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) target->notifyCurrentFlingVelocity(WebKit::WebFloatSize(velocity_.x, 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) velocity_.y)); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // scrollBy() could delete this curve if the animation is over, so don't 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // touch any member variables after making that call. 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) target->scrollBy(increment); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 33