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.
7 <link rel="import" href="/tvcm/key_event_manager.html">
11 tvcm.unittest.testSuite(function() {
12 var KeyEventManager = tvcm.KeyEventManager;
14 function withElementAttachedToChild(element, callback) {
15 document.body.appendChild(element);
19 document.body.removeChild(element);
24 test('simpleDispatch', function() {
25 var kem = KeyEventManager.instance;
26 var div = document.createElement('div');
29 kem.addListener('keydown', function(e) {
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);
41 // Send an event while it is detached.
42 var ret = kem.dispatchFakeEvent('keydown', {keyCode: 73});
43 assertTrue(ret == undefined);
44 assertEquals(0, fireCount);
47 test('preventDefault', function() {
48 var kem = KeyEventManager.instance;
49 var div = document.createElement('div');
52 kem.addListener('keydown', function(e) {
57 withElementAttachedToChild(div, function() {
58 var ret = kem.dispatchFakeEvent('keydown', {keyCode: 73});
59 assertTrue(ret == false);
60 assertEquals(1, fireCount);
65 test('stopPropagation', function() {
66 var kem = KeyEventManager.instance;
67 var div1 = document.createElement('div');
68 var div2 = document.createElement('div');
71 kem.addListener('keydown', function(e) {
74 kem.addListener('keydown', function(e) {
75 throw new Error('Should never get called');
78 withElementAttachedToChild(div1, function() {
79 withElementAttachedToChild(div2, function() {
80 var ret = kem.dispatchFakeEvent('keydown', {keyCode: 73});
81 assertTrue(ret == undefined);
86 test('removeListener', function() {
87 var kem = KeyEventManager.instance;
88 var div = document.createElement('div');
90 var handlerFired = false;
94 kem.addListener('keydown', handler, div);
95 kem.removeListener('keydown', handler, div);
96 assertEquals(div.className, '');
98 withElementAttachedToChild(div, function() {
99 var ret = kem.dispatchFakeEvent('keydown', {keyCode: 73});
100 assertFalse(handlerFired);
104 test('removeOneListener', function() {
105 var kem = KeyEventManager.instance;
106 var div = document.createElement('div');
108 var handlerAFired = false;
109 function handlerA(e) {
110 handlerAFired = true;
112 var handlerBFired = false;
113 function handlerB(e) {
114 handlerBFired = true;
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'));
121 withElementAttachedToChild(div, function() {
122 var ret = kem.dispatchFakeEvent('keydown', {keyCode: 73});
123 assertFalse(handlerAFired);
124 assertTrue(handlerBFired);