 Chromium Code Reviews
 Chromium Code Reviews Issue 464903002:
  Add contextmenu attribute for HTMLElement.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/blink.git@master
    
  
    Issue 464903002:
  Add contextmenu attribute for HTMLElement.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/blink.git@master| Index: LayoutTests/fast/dom/HTMLElement/contextmenu.html | 
| diff --git a/LayoutTests/fast/dom/HTMLElement/contextmenu.html b/LayoutTests/fast/dom/HTMLElement/contextmenu.html | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..386831202195313628759affbc5c21fe5b703ee1 | 
| --- /dev/null | 
| +++ b/LayoutTests/fast/dom/HTMLElement/contextmenu.html | 
| @@ -0,0 +1,99 @@ | 
| +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | 
| +<html> | 
| +<head> | 
| +<script src="../../../resources/js-test.js"></script> | 
| +</head> | 
| +<script> | 
| + | 
| +description('Tests the contextmenu attribute.'); | 
| 
tkent
2014/08/19 01:14:41
Inconsistent quote characters.
You use single-quot
 
pals
2014/08/19 10:12:31
Done.
 | 
| + | 
| +debug("Test with valid contextmenu attribute"); | 
| +document.write("<div id='container1' contextmenu='menu1'><menu id='menu1' type='popup' label='menu 1'></menu></div>"); | 
| +shouldBeEqualToString("document.getElementById('container1').contextMenu.id", "menu1"); | 
| +shouldBeEqualToString("document.getElementById('container1').contextMenu.type", "popup"); | 
| +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='popup' label='menu 2'></menu></div>"); | 
| +shouldBeNull("document.getElementById('container2').contextMenu"); | 
| + | 
| 
tkent
2014/08/19 01:14:41
Need more getter test cases.
- Pointing an ID of
 
pals
2014/08/19 10:12:31
Done.
 | 
| +debug("Test setting contextmenu attribute"); | 
| +document.write("<div id='container3'></div>"); | 
| +var menu = document.createElement('menu'); | 
| +menu.id = 'menu3'; | 
| +menu.type = 'popup'; | 
| +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", "popup"); | 
| +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 = 'popup'; | 
| +menu1.label = 'menu 4'; | 
| +document.getElementById('container4').appendChild(menu1); | 
| +var container4 = document.getElementById('container4'); | 
| +container4.contextMenu = menu1; | 
| +shouldBeNull("container4.contextMenu"); | 
| 
tkent
2014/08/19 01:14:41
Also, check container4.hasAttribute('contextmenu')
 
pals
2014/08/19 10:12:31
Done.
 | 
| + | 
| +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 = 'popup'; | 
| +menu2.label = 'menu 5'; | 
| +var menu3 = document.createElement('menu'); | 
| +menu3.id = 'menu5'; | 
| +menu3.type = 'popup'; | 
| +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"); | 
| 
tkent
2014/08/19 01:14:41
Additionally, we should test:
  container5.context
 
pals
2014/08/19 10:12:32
Done.
 | 
| + | 
| +debug("Test setting contextmenu attribute to null"); | 
| +document.write("<div id='container6'></div>"); | 
| 
tkent
2014/08/19 01:14:41
We should change the HTML to 
  <div id='container
 
pals
2014/08/19 10:12:31
Done.
 | 
| +var container6 = document.getElementById('container6'); | 
| +container6.contextMenu = null; | 
| +shouldBeNull("container6.contextMenu"); | 
| + | 
| +debug("Test setting contextmenu attribute to some text"); | 
| +document.write("<div id='container7'></div>"); | 
| +var container7 = document.getElementById('container7'); | 
| +container7.contextMenu = "foobar"; | 
| +shouldBeNull("container7.contextMenu"); | 
| + | 
| +debug("Test setting contextmenu attribute to comment"); | 
| +document.write("<div id='container8'></div>"); | 
| +var container8 = document.getElementById('container8'); | 
| +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", ""); | 
| +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"); | 
| +</script> | 
| +</html> |