blob: 2167e557c6e4f3b37542311dfdeae12ed4e73475 [file] [log] [blame]
<!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>