Fix the incorrect behavior tap sound
authorSanghyup Lee <sh53.lee@samsung.com>
Mon, 24 Jun 2013 14:24:36 +0000 (23:24 +0900)
committerGerrit Code Review <gerrit@gerrit.vlan144.tizendev.org>
Mon, 1 Jul 2013 05:47:14 +0000 (05:47 +0000)
[Title] Fix the incorrect behavior tap sound
[Issue#]
[Problem] There is tap sound when you tap element with tabIndex attribute.
[Cause] We don't need to check element with tabIndex attribute.
[Solution] Change the conditions to play tap sound.
           Add the conditions about <a>, <area>, <button>, <input>, <summary> instead of using supportsFocus()

Change-Id: I8025ed44114d8ec951fc71e50fa663036d09a4c4

Source/WebCore/page/EventHandler.cpp

index dc3d63b..4576f06 100755 (executable)
@@ -502,6 +502,35 @@ static int textDistance(const Position& start, const Position& end)
      return TextIterator::rangeLength(range.get(), true);
 }
 
+#if ENABLE(TIZEN_LINK_EFFECT)
+static void playTapSound(Node* node)
+{
+    for (; node; node = node->parentNode()) {
+        if (node->disabled() || node->rendererIsEditable())
+            return;
+
+        if (node->hasTagName(HTMLNames::bodyTag))
+            continue;
+
+        if ((node->hasTagName(HTMLNames::aTag) && toHTMLElement(node)->hasAttribute(hrefAttr))
+            || (node->hasTagName(HTMLNames::areaTag) && toHTMLElement(node)->hasAttribute(hrefAttr))
+            || (node->hasTagName(HTMLNames::summaryTag) && node->supportsFocus())
+            || node->hasTagName(HTMLNames::buttonTag)
+            || node->hasTagName(HTMLNames::inputTag)
+            || node->hasEventListeners(eventNames().clickEvent)
+            || node->hasEventListeners(eventNames().mousedownEvent)
+            || node->hasEventListeners(eventNames().mouseupEvent)
+            || node->hasEventListeners(eventNames().mouseoverEvent)) {
+            TizenLinkEffect::playLinkEffect();
+            return;
+        }
+
+        if (node->renderer() && node->renderer()->isRoot())
+            return;
+    }
+}
+#endif
+
 bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestResults& event)
 {
     m_frame->document()->updateLayoutIgnorePendingStylesheets();
@@ -513,24 +542,8 @@ bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestR
 #endif
 
 #if ENABLE(TIZEN_LINK_EFFECT)
-    if (m_frame->page() &&m_frame->page()->settings()->linkEffectEnabled()) {
-        for (Node* node = innerNode; node && !node->disabled() && !node->rendererIsEditable(); node = node->parentNode()) {
-            if (node->hasTagName(HTMLNames::bodyTag))
-                continue;
-
-            if (node->supportsFocus()
-                || node->hasEventListeners(eventNames().clickEvent)
-                || node->hasEventListeners(eventNames().mousedownEvent)
-                || node->hasEventListeners(eventNames().mouseupEvent)
-                || node->hasEventListeners(eventNames().mouseoverEvent)) {
-                TizenLinkEffect::playLinkEffect();
-                break;
-            }
-
-            if (node->renderer() && node->renderer()->isRoot())
-                break;
-        }
-    }
+    if (m_frame->page() && m_frame->page()->settings()->linkEffectEnabled())
+        playTapSound(innerNode);
 #endif
 
     if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect))