| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../../resources/js-test.js"></script> |
| </head> |
| <script> |
| |
| description("Tests the contextmenu attribute."); |
| |
| debug("Test with valid contextmenu attribute"); |
| document.write("<div id='container1' contextmenu='menu1'><menu id='menu1' type='context' label='menu 1'></menu></div>"); |
| shouldBeEqualToString("document.getElementById('container1').contextMenu.id", "menu1"); |
| shouldBeEqualToString("document.getElementById('container1').contextMenu.type", "context"); |
| shouldBeEqualToString("document.getElementById('container1').contextMenu.label", "menu 1"); |
| |
| debug("Test with invalid contextmenu attribute"); |
| document.write("<div id='container2' contextmenu='nonexistent_menu'><menu id='menu2' type='context' label='menu 2'></menu></div>"); |
| shouldBeNull("document.getElementById('container2').contextMenu"); |
| |
| debug("Test setting contextmenu attribute to non-context type menu element"); |
| document.write("<div id='container11' contextmenu='menu11'><menu id='menu11' type='toolbar' label='menu 11'></menu></div>"); |
| var container11 = document.getElementById('container11'); |
| shouldBeEqualToString("container11.contextMenu.id", "menu11"); |
| shouldBeEqualToString("container11.contextMenu.type", "toolbar"); |
| shouldBeEqualToString("container11.contextMenu.label", "menu 11"); |
| |
| debug("Test setting contextmenu attribute to non-menu element"); |
| document.write("<div id='container12' contextmenu='button'><button id='button'></button></div>"); |
| var container12 = document.getElementById('container12'); |
| shouldBeNull("container12.contextMenu"); |
| |
| debug("Test setting contextmenu attribute to an ID which multiple elements have"); |
| document.write("<div id='container13' contextmenu='menu13'><button id='menu13'></button><menu id='menu13' type='context' label='menu 13'></menu></div>"); |
| var container13 = document.getElementById('container13'); |
| shouldBeNull("container13.contextMenu"); |
| document.write("<div id='container14' contextmenu='menu14'><menu id='menu14' type='context' label='menu 14'></menu><button id='menu14'></button></div>"); |
| var container14 = document.getElementById('container14'); |
| shouldBeEqualToString("container14.contextMenu.id", "menu14"); |
| shouldBeEqualToString("container14.contextMenu.type", "context"); |
| shouldBeEqualToString("container14.contextMenu.label", "menu 14"); |
| |
| debug("Test setting contextmenu attribute"); |
| document.write("<div id='container3'></div>"); |
| var menu = document.createElement('menu'); |
| menu.id = 'menu3'; |
| menu.type = 'context'; |
| menu.label = 'menu 3'; |
| document.getElementById('container3').appendChild(menu); |
| var container3 = document.getElementById('container3'); |
| container3.contextMenu = menu; |
| shouldBeEqualToString("container3.contextMenu.id", "menu3"); |
| shouldBeEqualToString("container3.contextMenu.type", "context"); |
| shouldBeEqualToString("container3.contextMenu.label", "menu 3"); |
| |
| debug("Test setting contextmenu attribute with menu element without id"); |
| document.write("<div id='container4'></div>"); |
| var menu1 = document.createElement('menu'); |
| menu1.type = 'context'; |
| menu1.label = 'menu 4'; |
| document.getElementById('container4').appendChild(menu1); |
| var container4 = document.getElementById('container4'); |
| container4.contextMenu = menu1; |
| shouldBeNull("container4.contextMenu"); |
| shouldBeTrue("container4.hasAttribute('contextmenu')"); |
| shouldBeEqualToString("container4.getAttribute('contextmenu')", ""); |
| |
| debug("Test setting contextmenu attribute with multiple menu element with same id"); |
| document.write("<div id='container5'></div>"); |
| var menu2 = document.createElement('menu'); |
| menu2.id = 'menu5'; |
| menu2.type = 'context'; |
| menu2.label = 'menu 5'; |
| var menu3 = document.createElement('menu'); |
| menu3.id = 'menu5'; |
| menu3.type = 'context'; |
| menu3.label = 'menu 6'; |
| document.getElementById('container5').appendChild(menu2); |
| document.getElementById('container5').appendChild(menu3); |
| var container5 = document.getElementById('container5'); |
| container5.contextMenu = menu3; |
| shouldBeNull("container5.contextMenu"); |
| container5.contextMenu = menu2; |
| shouldBe("container5.contextMenu", "menu2"); |
| |
| debug("Test setting contextmenu attribute to null"); |
| document.write("<div id='container6' contextmenu='menu6'><menu id='menu6'></menu></div>"); |
| var container6 = document.getElementById('container6'); |
| container6.contextMenu = null; |
| shouldBeNull("container6.contextMenu"); |
| shouldBeTrue("container6.hasAttribute('contextmenu')"); |
| shouldBeEqualToString("container6.getAttribute('contextmenu')", ""); |
| |
| debug("Test setting contextmenu attribute to some text"); |
| document.write("<div id='container7'></div>"); |
| var container7 = document.getElementById('container7'); |
| shouldThrow("container7.contextMenu = 'foobar'"); |
| shouldBeNull("container7.contextMenu"); |
| |
| debug("Test setting contextmenu attribute to comment"); |
| document.write("<div id='container8'></div>"); |
| var container8 = document.getElementById('container8'); |
| shouldThrow("container8.contextMenu = document.createComment('foo')"); |
| shouldBeNull("container8.contextMenu"); |
| |
| debug("Test setting contextmenu attribute to menu without type"); |
| document.write("<div id='container9'></div>"); |
| var menu4 = document.createElement('menu'); |
| menu4.id = 'menu_without_type'; |
| menu4.label = 'menu without type'; |
| document.getElementById('container9').appendChild(menu4); |
| var container9 = document.getElementById('container9'); |
| container9.contextMenu = menu4; |
| shouldBeEqualToString("container9.contextMenu.id", "menu_without_type"); |
| shouldBeEqualToString("container9.contextMenu.type", "toolbar"); |
| shouldBeEqualToString("container9.contextMenu.label", "menu without type"); |
| |
| debug("Test setting contextmenu attribute to menu element which is in shadow dom"); |
| document.write("<div id='container10'></div>"); |
| var menu5 = document.createElement('menu'); |
| menu5.id = 'menu_in_shadow_dom'; |
| menu5.label = 'menu in shadow dom'; |
| var container10 = document.getElementById('container10'); |
| container10.createShadowRoot().appendChild(menu5); |
| container10.contextMenu = menu5; |
| shouldBeNull("container10.contextMenu"); |
| |
| debug("Test contextmenu attribute of an element with no contextmenu attribute but parent has valid contextmenu"); |
| document.write("<div contextmenu='menu7'><button id='inner'></button><menu id='menu7' type='context' label='menu 7'></menu></div>"); |
| var inner = document.getElementById('inner'); |
| shouldBeNull("inner.contextMenu"); |
| |
| debug("Test setting menu type when parent is contextmenu"); |
| document.write("<menu id='menu15' type='context'></menu>"); |
| var menu15 = document.getElementById('menu15'); |
| var menu16 = document.createElement('menu'); |
| menu16.id = 'menu16'; |
| menu15.appendChild(menu16); |
| shouldBeEqualToString("menu15.type", "context"); |
| shouldBeEqualToString("menu16.type", "context"); |
| menu16.type = 'popup'; |
| shouldBeEqualToString("menu16.type", "context"); |
| menu15.type = 'toolbar'; |
| shouldBeEqualToString("menu15.type", "toolbar"); |
| shouldBeEqualToString("menu16.type", "toolbar"); |
| </script> |
| </html> |