Chromium Code Reviews| Index: LayoutTests/contextmenu/custom-context-menu.html |
| diff --git a/LayoutTests/contextmenu/custom-context-menu.html b/LayoutTests/contextmenu/custom-context-menu.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..884cfc1bcfc07c8f80abea481c2b60377669583c |
| --- /dev/null |
| +++ b/LayoutTests/contextmenu/custom-context-menu.html |
| @@ -0,0 +1,151 @@ |
| +<!DOCTYPE html> |
|
tkent
2014/08/25 23:07:41
Making LayoutTests/contextmenu/ only for this test
pals
2014/08/26 07:13:23
Done.
|
| +<head> |
| +<script src="../resources/js-test.js"></script> |
| +</head> |
| +<button id="button" style="height: 100px; width: 100px;"> |
| +</button> |
| +<button id="button_with_contextmenu" contextmenu="menu_id" style="height: 100px; width: 100px;"> |
| + <menu id="menu_id" type="PopUp"> |
| + <!-- Test removal of separator at the start. --> |
| + <hr> |
| + <menuitem label="Item1"></menuitem> |
| + <menuitem label="Item2"></menuitem> |
| + <!-- Test addition of separator for <hr>. --> |
| + <hr> |
| + <menuitem label="Item3"></menuitem> |
| + <!-- Test child menu with label. --> |
| + <menu label="Submenu"> |
| + <menuitem label="Item4"></menuitem> |
| + <menu label="Deeper submenu"> |
| + <!-- Test removal of separator at the start inside submenu. --> |
| + <hr> |
| + <menuitem label="Item5"></menuitem> |
| + <hr> |
| + <menuitem label="Item6"></menuitem> |
| + <!-- Test removal of separator at the end inside submenu. --> |
| + <hr> |
| + </menu> |
| + </menu> |
| + <menuitem label="Item7"></menuitem> |
| + <!-- Test child menu without label. --> |
| + <menu> |
| + <menuitem label="Item8"></menuitem> |
| + <!-- Test child menu with empty label. --> |
| + <menu label=""> |
| + <menuitem label="Item9"></menuitem> |
| + <menuitem label="Item10"></menuitem> |
| + </menu> |
| + <!-- Test collapsing two or more adjacent separators. --> |
|
tkent
2014/08/25 23:07:41
Is this comment valid? Only single <hr> follows.
pals
2014/08/26 07:13:22
One more separator is added at the end of the abov
|
| + <hr> |
| + <menuitem label="Item11"></menuitem> |
| + <menuitem label="Item12"></menuitem> |
| + </menu> |
| + <!-- Test collapsing two or more adjacent separators. --> |
| + <hr> |
| + <hr> |
| + <hr> |
| + <hr> |
| + <!-- Test menuitem menu without label. --> |
|
tkent
2014/08/25 23:07:42
without label -> with empty label?
pals
2014/08/26 07:13:23
Done.
|
| + <menuitem label=""></menuitem> |
| + <!-- Test menuitem menu with empty label. --> |
|
tkent
2014/08/25 23:07:41
with empty label -> without label?
pals
2014/08/26 07:13:23
Done.
|
| + <menuitem></menuitem> |
| + <menuitem label="Item13"></menuitem> |
| + <!-- Test removal of separator at the end. --> |
| + <hr> |
| + </menu> |
| +</button> |
| +<!-- Test with menu element without type attribute specified. --> |
| +<button id="button_1" contextmenu="menu_without_type" style="height: 100px; width: 100px;"> |
| + <menu id="menu_without_type"> |
| + <menuitem label="Item1"></menuitem> |
| + <menuitem label="Item2"></menuitem> |
| + <menuitem label="Item3"></menuitem> |
| + </menu> |
| +</button> |
| +<!-- Test cancelling show event. --> |
| +<button id="button_2" contextmenu="menu_2" style="height: 100px; width: 100px;"> |
| + <menu id="menu_2" type="popup"> |
| + <menuitem label="Item1"></menuitem> |
| + <menuitem label="Item2"></menuitem> |
| + <menuitem label="Item3"></menuitem> |
| + </menu> |
| +</button> |
| +<!-- Test removing menu element inside show event handler. --> |
| +<button id="button_3" contextmenu="menu_3" style="height: 100px; width: 100px;"> |
| + <menu id="menu_3" type="popup"> |
| + <menuitem label="Item1"></menuitem> |
| + <menuitem label="Item2"></menuitem> |
| + <menuitem label="Item3"></menuitem> |
| + </menu> |
| +</button> |
| +<script> |
| +if (!window.eventSender) |
| + debug("This test requires window.eventSender.") |
| + |
| +function contextClickAndGetMenuItems(element) |
| +{ |
|
tkent
2014/08/25 23:07:41
Position of the '{' is inconsistent in this file.
pals
2014/08/26 07:13:23
Done.
|
| + var x = element.offsetParent.offsetLeft + element.offsetLeft + 4; |
| + var y = element.offsetParent.offsetTop + element.offsetTop + element.offsetHeight / 2; |
| + eventSender.mouseMoveTo(x, y); |
| + var items = eventSender.contextClick(); |
|
tkent
2014/08/25 23:07:41
return eventSender.contextClick();
pals
2014/08/26 07:13:23
Done.
|
| + return items; |
| +} |
| + |
| +function cancel(event) { |
| + event.preventDefault(); |
| +} |
| + |
| +function removeMenu(event) { |
| + parent = event.target.parentNode; |
|
tkent
2014/08/25 23:07:41
event.target.remove();
pals
2014/08/26 07:13:22
Done.
|
| + parent.removeChild(event.target); |
| +} |
| + |
| +description("Tests the custom context menu items."); |
| +var button = document.getElementById("button"); |
| +var items = contextClickAndGetMenuItems(button); |
| + |
| +// Esc key to hide the context menu. |
| +eventSender.keyDown(String.fromCharCode(0x001B), null); |
|
tkent
2014/08/25 23:07:41
eventSender.keyDown("escape");
pals
2014/08/26 07:13:23
Done.
|
| + |
| +var buttonWithContextMenu = document.getElementById("button_with_contextmenu"); |
| +var itemsWithCustomContextMenu = contextClickAndGetMenuItems(buttonWithContextMenu); |
| + |
| +// Esc key to hide the context menu. |
| +eventSender.keyDown(String.fromCharCode(0x001B), null); |
| + |
| +var button1 = document.getElementById("button_1"); |
| +var items1 = contextClickAndGetMenuItems(button1); |
| + |
| +// Esc key to hide the context menu. |
| +eventSender.keyDown(String.fromCharCode(0x001B), null); |
| + |
| +var button2 = document.getElementById("button_2"); |
| +document.getElementById("menu_2").addEventListener("show", cancel, false); |
| +var items2 = contextClickAndGetMenuItems(button2); |
| + |
| +// Esc key to hide the context menu. |
| +eventSender.keyDown(String.fromCharCode(0x001B), null); |
| + |
| +var button3 = document.getElementById("button_3"); |
| +document.getElementById("menu_3").addEventListener("show", removeMenu, false); |
| +var items3 = contextClickAndGetMenuItems(button3); |
| + |
| +shouldBeEqualToNumber("itemsWithCustomContextMenu.length - items.length", 21); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[0]", "Item1"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[4]", "Submenu >"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[5]", "_Item4"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[6]", "_Deeper submenu >"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[7]", "__Item5"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[8]", "__Separator"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[10]", "Item7"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[11]", "Separator"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[12]", "Item8"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[13]", "Separator"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[14]", "Item9"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[16]", "Separator"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[19]", "Separator"); |
| +shouldBeEqualToString("itemsWithCustomContextMenu[20]", "Item13"); |
| +shouldBeEqualToNumber("items1.length - items.length", 0); |
| +shouldBeEqualToNumber("items2.length - items.length", 0); |
| +shouldBeEqualToNumber("items3.length - items.length", 0); |
| +</script> |