Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / third_party / tvcm / src / tvcm / key_event_manager_test.html
1 <!DOCTYPE html>
2 <!--
3 Copyright (c) 2014 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
6 -->
7 <link rel="import" href="/tvcm/key_event_manager.html">
8 <script>
9 'use strict';
10
11 tvcm.unittest.testSuite(function() {
12   var KeyEventManager = tvcm.KeyEventManager;
13
14   function withElementAttachedToChild(element, callback) {
15     document.body.appendChild(element);
16     try {
17       callback();
18     } finally {
19       document.body.removeChild(element);
20     }
21   }
22
23
24   test('simpleDispatch', function() {
25     var kem = KeyEventManager.instance;
26     var div = document.createElement('div');
27
28     var fireCount = 0;
29     kem.addListener('keydown', function(e) {
30       fireCount++;
31     }, div);
32
33     // Send an event while its attached to the document.
34     withElementAttachedToChild(div, function() {
35       var ret = kem.dispatchFakeEvent('keydown', {keyCode: 73});
36       assertTrue(ret == undefined);
37       assertEquals(1, fireCount);
38     });
39     fireCount = 0;
40
41     // Send an event while it is detached.
42     var ret = kem.dispatchFakeEvent('keydown', {keyCode: 73});
43     assertTrue(ret == undefined);
44     assertEquals(0, fireCount);
45   });
46
47   test('preventDefault', function() {
48     var kem = KeyEventManager.instance;
49     var div = document.createElement('div');
50
51     var fireCount = 0;
52     kem.addListener('keydown', function(e) {
53       fireCount++;
54       e.preventDefault();
55     }, div);
56
57     withElementAttachedToChild(div, function() {
58       var ret = kem.dispatchFakeEvent('keydown', {keyCode: 73});
59       assertTrue(ret == false);
60       assertEquals(1, fireCount);
61     });
62
63   });
64
65   test('stopPropagation', function() {
66     var kem = KeyEventManager.instance;
67     var div1 = document.createElement('div');
68     var div2 = document.createElement('div');
69
70     var didFire = false;
71     kem.addListener('keydown', function(e) {
72       e.stopPropagation();
73     }, div1);
74     kem.addListener('keydown', function(e) {
75       throw new Error('Should never get called');
76     }, div2);
77
78     withElementAttachedToChild(div1, function() {
79       withElementAttachedToChild(div2, function() {
80         var ret = kem.dispatchFakeEvent('keydown', {keyCode: 73});
81         assertTrue(ret == undefined);
82       });
83     });
84   });
85
86   test('removeListener', function() {
87     var kem = KeyEventManager.instance;
88     var div = document.createElement('div');
89
90     var handlerFired = false;
91     function handler(e) {
92       handlerFired = true;
93     }
94     kem.addListener('keydown', handler, div);
95     kem.removeListener('keydown', handler, div);
96     assertEquals(div.className, '');
97
98     withElementAttachedToChild(div, function() {
99       var ret = kem.dispatchFakeEvent('keydown', {keyCode: 73});
100       assertFalse(handlerFired);
101     });
102   });
103
104   test('removeOneListener', function() {
105     var kem = KeyEventManager.instance;
106     var div = document.createElement('div');
107
108     var handlerAFired = false;
109     function handlerA(e) {
110       handlerAFired = true;
111     }
112     var handlerBFired = false;
113     function handlerB(e) {
114       handlerBFired = true;
115     }
116     kem.addListener('keydown', handlerA, div);
117     kem.addListener('keydown', handlerB, div);
118     kem.removeListener('keydown', handlerA, div);
119     assertTrue(div.classList.contains('key-event-manager-target'));
120
121     withElementAttachedToChild(div, function() {
122       var ret = kem.dispatchFakeEvent('keydown', {keyCode: 73});
123       assertFalse(handlerAFired);
124       assertTrue(handlerBFired);
125     });
126   });
127
128
129 });
130 </script>