Chromium Code Reviews| Index: chrome/test/data/webui/cr_elements/cr_action_menu_test.js |
| diff --git a/chrome/test/data/webui/cr_elements/cr_action_menu_test.js b/chrome/test/data/webui/cr_elements/cr_action_menu_test.js |
| index 635bd09c53790da842d12813214dc175c48d99f5..1dff3a2e7293509df2aa2ebccd70aa2ed8c05450 100644 |
| --- a/chrome/test/data/webui/cr_elements/cr_action_menu_test.js |
| +++ b/chrome/test/data/webui/cr_elements/cr_action_menu_test.js |
| @@ -127,4 +127,61 @@ suite('CrActionMenu', function() { |
| test('close on Escape', function() { |
| return testFocusAfterClosing('Escape'); |
| }); |
| + |
| + test('mouse movement focus options', function() { |
| + // MockInterations doesn't have any mouseover triggers, so copying |
| + // makeMouseEvent code over to make new mouseover events. |
| + var HAS_NEW_MOUSE = (function() { |
| + var has = false; |
| + try { |
| + has = Boolean(new MouseEvent('x')); |
| + } catch (_) { |
| + } |
| + return has; |
| + })(); |
| + |
| + function makeMouseoverEvent(node) { |
| + if (HAS_NEW_MOUSE) { |
| + var e = new MouseEvent('mouseover', {bubbles: true}); |
|
Dan Beam
2017/04/05 20:59:48
this is the only code you need
scottchen
2017/04/05 21:17:01
Done.
|
| + } else { |
| + e = document.createEvent('MouseEvent'); |
| + e.initMouseEvent( |
| + 'mouseover', true, /* bubbles */ |
| + true, /* cancelable */ |
| + null, /* view */ |
| + null, /* detail */ |
| + 0, /* screenX */ |
| + 0, /* screenY */ |
| + 0, /* clientX */ |
| + 0, /* clientY */ |
| + false, /*ctrlKey */ |
| + false, /*altKey */ |
| + false, /*shiftKey */ |
| + false, /*metaKey */ |
| + 0, /*button */ |
| + null /*relatedTarget*/); |
| + } |
| + |
| + node.dispatchEvent(e); |
| + } |
| + |
| + menu.showAt(document.querySelector('#dots')); |
| + |
| + // Moving mouse on option 1 should focus it |
| + assertNotEquals(items[0], menu.root.activeElement); |
| + makeMouseoverEvent(items[0]); |
| + assertEquals(items[0], menu.root.activeElement); |
| + |
| + // Moving mouse on the menu (not on option) should focus the menu |
| + makeMouseoverEvent(menu); |
| + assertNotEquals(items[0], menu.root.activeElement); |
| + assertEquals(menu, document.activeElement); |
| + |
| + // Mouse movements should override keyboard focus |
| + down(); |
| + down(); |
| + assertEquals(items[1], menu.root.activeElement); |
| + makeMouseoverEvent(items[0]); |
| + assertEquals(items[0], menu.root.activeElement); |
| + }); |
| }); |