OLD | NEW |
| (Empty) |
1 // Copyright 2013 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 'use strict'; | |
6 | |
7 (function() { | |
8 | |
9 function TapGestureOptions(opt_options) { | |
10 if (opt_options) { | |
11 this.element_ = opt_options.element; | |
12 this.left_position_percentage_ = opt_options.left_position_percentage; | |
13 this.top_position_percentage_ = opt_options.top_position_percentage; | |
14 this.duration_ms_ = opt_options.duration_ms; | |
15 this.gesture_source_type_ = opt_options.gesture_source_type; | |
16 } else { | |
17 this.element_ = document.body; | |
18 this.left_position_percentage_ = 0.5; | |
19 this.top_position_percentage_ = 0.5; | |
20 this.duration_ms_ = 50; | |
21 this.gesture_source_type_ = chrome.gpuBenchmarking.DEFAULT_INPUT; | |
22 } | |
23 } | |
24 | |
25 function supportedByBrowser() { | |
26 return !!(window.chrome && | |
27 chrome.gpuBenchmarking && | |
28 chrome.gpuBenchmarking.tap); | |
29 } | |
30 | |
31 function TapAction(opt_callback) { | |
32 var self = this; | |
33 | |
34 this.beginMeasuringHook = function() {}; | |
35 this.endMeasuringHook = function() {}; | |
36 | |
37 this.callback_ = opt_callback; | |
38 } | |
39 | |
40 TapAction.prototype.start = function(opt_options) { | |
41 this.options_ = new TapGestureOptions(opt_options); | |
42 // Assign this.element_ here instead of constructor, because the constructor | |
43 // ensures this method will be called after the document is loaded. | |
44 this.element_ = this.options_.element_; | |
45 | |
46 this.beginMeasuringHook(); | |
47 | |
48 var rect = __GestureCommon_GetBoundingVisibleRect(this.options_.element_); | |
49 var position_left = | |
50 rect.left + rect.width * this.options_.left_position_percentage_; | |
51 var position_top = | |
52 rect.top + rect.height * this.options_.top_position_percentage_; | |
53 if (position_left < 0 || position_left >= window.innerWidth || | |
54 position_top < 0 || position_top >= window.innerHeight) { | |
55 throw new Error('Tap position is off-screen'); | |
56 } | |
57 chrome.gpuBenchmarking.tap(position_left, position_top, | |
58 this.onGestureComplete_.bind(this), | |
59 this.options_.duration_ms_, | |
60 this.options_.gesture_source_type_); | |
61 }; | |
62 | |
63 TapAction.prototype.onGestureComplete_ = function() { | |
64 this.endMeasuringHook(); | |
65 | |
66 // We're done. | |
67 if (this.callback_) | |
68 this.callback_(); | |
69 }; | |
70 | |
71 window.__TapAction = TapAction; | |
72 window.__TapAction_SupportedByBrowser = supportedByBrowser; | |
73 })(); | |
OLD | NEW |