OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <!-- | 2 <!-- |
3 Copyright (c) 2014 The Chromium Authors. All rights reserved. | 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 | 4 Use of this source code is governed by a BSD-style license that can be |
5 found in the LICENSE file. | 5 found in the LICENSE file. |
6 --> | 6 --> |
7 | 7 |
8 <link rel="import" href="/tracing/base/event.html"> | 8 <link rel="import" href="/tracing/base/event.html"> |
9 <link rel="import" href="/tracing/ui/base/hotkey_controller.html"> | 9 <link rel="import" href="/tracing/ui/base/hotkey_controller.html"> |
10 | 10 |
11 <script> | 11 <script> |
12 'use strict'; | 12 'use strict'; |
13 | 13 |
14 tr.b.unittest.testSuite(function() { | 14 tr.b.unittest.testSuite(function() { |
15 var KeyEventManager = tr.b.KeyEventManager; | 15 var KeyEventManager = tr.b.KeyEventManager; |
16 | 16 |
17 function newKeyEvent(eventType, dict) { | 17 function newKeyEvent(eventType, dict) { |
18 var e = new tr.b.Event(eventType, true, true); | 18 var e = new tr.b.Event(eventType, true, true); |
19 if (dict.keyCode === undefined) | 19 if (dict.keyCode === undefined) |
20 throw new Error('keyCode required'); | 20 throw new Error('keyCode required'); |
21 e.keyCode = dict.keyCode; | 21 e.keyCode = dict.keyCode; |
22 return e; | 22 return e; |
23 } | 23 } |
24 | 24 |
25 test('simpleHotkeyManager', function() { | 25 test('simpleHotkeyManager', function() { |
26 var rootElement = document.createElement('div'); | 26 var rootElement = document.createElement('div'); |
27 document.body.appendChild(rootElement); | 27 Polymer.dom(document.body).appendChild(rootElement); |
28 try { | 28 try { |
29 var elementShadow = rootElement.createShadowRoot(); | 29 var elementShadow = rootElement.createShadowRoot(); |
30 | 30 |
31 var hkc = document.createElement('tv-ui-b-hotkey-controller'); | 31 var hkc = document.createElement('tv-ui-b-hotkey-controller'); |
32 elementShadow.appendChild(hkc); | 32 Polymer.dom(elementShadow).appendChild(hkc); |
33 | 33 |
34 var subElement = document.createElement('div'); | 34 var subElement = document.createElement('div'); |
35 elementShadow.appendChild(subElement); | 35 Polymer.dom(elementShadow).appendChild(subElement); |
36 | 36 |
37 assert.equal(tr.b.getHotkeyControllerForElement(subElement), hkc); | 37 assert.equal(tr.b.getHotkeyControllerForElement(subElement), hkc); |
38 | 38 |
39 var didGetCalled = false; | 39 var didGetCalled = false; |
40 hkc.addHotKey(new tr.ui.b.HotKey({ | 40 hkc.addHotKey(new tr.ui.b.HotKey({ |
41 eventType: 'keydown', | 41 eventType: 'keydown', |
42 keyCode: 73, useCapture: true, | 42 keyCode: 73, useCapture: true, |
43 callback: function() { | 43 callback: function() { |
44 didGetCalled = true; | 44 didGetCalled = true; |
45 } | 45 } |
(...skipping 10 matching lines...) Expand all Loading... |
56 subElement.dispatchEvent(e); | 56 subElement.dispatchEvent(e); |
57 assert.isTrue(didGetCalled); | 57 assert.isTrue(didGetCalled); |
58 | 58 |
59 } finally { | 59 } finally { |
60 document.body.removeChild(rootElement); | 60 document.body.removeChild(rootElement); |
61 } | 61 } |
62 }); | 62 }); |
63 | 63 |
64 test('nestedHotkeyController', function() { | 64 test('nestedHotkeyController', function() { |
65 var rootElement = document.createElement('div'); | 65 var rootElement = document.createElement('div'); |
66 document.body.appendChild(rootElement); | 66 Polymer.dom(document.body).appendChild(rootElement); |
67 try { | 67 try { |
68 var elementShadow = rootElement.createShadowRoot(); | 68 var elementShadow = rootElement.createShadowRoot(); |
69 | 69 |
70 var hkc = document.createElement('tv-ui-b-hotkey-controller'); | 70 var hkc = document.createElement('tv-ui-b-hotkey-controller'); |
71 elementShadow.appendChild(hkc); | 71 Polymer.dom(elementShadow).appendChild(hkc); |
72 | 72 |
73 var subElement = document.createElement('div'); | 73 var subElement = document.createElement('div'); |
74 elementShadow.appendChild(subElement); | 74 Polymer.dom(elementShadow).appendChild(subElement); |
75 assert.equal(tr.b.getHotkeyControllerForElement(elementShadow), hkc); | 75 assert.equal(tr.b.getHotkeyControllerForElement(elementShadow), hkc); |
76 | 76 |
77 var subHKC = document.createElement('tv-ui-b-hotkey-controller'); | 77 var subHKC = document.createElement('tv-ui-b-hotkey-controller'); |
78 subElement.appendChild(subHKC); | 78 Polymer.dom(subElement).appendChild(subHKC); |
79 | 79 |
80 assert.equal(tr.b.getHotkeyControllerForElement(subElement), subHKC); | 80 assert.equal(tr.b.getHotkeyControllerForElement(subElement), subHKC); |
81 | 81 |
82 var didGetCalled = false; | 82 var didGetCalled = false; |
83 subHKC.addHotKey(new tr.ui.b.HotKey({ | 83 subHKC.addHotKey(new tr.ui.b.HotKey({ |
84 eventType: 'keydown', | 84 eventType: 'keydown', |
85 keyCode: 73, useCapture: true, | 85 keyCode: 73, useCapture: true, |
86 callback: function() { | 86 callback: function() { |
87 didGetCalled = true; | 87 didGetCalled = true; |
88 } | 88 } |
89 })); | 89 })); |
90 | 90 |
91 // Ensure it is called when events target the root element. | 91 // Ensure it is called when events target the root element. |
92 var e = newKeyEvent('keydown', {keyCode: 73}); | 92 var e = newKeyEvent('keydown', {keyCode: 73}); |
93 rootElement.dispatchEvent(e); | 93 rootElement.dispatchEvent(e); |
94 assert.isTrue(didGetCalled); | 94 assert.isTrue(didGetCalled); |
95 } finally { | 95 } finally { |
96 document.body.removeChild(rootElement); | 96 document.body.removeChild(rootElement); |
97 } | 97 } |
98 }); | 98 }); |
99 | 99 |
100 test('inputInsideHKC', function() { | 100 test('inputInsideHKC', function() { |
101 var rootElement = document.createElement('div'); | 101 var rootElement = document.createElement('div'); |
102 document.body.appendChild(rootElement); | 102 Polymer.dom(document.body).appendChild(rootElement); |
103 try { | 103 try { |
104 var elementShadow = rootElement.createShadowRoot(); | 104 var elementShadow = rootElement.createShadowRoot(); |
105 | 105 |
106 var hkc = document.createElement('tv-ui-b-hotkey-controller'); | 106 var hkc = document.createElement('tv-ui-b-hotkey-controller'); |
107 elementShadow.appendChild(hkc); | 107 Polymer.dom(elementShadow).appendChild(hkc); |
108 | 108 |
109 var inputEl = document.createElement('input'); | 109 var inputEl = document.createElement('input'); |
110 elementShadow.appendChild(inputEl); | 110 Polymer.dom(elementShadow).appendChild(inputEl); |
111 | 111 |
112 var didGetCalled = false; | 112 var didGetCalled = false; |
113 hkc.addHotKey(new tr.ui.b.HotKey({ | 113 hkc.addHotKey(new tr.ui.b.HotKey({ |
114 eventType: 'keypress', | 114 eventType: 'keypress', |
115 keyCode: 'a'.charCodeAt(0), useCapture: false, | 115 keyCode: 'a'.charCodeAt(0), useCapture: false, |
116 callback: function() { | 116 callback: function() { |
117 didGetCalled = true; | 117 didGetCalled = true; |
118 } | 118 } |
119 })); | 119 })); |
120 | 120 |
121 // Ensure it is called when events target the root element. | 121 // Ensure it is called when events target the root element. |
122 didGetCalled = false; | 122 didGetCalled = false; |
123 var e = newKeyEvent('keypress', {keyCode: 'a'.charCodeAt(0)}); | 123 var e = newKeyEvent('keypress', {keyCode: 'a'.charCodeAt(0)}); |
124 rootElement.dispatchEvent(e); | 124 rootElement.dispatchEvent(e); |
125 assert.isTrue(didGetCalled); | 125 assert.isTrue(didGetCalled); |
126 | 126 |
127 // Handler should NOT be called when events target the input element. | 127 // Handler should NOT be called when events target the input element. |
128 didGetCalled = false; | 128 didGetCalled = false; |
129 var e = newKeyEvent('keypress', {keyCode: 'a'.charCodeAt(0)}); | 129 var e = newKeyEvent('keypress', {keyCode: 'a'.charCodeAt(0)}); |
130 inputEl.dispatchEvent(e); | 130 inputEl.dispatchEvent(e); |
131 assert.isFalse(didGetCalled); | 131 assert.isFalse(didGetCalled); |
132 } finally { | 132 } finally { |
133 document.body.removeChild(rootElement); | 133 document.body.removeChild(rootElement); |
134 } | 134 } |
135 }); | 135 }); |
136 | 136 |
137 }); | 137 }); |
138 </script> | 138 </script> |
OLD | NEW |