Index: chrome/test/data/webui/context_menu_handler_test.html |
diff --git a/chrome/test/data/webui/context_menu_handler_test.html b/chrome/test/data/webui/context_menu_handler_test.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4ca795363e6d8695a5b7b0b8a6f9098dee75b176 |
--- /dev/null |
+++ b/chrome/test/data/webui/context_menu_handler_test.html |
@@ -0,0 +1,58 @@ |
+<!DOCTYPE html> |
+<html> |
+<body> |
+<script> |
+ |
+function testShowAndHideEvents(callback) { |
+ var cmh = cr.ui.contextMenuHandler; |
+ |
+ // Create context menu. |
+ var menu = document.createElement('div'); |
+ cr.ui.decorate(menu, cr.ui.Menu); |
+ document.body.appendChild(menu); |
+ |
+ var menuItem = document.createElement('div'); |
+ menu.addMenuItem(menuItem); |
+ |
+ // Create target elements. |
+ var elem1 = document.createElement('div'); |
+ var elem2 = document.createElement('div'); |
+ |
+ cmh.setContextMenu(elem1, menu); |
+ cmh.setContextMenu(elem2, menu); |
+ |
+ var callbacks = []; |
+ cmh.addEventListener('show', function(e) { callbacks.push(e); }); |
+ cmh.addEventListener('hide', function(e) { callbacks.push(e); }); |
+ |
+ // Show context menu of elem1. |
+ elem1.dispatchEvent(new MouseEvent('contextmenu')); |
+ assertEquals(1, callbacks.length); |
+ assertEquals('show', callbacks[0].type); |
+ assertEquals(elem1, callbacks[0].element); |
+ assertEquals(menu, callbacks[0].menu); |
+ |
+ // Show context menu of elem2. |
+ document.dispatchEvent(new MouseEvent('mousedown')); |
+ |
+ // On Windows to prevent context menu show again by mouse right button up, |
+ // we need to wait at least 50ms from the last hide of context menu. |
+ var wait = cr.isWindows ? 100 : 0; |
+ |
+ setTimeout(function() { |
Dan Beam
2014/10/29 01:17:17
this is almost never a good idea. please make thi
|
+ elem2.dispatchEvent(new MouseEvent('contextmenu')); |
+ assertEquals(3, callbacks.length); |
+ assertEquals('hide', callbacks[1].type); |
+ assertEquals(elem1, callbacks[1].element); |
+ assertEquals(menu, callbacks[1].menu); |
+ assertEquals('show', callbacks[2].type); |
+ assertEquals(elem2, callbacks[2].element); |
+ assertEquals(menu, callbacks[2].menu); |
+ |
+ callback(false); |
+ }, wait); |
+} |
+ |
+</script> |
+</body> |
+</html> |