| 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 |