Title: [102734] trunk
Revision
102734
Author
[email protected]
Date
2011-12-13 20:59:33 -0800 (Tue, 13 Dec 2011)

Log Message

HTML details summary not working with form controls
https://bugs.webkit.org/show_bug.cgi?id=74398

Patch by Hajime Morrita <[email protected]> on 2011-12-13
Reviewed by Kent Tamura.

Source/WebCore:

Allowed HTMLSummaryElement to skip the toggle logic if the event
target is a form control.

Test: fast/html/details-click-controls.html

* html/HTMLSummaryElement.cpp:
(WebCore::isClickableControl):
(WebCore::HTMLSummaryElement::defaultEventHandler):

LayoutTests:

* fast/html/details-click-controls-expected.txt: Added.
* fast/html/details-click-controls.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (102733 => 102734)


--- trunk/LayoutTests/ChangeLog	2011-12-14 04:56:56 UTC (rev 102733)
+++ trunk/LayoutTests/ChangeLog	2011-12-14 04:59:33 UTC (rev 102734)
@@ -1,3 +1,13 @@
+2011-12-13  Hajime Morrita  <[email protected]>
+
+        HTML details summary not working with form controls
+        https://bugs.webkit.org/show_bug.cgi?id=74398
+
+        Reviewed by Kent Tamura.
+
+        * fast/html/details-click-controls-expected.txt: Added.
+        * fast/html/details-click-controls.html: Added.
+
 2011-12-13  Dmitry Lomov  <[email protected]>
 
         https://bugs.webkit.org/show_bug.cgi?id=74456

Added: trunk/LayoutTests/fast/html/details-click-controls-expected.txt (0 => 102734)


--- trunk/LayoutTests/fast/html/details-click-controls-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/html/details-click-controls-expected.txt	2011-12-14 04:59:33 UTC (rev 102734)
@@ -0,0 +1,6 @@
+PASS details.open is false
+PASS details.open is false
+PASS details.open is false
+PASS details.open is false
+PASS details.open is true
+

Added: trunk/LayoutTests/fast/html/details-click-controls.html (0 => 102734)


--- trunk/LayoutTests/fast/html/details-click-controls.html	                        (rev 0)
+++ trunk/LayoutTests/fast/html/details-click-controls.html	2011-12-14 04:59:33 UTC (rev 102734)
@@ -0,0 +1,44 @@
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<details id="d">
+<summary>
+  <input type="button" value="button" id="buttonControl">
+  <input type="text" value="text" id="textControl">
+  <textarea value="textarea" id="textareaControl"></textarea>
+  <div id="block">This is clickable summary text</div>
+</summary>
+This is a detail.
+</details>
+<script>
+function clickOn(id)
+{
+    var control = document.getElementById(id);
+    var x = control.offsetLeft;
+    var y = control.offsetTop;
+    var delta = 5;
+    eventSender.mouseMoveTo(x + delta, y + delta);
+    eventSender.mouseDown();
+    eventSender.mouseUp();
+}
+
+if (window.eventSender) {
+    details = document.getElementById("d");
+    shouldBeFalse("details.open");
+    clickOn("buttonControl");
+    shouldBeFalse("details.open");
+    clickOn("textControl");
+    shouldBeFalse("details.open");
+    clickOn("textareaControl");
+    shouldBeFalse("details.open");
+    clickOn("block");
+    shouldBeTrue("details.open");
+    details.style.display = "none";
+}
+
+
+</script>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (102733 => 102734)


--- trunk/Source/WebCore/ChangeLog	2011-12-14 04:56:56 UTC (rev 102733)
+++ trunk/Source/WebCore/ChangeLog	2011-12-14 04:59:33 UTC (rev 102734)
@@ -1,3 +1,19 @@
+2011-12-13  Hajime Morrita  <[email protected]>
+
+        HTML details summary not working with form controls
+        https://bugs.webkit.org/show_bug.cgi?id=74398
+
+        Reviewed by Kent Tamura.
+
+        Allowed HTMLSummaryElement to skip the toggle logic if the event
+        target is a form control.
+
+        Test: fast/html/details-click-controls.html
+
+        * html/HTMLSummaryElement.cpp:
+        (WebCore::isClickableControl):
+        (WebCore::HTMLSummaryElement::defaultEventHandler):
+
 2011-12-13  James Wei <[email protected]> 
 
         Optimize to not use pow() in the inner loop in AudioParamTimeline

Modified: trunk/Source/WebCore/html/HTMLSummaryElement.cpp (102733 => 102734)


--- trunk/Source/WebCore/html/HTMLSummaryElement.cpp	2011-12-14 04:56:56 UTC (rev 102733)
+++ trunk/Source/WebCore/html/HTMLSummaryElement.cpp	2011-12-14 04:59:33 UTC (rev 102734)
@@ -93,15 +93,27 @@
     return 0;
 }
 
+static bool isClickableControl(Node* node)
+{
+    if (!node->isElementNode())
+        return false;
+    Element* element = toElement(node);
+    if (element->isFormControlElement())
+        return true;
+    Element* host = toElement(element->shadowAncestorNode());
+    return host && host->isFormControlElement();
+}
+
 void HTMLSummaryElement::defaultEventHandler(Event* event)
 {
     HTMLElement::defaultEventHandler(event);
     if (!isMainSummary() || !renderer() || !renderer()->isSummary() || !event->isMouseEvent() || event->type() != eventNames().clickEvent || event->defaultHandled())
         return;
-
     MouseEvent* mouseEvent = static_cast<MouseEvent*>(event);
     if (mouseEvent->button() != LeftButton)
         return;
+    if (isClickableControl(event->target()->toNode()))
+        return;
 
     if (HTMLDetailsElement* details = detailsElement())
         details->toggleOpen();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to