Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(582)

Unified Diff: LayoutTests/fast/dom/hover-after-dom-delete-invisible-cursor.html

Issue 16285002: Do not invoke or clear hover effects on node deletion when cursor is invisible (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Patch for review Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/fast/dom/hover-after-dom-delete-invisible-cursor.html
diff --git a/LayoutTests/fast/dom/hover-after-dom-delete-invisible-cursor.html b/LayoutTests/fast/dom/hover-after-dom-delete-invisible-cursor.html
new file mode 100644
index 0000000000000000000000000000000000000000..c8dd399e27b4fcd43181a14e9c04279a23d0d2e7
--- /dev/null
+++ b/LayoutTests/fast/dom/hover-after-dom-delete-invisible-cursor.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+#red {
+ background-color: red;
+ position: absolute;
+ left: 50px;
+ top: 50px;
+ height: 100px;
+ width: 100px;
+}
+
+#blue {
+ background-color: blue;
+ position: absolute;
+ left: 50px;
+ top: 200px;
+ height: 100px;
+ width: 100px;
+}
+#blue:hover::after {
+ content: " Hovered.";
+}
+
+</style>
+<script src="../js/resources/js-test-pre.js"></script>
+</head>
+<body onload="runtest()" style="margin:0">
+
+<script type="text/javascript">
+var redDiv;
+var blueDiv;
+var startTime;
+var blueTextWhenHovered = "Blue. Hovered.";
+var redTextWhenHovered = "Red. Hovered. Keydown to delete."
+var blueTextWhenNotHovered = "Blue.";
+function runtest()
+{
+ if (!window.testRunner || !window.eventSender)
+ return;
+
+ if (!window.internals || !window.internals.setIsCursorVisible) {
+ debug("window.internals.setIsCursorVisible is required to run this test.");
+ return;
+ }
+
+ testRunner.waitUntilDone();
+
+ redDiv = document.getElementById('red');
+ blueDiv = document.getElementById('blue');
+
+ redDiv.addEventListener('mouseover', function(e) {
+ this.innerHTML = redTextWhenHovered;
+ });
+
+ document.addEventListener('keydown', function(e) {
+ blueDiv.style.top = "50px";
+ redDiv.parentNode.removeChild(redDiv);
+ });
+
+ debug("Mouse is visible, moving it over the red div.");
+ internals.setIsCursorVisible(document, true);
+ eventSender.mouseMoveTo(100, 100);
+ shouldBeEqualToString("redDiv.innerHTML", redTextWhenHovered);
+ shouldBeEqualToString("blueDiv.innerHTML", blueTextWhenNotHovered);
+
+ debug("Setting the mouse cursor to be invisible.");
+ internals.setIsCursorVisible(document, false);
+ shouldBeEqualToString("redDiv.innerHTML", redTextWhenHovered);
+ shouldBeEqualToString("blueDiv.innerHTML", blueTextWhenNotHovered);
+
+ debug("Mouse is invisible, deleting the red div.");
+ eventSender.keyDown("a");
+ window.setTimeout(testAfterDelete, 0);
+}
+
+function testAfterDelete()
+{
+ shouldBe("blueDiv.offsetTop", "50");
+ shouldBe(window.getComputedStyle(document.querySelector('#blue'), ':after').content, "");
Rick Byers 2013/06/03 23:00:17 This is good, but to reduce brittleness it would b
Rick Byers 2013/06/03 23:00:17 Put the expression (or part of the expression) ins
tdanderson 2013/06/04 22:17:41 Done.
tdanderson 2013/06/04 22:17:41 Done. As is, this could do with a bit more refacto
+ testRunner.notifyDone();
+}
+
+</script>
+
+<div id="red">Red.</div>
+<div id="blue">Blue.</div>
+
+<p>Test for <a href="http://crbug.com/240722">http://crbug.com/240722</a>. If the mouse cursor is not visible, no new hover effects should be invoked when the currently hovered node is removed from the DOM.</p>
+
+<div id="console"></div>
+</body>
+</html>

Powered by Google App Engine
This is Rietveld 408576698