Put mouse next to the table labeled 'Scrollable Region' and flick downward. The scroll movement should come to a halt. Then flick again. The overall page should scroll.
Scrollable Region

Count	DATA	Rev Count
TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP	TOP TOP TOP TOP TOP
1	0.1100	40
2	0.1155	39
3	0.2200	38
4	0.2255	37
5	0.3300	36
6	0.3355	35
7	0.4400	34
8	0.4455	33
9	0.5500	32
10	0.5555	31
11	0.6600	30
12	0.6655	29
13	0.7700	28
14	0.7755	27
15	0.8800	26
16	0.8855	25
17	0.9900	24
18	0.9955	23
19	0.9999	22
20	1.0000	21
21	1.0000	20
22	0.9999	19
23	0.9955	18
24	0.9900	17
25	0.8855	16
26	0.8800	15
27	0.7755	14
28	0.7700	13
29	0.6655	12
30	0.6600	11
31	0.5555	10
32	0.5500	9
33	0.4455	8
34	0.4400	7
35	0.3355	6
36	0.3300	5
37	0.2255	4
38	0.2200	3
39	0.1155	2
40	0.1100	1
END END END END END	END END END END END	END END END END END
A set of information at the bottom of the table.

Tests that a scrollable div nested inside another scrollable div properly handles wheel events under sub-pixel conditions.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS successfullyParsed is true

TEST COMPLETE
wrapperTarget = [object HTMLDivElement]
First scroll event:
PASS Page did not receive wheel events during the first gesture.
PASS Wrapper received wheel events during the first gesture.
PASS div did not receive wheel events during the first gesture.
Second scroll event:
PASS Page received wheel events during the second gesture.
PASS Wrapper did not receive wheel events during the second gesture.
PASS div did not receive wheel events during the second gesture.

