diff options
author | yawano <yawano@chromium.org> | 2015-04-26 23:34:22 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-27 06:34:22 +0000 |
commit | 4830c50b38bcb3b5c2144b7d85fb34ab7f985270 (patch) | |
tree | b0781eb5e81323114d944d920d2f45ddb10f9e6c | |
parent | c33ec5d12a7994ea3d8c03fe8cd9efc6745dc837 (diff) | |
download | chromium_src-4830c50b38bcb3b5c2144b7d85fb34ab7f985270.zip chromium_src-4830c50b38bcb3b5c2144b7d85fb34ab7f985270.tar.gz chromium_src-4830c50b38bcb3b5c2144b7d85fb34ab7f985270.tar.bz2 |
Fixed to return original context element.
BUG=423248
TEST=out/Release/browser_tests --gtest_filter=WebUIResourceBrowserTest.ContextMenuHandlerTest
Review URL: https://codereview.chromium.org/647483006
Cr-Commit-Position: refs/heads/master@{#327004}
-rw-r--r-- | chrome/test/data/webui/context_menu_handler_test.html | 65 | ||||
-rw-r--r-- | chrome/test/data/webui/webui_resource_browsertest.cc | 14 | ||||
-rw-r--r-- | ui/webui/resources/js/cr/ui/context_menu_handler.js | 2 |
3 files changed, 80 insertions, 1 deletions
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 0000000..366ed0e --- /dev/null +++ b/chrome/test/data/webui/context_menu_handler_test.html @@ -0,0 +1,65 @@ +<!DOCTYPE html> +<html> +<body> +<script> + +function testShowAndHideEvents() { + // Keep original Date.now not to affect other code. + var originalDateNow = Date.now; + + // Initial value is 1 since 0 becomes false. + var currentTime = 1; + + // Overrides Date.now to simulate time. + Date.now = function() { return currentTime; }; + + 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 events = []; + cmh.addEventListener('show', function(e) { events.push(e); }); + cmh.addEventListener('hide', function(e) { events.push(e); }); + + // Show context menu of elem1. + elem1.dispatchEvent(new MouseEvent('contextmenu')); + assertEquals(1, events.length); + assertEquals('show', events[0].type); + assertEquals(elem1, events[0].element); + assertEquals(menu, events[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. + currentTime += 51; // ms + + elem2.dispatchEvent(new MouseEvent('contextmenu')); + assertEquals(3, events.length); + assertEquals('hide', events[1].type); + assertEquals(elem1, events[1].element); + assertEquals(menu, events[1].menu); + assertEquals('show', events[2].type); + assertEquals(elem2, events[2].element); + assertEquals(menu, events[2].menu); + + Date.now = originalDateNow; +} + +</script> +</body> +</html> diff --git a/chrome/test/data/webui/webui_resource_browsertest.cc b/chrome/test/data/webui/webui_resource_browsertest.cc index c447683..6fe54c5 100644 --- a/chrome/test/data/webui/webui_resource_browsertest.cc +++ b/chrome/test/data/webui/webui_resource_browsertest.cc @@ -173,3 +173,17 @@ IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, CommandTest) { AddLibrary(IDR_WEBUI_JS_CR_UI_COMMAND); RunTest(base::FilePath(FILE_PATH_LITERAL("command_test.html"))); } + +IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, ContextMenuHandlerTest) { + AddLibrary(IDR_WEBUI_JS_ASSERT); + AddLibrary(IDR_WEBUI_JS_EVENT_TRACKER); + AddLibrary(IDR_WEBUI_JS_CR); + AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET); + AddLibrary(IDR_WEBUI_JS_CR_UI); + AddLibrary(IDR_WEBUI_JS_CR_UI_POSITION_UTIL); + AddLibrary(IDR_WEBUI_JS_CR_UI_MENU_ITEM); + AddLibrary(IDR_WEBUI_JS_CR_UI_MENU_BUTTON); + AddLibrary(IDR_WEBUI_JS_CR_UI_MENU); + AddLibrary(IDR_WEBUI_JS_CR_UI_CONTEXT_MENU_HANDLER); + RunTest(base::FilePath(FILE_PATH_LITERAL("context_menu_handler_test.html"))); +} diff --git a/ui/webui/resources/js/cr/ui/context_menu_handler.js b/ui/webui/resources/js/cr/ui/context_menu_handler.js index d165b69..1ff7b6e 100644 --- a/ui/webui/resources/js/cr/ui/context_menu_handler.js +++ b/ui/webui/resources/js/cr/ui/context_menu_handler.js @@ -93,7 +93,7 @@ cr.define('cr.ui', function() { this.hideTimestamp_ = cr.isWindows ? Date.now() : 0; var ev = new Event('hide'); - ev.element = menu.contextElement; + ev.element = originalContextElement; ev.menu = menu; this.dispatchEvent(ev); }, |