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

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

Issue 1056133003: Move page/actions to internal/actions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add copyright header. Created 5 years, 8 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 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 // This file provides the PinchAction object, which zooms into or out of a
6 // page by a given scale factor:
7 // 1. var action = new __PinchAction(callback)
8 // 2. action.start(pinch_options)
9 'use strict';
10
11 (function() {
12
13 function PinchGestureOptions(opt_options) {
14 if (opt_options) {
15 this.element_ = opt_options.element;
16 this.left_anchor_ratio_ = opt_options.left_anchor_ratio;
17 this.top_anchor_ratio_ = opt_options.top_anchor_ratio;
18 this.scale_factor_ = opt_options.scale_factor;
19 this.speed_ = opt_options.speed;
20 } else {
21 this.element_ = document.body;
22 this.left_anchor_ratio_ = 0.5;
23 this.top_anchor_ratio_ = 0.5;
24 this.scale_factor_ = 2.0;
25 this.speed_ = 800;
26 }
27 }
28
29 function supportedByBrowser() {
30 return !!(window.chrome &&
31 chrome.gpuBenchmarking &&
32 chrome.gpuBenchmarking.pinchBy);
33 }
34
35 // This class zooms into or out of a page, given a number of pixels for
36 // the synthetic pinch gesture to cover.
37 function PinchAction(opt_callback) {
38 var self = this;
39
40 this.beginMeasuringHook = function() {}
41 this.endMeasuringHook = function() {}
42
43 this.callback_ = opt_callback;
44 };
45
46 PinchAction.prototype.start = function(opt_options) {
47 this.options_ = new PinchGestureOptions(opt_options);
48
49 requestAnimationFrame(this.startPass_.bind(this));
50 };
51
52 PinchAction.prototype.startPass_ = function() {
53 this.beginMeasuringHook();
54
55 var rect = __GestureCommon_GetBoundingVisibleRect(this.options_.element_);
56 var anchor_left =
57 rect.left + rect.width * this.options_.left_anchor_ratio_;
58 var anchor_top =
59 rect.top + rect.height * this.options_.top_anchor_ratio_;
60 chrome.gpuBenchmarking.pinchBy(this.options_.scale_factor_,
61 anchor_left, anchor_top,
62 this.onGestureComplete_.bind(this),
63 this.options_.speed_);
64 };
65
66 PinchAction.prototype.onGestureComplete_ = function() {
67 this.endMeasuringHook();
68
69 if (this.callback_)
70 this.callback_();
71 };
72
73 window.__PinchAction = PinchAction;
74 window.__PinchAction_SupportedByBrowser = supportedByBrowser;
75 })();
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/page/actions/page_action_unittest.py ('k') | tools/telemetry/telemetry/page/actions/pinch.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698