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

Side by Side Diff: chrome/browser/resources/shared/js/cr/ui/repeating_button_test.html

Issue 11962043: Move webui resources from chrome\browser\resources\shared to ui\webui\resources. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 11 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>Repeater</title>
5 <script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base .js">
6 </script>
7 <script src="../../cr.js"></script>
8 <script src="../ui.js"></script>
9 <script src="repeating_button.js"></script>
10 <script>
11 goog.require('goog.testing.jsunit');
12 goog.require('goog.testing.MockClock');
13 </script>
14 </head>
15 <body>
16 <script>
17 var mockClock;
18 var value;
19 var button;
20 var repeatDelay;
21 var repeatInterval;
22
23 /**
24 * Prepare running the tests.
25 */
26 function setUp() {
27 mockClock = new goog.testing.MockClock();
28 mockClock.install();
29 button = new cr.ui.RepeatingButton();
30 repeatDelay = button.repeatDelay;
31 repeatInterval = button.repeatInterval;
32 button.addEventListener(
33 cr.ui.RepeatingButton.Event.BUTTON_HELD,
34 function(e) {
35 value++;
36 });
37 }
38
39 /**
40 * Post-test cleanup.
41 */
42 function tearDown() {
43 mockClock.uninstall();
44 }
45
46 /**
47 * Simulates a mouse or touch event to the repeating button.
48 * @param {string} type The type of event.
49 */
50 function mockEvent(type) {
51 cr.dispatchSimpleEvent(button, type);
52 }
53
54 /**
55 * Simulates a sequence of events.
56 * @param {Array.<string>} events List of event types.
57 * @param {Array.<number>} timeIncrements List of time increments between
58 * events.
59 * @param {number} expectedValue Expected result.
60 */
61 function mockEventSequence(events, timeIncrements, expectedValue) {
62 assertEquals(events.length, timeIncrements.length);
63 value = 0;
64 for (var i = 0; i < events.length; i++) {
65 mockEvent(events[i]);
66 mockClock.tick(timeIncrements[i]);
67 }
68 assertEquals(expectedValue, value);
69 mockClock.tick(repeatDelay);
70 assertEquals(expectedValue, value);
71 }
72
73 /**
74 * Simulates a tap or touch and hold gesture.
75 * @param {number} time Duration of the hold.
76 * @param {number} expectedValue Expected result.
77 */
78 function mockTouchHold(time, expectedValue) {
79 mockEventSequence(['touchstart', 'touchend'], [time, 0], expectedValue);
80 }
81
82 /**
83 * Simulates a mouse click or mouse press and hold.
84 * @param {number} time Duration of the hold.
85 * @param {number} expectedValue Expected result.
86 */
87 function mockMouseHold(time, expectedValue) {
88 mockEventSequence(['mousedown', 'mouseup', 'mouseclick'],
89 [time, 0, 0],
90 expectedValue);
91 }
92
93 /**
94 * Simulates a mouse press and drag off of the button.
95 * @param {number} time1 Duration that the mouse button is pressed and the
96 * mouse is over the button.
97 * @param {number} time2 Duration that the mouse button is pressed but the
98 * mouse is outside the boundary of the button.
99 * @param {number} expectedValue Expected result.
100 */
101 function mockMouseOut(time1, time2, expectedValue) {
102 mockEventSequence(['mousedown', 'mouseout', 'mouseup'],
103 [time1, time2, 0],
104 expectedValue);
105 }
106
107 /**
108 * Runs a series of tests with increasing button hold time.
109 * @param {function} fn Testing function.
110 * @param {Object} opt_arg Optional additional argument for the test.
111 */
112 function runButtonTests(fn, opt_arg) {
113 var holdTime = repeatDelay - repeatInterval / 2;
114 for (var i = 0; i < 3; i++, holdTime += repeatInterval) {
115 var args = opt_arg ? [holdTime, opt_arg, i + 1] : [holdTime, i + 1];
116 fn.apply(this, args);
117 }
118 }
119
120 /**
121 * Simulates a short tap on the button.
122 */
123 function testTap() {
124 mockTouchHold(repeatDelay / 2, 1);
125 }
126
127 /**
128 * Simulates a long press of the button.
129 */
130 function testTouchHold() {
131 runButtonTests(mockTouchHold);
132 }
133
134 /**
135 * Simulates a quick mouse click of the button.
136 */
137 function testClick() {
138 mockMouseHold(repeatDelay / 2, 1);
139 }
140
141 /**
142 * Simulates a mouse press and hold on the button.
143 */
144 function testMousePressHold() {
145 runButtonTests(mockMouseHold);
146 }
147
148 /**
149 * Simulates draging the mouse off of the button while pressed.
150 */
151 function testMouseOut() {
152 runButtonTests(mockMouseOut, repeatDelay);
153 }
154
155 /**
156 * Repeat tests with new delay and interval times.
157 */
158 function testUpdateDelayTimes() {
159 var oldDelay = repeatDelay;
160 var oldInterval = repeatInterval;
161 repeatDelay = button.repeatDelay = 2 * repeatDelay;
162 repeatInterval = button.repeatInterval = 2 * repeatInterval;
163 testTouchHold();
164 testMousePressHold();
165 testMouseOut();
166 testClick();
167 testTap();
168 repeatDelay = button.repeatDelay = oldDelay;
169 repeatInterval = button.repeatInterval = oldInterval;
170 }
171
172 /**
173 * Runs mouse and touch hold tests with a repeat interval that is longer
174 * than the initial repeat delay.
175 */
176 function testLongRepeat() {
177 var oldInterval = repeatInterval;
178 repeatInterval = button.repeatInterval = 3 * button.repeatDelay;
179 testTouchHold();
180 testMousePressHold();
181 repeatInterval = button.repeatInterval = oldInterval;
182 }
183 </script>
184 </body>
185 </html>
OLDNEW
« no previous file with comments | « chrome/browser/resources/shared/js/cr/ui/repeating_button.js ('k') | chrome/browser/resources/shared/js/cr/ui/splitter.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698