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

Side by Side Diff: tools/telemetry/telemetry/page/actions/drag.js

Issue 955653003: Adding Maps page to page_sets for telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mousedrag2
Patch Set: Addressed comments. Created 5 years, 9 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
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // This file provides the DragAction object, which performs drag on a page
6 // using given start and end positions:
7 // 1. var action = new __DragAction(callback)
8 // 2. action.start(drag_options)
9 'use strict';
10
11 (function() {
12 function DragGestureOptions(opt_options) {
13 this.element_ = opt_options.element;
14 this.left_start_ratio_ = opt_options.left_start_ratio;
15 this.top_start_ratio_ = opt_options.top_start_ratio;
16 this.left_end_ratio_ = opt_options.left_end_ratio;
17 this.top_end_ratio_ = opt_options.top_end_ratio;
18 this.speed_ = opt_options.speed;
19 this.gesture_source_type_ = opt_options.gesture_source_type;
20 }
21
22 function supportedByBrowser() {
23 return !!(window.chrome &&
24 chrome.gpuBenchmarking &&
25 chrome.gpuBenchmarking.smoothDrag);
26 }
27
28 // This class performs drag action using given start and end positions,
29 // by a single drag gesture.
30 function DragAction(opt_callback) {
31 this.beginMeasuringHook = function() {}
32 this.endMeasuringHook = function() {}
33
34 this.callback_ = opt_callback;
35 }
36
37 DragAction.prototype.start = function(opt_options) {
38 this.options_ = new DragGestureOptions(opt_options);
39 requestAnimationFrame(this.startGesture_.bind(this));
40 };
41
42 DragAction.prototype.startGesture_ = function() {
43 this.beginMeasuringHook();
44
45 var rect = __GestureCommon_GetBoundingVisibleRect(this.options_.element_);
46 var start_left =
47 rect.left + (rect.width * this.options_.left_start_ratio_);
48 var start_top =
49 rect.top + (rect.height * this.options_.top_start_ratio_);
50 var end_left =
51 rect.left + (rect.width * this.options_.left_end_ratio_);
52 var end_top =
53 rect.top + (rect.height * this.options_.top_end_ratio_);
54 chrome.gpuBenchmarking.smoothDrag(
55 start_left, start_top, end_left, end_top,
56 this.onGestureComplete_.bind(this), this.options_.gesture_source_type_,
57 this.options_.speed_);
58 };
59
60 DragAction.prototype.onGestureComplete_ = function() {
61 this.endMeasuringHook();
62
63 // We're done.
64 if (this.callback_)
65 this.callback_();
66 };
67
68 window.__DragAction = DragAction;
69 window.__DragAction_SupportedByBrowser = supportedByBrowser;
70 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698