OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file provides the DragAction object, which performs drag on a page | 5 // This file provides the DragAction object, which performs drag on a page |
6 // using given start and end positions: | 6 // using given start and end positions: |
7 // 1. var action = new __DragAction(callback) | 7 // 1. var action = new __DragAction(callback) |
8 // 2. action.start(drag_options) | 8 // 2. action.start(drag_options) |
9 'use strict'; | 9 'use strict'; |
10 | 10 |
11 (function() { | 11 (function() { |
12 function DragGestureOptions(opt_options) { | 12 function DragGestureOptions(opt_options) { |
13 this.element_ = opt_options.element; | 13 this.element_ = opt_options.element; |
14 this.left_start_ratio_ = opt_options.left_start_ratio; | 14 this.left_start_ratio_ = opt_options.left_start_ratio; |
15 this.top_start_ratio_ = opt_options.top_start_ratio; | 15 this.top_start_ratio_ = opt_options.top_start_ratio; |
16 this.left_end_ratio_ = opt_options.left_end_ratio; | 16 this.left_end_ratio_ = opt_options.left_end_ratio; |
17 this.top_end_ratio_ = opt_options.top_end_ratio; | 17 this.top_end_ratio_ = opt_options.top_end_ratio; |
18 this.speed_ = opt_options.speed; | 18 this.speed_ = opt_options.speed; |
19 this.gesture_source_type_ = opt_options.gesture_source_type; | 19 this.gesture_source_type_ = opt_options.gesture_source_type; |
20 } | 20 } |
21 | 21 |
22 function supportedByBrowser() { | 22 function supportedByBrowser() { |
23 return !!(window.chrome && | 23 return !!(window.chrome && |
24 chrome.gpuBenchmarking && | 24 chrome.gpuBenchmarking && |
25 chrome.gpuBenchmarking.smoothDrag); | 25 chrome.gpuBenchmarking.smoothDrag && |
| 26 chrome.gpuBenchmarking.visualViewportHeight && |
| 27 chrome.gpuBenchmarking.visualViewportWidth); |
26 } | 28 } |
27 | 29 |
28 // This class performs drag action using given start and end positions, | 30 // This class performs drag action using given start and end positions, |
29 // by a single drag gesture. | 31 // by a single drag gesture. |
30 function DragAction(opt_callback) { | 32 function DragAction(opt_callback) { |
31 this.beginMeasuringHook = function() {} | 33 this.beginMeasuringHook = function() {}; |
32 this.endMeasuringHook = function() {} | 34 this.endMeasuringHook = function() {}; |
33 | 35 |
34 this.callback_ = opt_callback; | 36 this.callback_ = opt_callback; |
35 } | 37 } |
36 | 38 |
37 DragAction.prototype.start = function(opt_options) { | 39 DragAction.prototype.start = function(opt_options) { |
38 this.options_ = new DragGestureOptions(opt_options); | 40 this.options_ = new DragGestureOptions(opt_options); |
39 requestAnimationFrame(this.startGesture_.bind(this)); | 41 requestAnimationFrame(this.startGesture_.bind(this)); |
40 }; | 42 }; |
41 | 43 |
42 DragAction.prototype.startGesture_ = function() { | 44 DragAction.prototype.startGesture_ = function() { |
(...skipping 18 matching lines...) Expand all Loading... |
61 this.endMeasuringHook(); | 63 this.endMeasuringHook(); |
62 | 64 |
63 // We're done. | 65 // We're done. |
64 if (this.callback_) | 66 if (this.callback_) |
65 this.callback_(); | 67 this.callback_(); |
66 }; | 68 }; |
67 | 69 |
68 window.__DragAction = DragAction; | 70 window.__DragAction = DragAction; |
69 window.__DragAction_SupportedByBrowser = supportedByBrowser; | 71 window.__DragAction_SupportedByBrowser = supportedByBrowser; |
70 })(); | 72 })(); |
OLD | NEW |