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