Changeset 126080 in webkit


Ignore:
Timestamp:
Aug 20, 2012 3:24:35 PM (12 years ago)
Author:
adamk@chromium.org
Message:

Remove redundant TOUCH_LISTENER event type
https://bugs.webkit.org/show_bug.cgi?id=94524

Reviewed by Ryosuke Niwa.

Source/WebCore:

Code that needs to determine whether there are touch listeners
can instead call Document::touchEventHandlerCount(), added in r107832.
TOUCH_LISTENER didn't fit very well into the hasListenerType() model
anyway, as there's not a 1:1 correspondance between the enum value and
an event.

  • dom/Document.cpp:

(WebCore::Document::addListenerTypeIfNeeded): Remove two bits of code:
the bookkeeping for TOUCH_LISTENER, and the notification into
ChromeClient (which is handled by calls to didAddTouchEventHandler in
all the places that call addListenerTypeIfNeeded).
(WebCore::Document::didRemoveTouchEventHandler): Remove bookkeeping for TOUCH_LISTENER.

  • dom/Document.h:
  • history/CachedFrame.cpp:

(WebCore::CachedFrameBase::restore): Call touchEventHandlerCount instead of hasListenerType.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::updateType): ditto

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleTouchEvent): ditto

  • page/Frame.cpp:

(WebCore::Frame::setDocument): ditto

  • testing/Internals.cpp: Remove hasTouchEventListener method since its

data source no longer exists.

  • testing/Internals.h: ditto

(Internals):

  • testing/Internals.idl: ditto

Source/WebKit/chromium:

  • src/WebPluginContainerImpl.cpp:

(WebKit::WebPluginContainerImpl::setIsAcceptingTouchEvents): Remove
bookkeeping for TOUCH_LISTENER.

LayoutTests:

Removed tests for hasTouchEventListener as they're redundant
with tests for touchEventHandlerCount.

  • fast/events/touch/touch-handler-count-expected.txt:
  • fast/events/touch/touch-handler-count.html:
Location:
trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r126078 r126080  
     12012-08-20  Adam Klein  <adamk@chromium.org>
     2
     3        Remove redundant TOUCH_LISTENER event type
     4        https://bugs.webkit.org/show_bug.cgi?id=94524
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Removed tests for hasTouchEventListener as they're redundant
     9        with tests for touchEventHandlerCount.
     10
     11        * fast/events/touch/touch-handler-count-expected.txt:
     12        * fast/events/touch/touch-handler-count.html:
     13
    1142012-08-20  Kenneth Russell  <kbr@google.com>
    215
  • trunk/LayoutTests/fast/events/touch/touch-handler-count-expected.txt

    r123354 r126080  
    66Test addEventListener/removeEventListener on the document.
    77PASS window.internals.touchEventHandlerCount(document) is 0
    8 PASS window.internals.hasTouchEventListener(document) is false
    98PASS window.internals.touchEventHandlerCount(document) is 1
    10 PASS window.internals.hasTouchEventListener(document) is true
    119PASS window.internals.touchEventHandlerCount(document) is 2
    1210PASS window.internals.touchEventHandlerCount(document) is 3
     
    1614PASS window.internals.touchEventHandlerCount(document) is 1
    1715PASS window.internals.touchEventHandlerCount(document) is 0
    18 PASS window.internals.hasTouchEventListener(document) is false
    1916Test setting touch handlers on the document.
    2017PASS window.internals.touchEventHandlerCount(document) is 0
    21 PASS window.internals.hasTouchEventListener(document) is false
    2218PASS window.internals.touchEventHandlerCount(document) is 4
    23 PASS window.internals.hasTouchEventListener(document) is true
    2419PASS window.internals.touchEventHandlerCount(document) is 4
    2520PASS window.internals.touchEventHandlerCount(document) is 3
    2621PASS window.internals.touchEventHandlerCount(document) is 3
    2722PASS window.internals.touchEventHandlerCount(document) is 0
    28 PASS window.internals.hasTouchEventListener(document) is false
    2923Test addEventListener/removeEventListener on the window.
    3024PASS window.internals.touchEventHandlerCount(document) is 0
    31 PASS window.internals.hasTouchEventListener(document) is false
    3225PASS window.internals.touchEventHandlerCount(document) is 1
    33 PASS window.internals.hasTouchEventListener(document) is true
    3426PASS window.internals.touchEventHandlerCount(document) is 2
    3527PASS window.internals.touchEventHandlerCount(document) is 3
     
    3931PASS window.internals.touchEventHandlerCount(document) is 1
    4032PASS window.internals.touchEventHandlerCount(document) is 0
    41 PASS window.internals.hasTouchEventListener(document) is false
    4233Test setting touch handlers on the window.
    4334PASS window.internals.touchEventHandlerCount(document) is 0
    44 PASS window.internals.hasTouchEventListener(document) is false
    4535PASS window.internals.touchEventHandlerCount(document) is 4
    46 PASS window.internals.hasTouchEventListener(document) is true
    4736PASS window.internals.touchEventHandlerCount(document) is 4
    4837PASS window.internals.touchEventHandlerCount(document) is 3
    4938PASS window.internals.touchEventHandlerCount(document) is 3
    5039PASS window.internals.touchEventHandlerCount(document) is 0
    51 PASS window.internals.hasTouchEventListener(document) is false
    5240Test addEventListener/removeEventListener on a div.
    5341PASS window.internals.touchEventHandlerCount(document) is 0
    54 PASS window.internals.hasTouchEventListener(document) is false
    5542PASS window.internals.touchEventHandlerCount(document) is 1
    56 PASS window.internals.hasTouchEventListener(document) is true
    5743PASS window.internals.touchEventHandlerCount(document) is 2
    5844PASS window.internals.touchEventHandlerCount(document) is 3
     
    6248PASS window.internals.touchEventHandlerCount(document) is 1
    6349PASS window.internals.touchEventHandlerCount(document) is 0
    64 PASS window.internals.hasTouchEventListener(document) is false
    6550Test setting touch handlers on a div.
    6651PASS window.internals.touchEventHandlerCount(document) is 0
    67 PASS window.internals.hasTouchEventListener(document) is false
    6852PASS window.internals.touchEventHandlerCount(document) is 4
    69 PASS window.internals.hasTouchEventListener(document) is true
    7053PASS window.internals.touchEventHandlerCount(document) is 4
    7154PASS window.internals.touchEventHandlerCount(document) is 3
    7255PASS window.internals.touchEventHandlerCount(document) is 3
    7356PASS window.internals.touchEventHandlerCount(document) is 0
    74 PASS window.internals.hasTouchEventListener(document) is false
    7557Test addEventListener/removeEventListener on a new div.
    7658PASS window.internals.touchEventHandlerCount(document) is 0
    77 PASS window.internals.hasTouchEventListener(document) is false
    7859PASS window.internals.touchEventHandlerCount(document) is 2
    79 PASS window.internals.hasTouchEventListener(document) is true
    8060PASS window.internals.touchEventHandlerCount(document) is 2
    8161PASS window.internals.touchEventHandlerCount(document) is 3
     
    8464PASS window.internals.touchEventHandlerCount(document) is 2
    8565PASS window.internals.touchEventHandlerCount(document) is 0
    86 PASS window.internals.hasTouchEventListener(document) is false
    8766Test setting touch handlers on a new div.
    8867PASS window.internals.touchEventHandlerCount(document) is 0
    89 PASS window.internals.hasTouchEventListener(document) is false
    9068PASS window.internals.touchEventHandlerCount(document) is 2
    91 PASS window.internals.hasTouchEventListener(document) is true
    9269PASS window.internals.touchEventHandlerCount(document) is 2
    9370PASS window.internals.touchEventHandlerCount(document) is 3
     
    9572PASS window.internals.touchEventHandlerCount(document) is 2
    9673PASS window.internals.touchEventHandlerCount(document) is 0
    97 PASS window.internals.hasTouchEventListener(document) is false
    9874
  • trunk/LayoutTests/fast/events/touch/touch-handler-count.html

    r123354 r126080  
    99
    1010    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    11     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    1211    document.addEventListener('touchstart', listener, true);
    1312    shouldBe('window.internals.touchEventHandlerCount(document)', '1');
    14     shouldBe('window.internals.hasTouchEventListener(document)', 'true');
    1513    document.addEventListener('touchmove', listener, true);
    1614    shouldBe('window.internals.touchEventHandlerCount(document)', '2');
     
    3028    document.removeEventListener('touchstart', listener, false);
    3129    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    32     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    3330})();
    3431
     
    3633(function() {
    3734    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    38     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    3935    document.ontouchstart = function() { }
    4036    document.ontouchmove = function() {}
     
    4238    document.ontouchcancel = function() {}
    4339    shouldBe('window.internals.touchEventHandlerCount(document)', '4');
    44     shouldBe('window.internals.hasTouchEventListener(document)', 'true');
    4540    document.ontouchstart = function() { }
    4641    shouldBe('window.internals.touchEventHandlerCount(document)', '4');
     
    5348    document.ontouchcancel = null;
    5449    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    55     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    5650})();
    5751
     
    6155
    6256    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    63     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    6457    window.addEventListener('touchstart', listener, true);
    6558    shouldBe('window.internals.touchEventHandlerCount(document)', '1');
    66     shouldBe('window.internals.hasTouchEventListener(document)', 'true');
    6759    window.addEventListener('touchmove', listener, true);
    6860    shouldBe('window.internals.touchEventHandlerCount(document)', '2');
     
    8274    window.removeEventListener('touchstart', listener, false);
    8375    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    84     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    8576})();
    8677
     
    8879(function() {
    8980    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    90     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    9181    window.ontouchstart = function() { }
    9282    window.ontouchmove = function() {}
     
    9484    window.ontouchcancel = function() {}
    9585    shouldBe('window.internals.touchEventHandlerCount(document)', '4');
    96     shouldBe('window.internals.hasTouchEventListener(document)', 'true');
    9786    window.ontouchstart = function() { }
    9887    shouldBe('window.internals.touchEventHandlerCount(document)', '4');
     
    10594    window.ontouchcancel = null;
    10695    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    107     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    10896})();
    10997
     
    114102
    115103    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    116     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    117104    div.addEventListener('touchstart', listener, true);
    118105    shouldBe('window.internals.touchEventHandlerCount(document)', '1');
    119     shouldBe('window.internals.hasTouchEventListener(document)', 'true');
    120106    div.addEventListener('touchmove', listener, true);
    121107    shouldBe('window.internals.touchEventHandlerCount(document)', '2');
     
    135121    div.removeEventListener('touchstart', listener, false);
    136122    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    137     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    138123})();
    139124
     
    143128
    144129    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    145     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    146130    div.ontouchstart = function() { }
    147131    div.ontouchmove = function() { }
     
    149133    div.ontouchcancel = function() { }
    150134    shouldBe('window.internals.touchEventHandlerCount(document)', '4');
    151     shouldBe('window.internals.hasTouchEventListener(document)', 'true');
    152135    div.ontouchstart = function() { }
    153136    shouldBe('window.internals.touchEventHandlerCount(document)', '4');
     
    160143    div.ontouchcancel = null;
    161144    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    162     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    163145})();
    164146
     
    170152
    171153    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    172     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    173154
    174155    div.addEventListener('touchstart', listener, true);
    175156    div.addEventListener('touchmove', listener, true);
    176157    shouldBe('window.internals.touchEventHandlerCount(document)', '2');
    177     shouldBe('window.internals.hasTouchEventListener(document)', 'true');
    178158
    179159    touchtarget.appendChild(div);
     
    195175    div.removeEventListener('touchend', listener, true);
    196176    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    197     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    198177})();
    199178
     
    204183
    205184    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    206     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    207185
    208186    div.ontouchstart = function() { }
    209187    div.ontouchmove = function() { }
    210188    shouldBe('window.internals.touchEventHandlerCount(document)', '2');
    211     shouldBe('window.internals.hasTouchEventListener(document)', 'true');
    212189
    213190    touchtarget.appendChild(div);
     
    226203    div.ontouchmove = null;
    227204    shouldBe('window.internals.touchEventHandlerCount(document)', '0');
    228     shouldBe('window.internals.hasTouchEventListener(document)', 'false');
    229205})();
    230206
  • trunk/Source/WebCore/ChangeLog

    r126076 r126080  
     12012-08-20  Adam Klein  <adamk@chromium.org>
     2
     3        Remove redundant TOUCH_LISTENER event type
     4        https://bugs.webkit.org/show_bug.cgi?id=94524
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Code that needs to determine whether there are touch listeners
     9        can instead call Document::touchEventHandlerCount(), added in r107832.
     10        TOUCH_LISTENER didn't fit very well into the hasListenerType() model
     11        anyway, as there's not a 1:1 correspondance between the enum value and
     12        an event.
     13
     14        * dom/Document.cpp:
     15        (WebCore::Document::addListenerTypeIfNeeded): Remove two bits of code:
     16        the bookkeeping for TOUCH_LISTENER, and the notification into
     17        ChromeClient (which is handled by calls to didAddTouchEventHandler in
     18        all the places that call addListenerTypeIfNeeded).
     19        (WebCore::Document::didRemoveTouchEventHandler): Remove bookkeeping for TOUCH_LISTENER.
     20        * dom/Document.h:
     21        * history/CachedFrame.cpp:
     22        (WebCore::CachedFrameBase::restore): Call touchEventHandlerCount instead of hasListenerType.
     23        * html/HTMLInputElement.cpp:
     24        (WebCore::HTMLInputElement::updateType): ditto
     25        * page/EventHandler.cpp:
     26        (WebCore::EventHandler::handleTouchEvent): ditto
     27        * page/Frame.cpp:
     28        (WebCore::Frame::setDocument): ditto
     29        * testing/Internals.cpp: Remove hasTouchEventListener method since its
     30        data source no longer exists.
     31        * testing/Internals.h: ditto
     32        (Internals):
     33        * testing/Internals.idl: ditto
     34
    1352012-08-16  James Robinson  <jamesr@chromium.org>
    236
  • trunk/Source/WebCore/dom/Document.cpp

    r126043 r126080  
    41504150    else if (eventType == eventNames().beforeloadEvent)
    41514151        addListenerType(BEFORELOAD_LISTENER);
    4152 #if ENABLE(TOUCH_EVENTS)
    4153     else if (eventType == eventNames().touchstartEvent
    4154              || eventType == eventNames().touchmoveEvent
    4155              || eventType == eventNames().touchendEvent
    4156              || eventType == eventNames().touchcancelEvent) {
    4157         addListenerType(TOUCH_LISTENER);
    4158         if (Page* page = this->page())
    4159             page->chrome()->client()->needTouchEvents(true);
    4160     }
    4161 #endif
    41624152    else if (eventType == eventNames().scrollEvent)
    41634153        addListenerType(SCROLL_LISTENER);
     
    59875977        return;
    59885978
    5989     m_listenerTypes &= ~TOUCH_LISTENER;
    59905979    Page* page = this->page();
    59915980    if (!page)
  • trunk/Source/WebCore/dom/Document.h

    r125988 r126080  
    804804        TRANSITIONEND_LISTENER               = 0x800,
    805805        BEFORELOAD_LISTENER                  = 0x1000,
    806         TOUCH_LISTENER                       = 0x2000,
    807         SCROLL_LISTENER                      = 0x4000
     806        SCROLL_LISTENER                      = 0x2000
    808807    };
    809808
  • trunk/Source/WebCore/history/CachedFrame.cpp

    r125592 r126080  
    135135   
    136136#if ENABLE(TOUCH_EVENTS)
    137     if (m_document->hasListenerType(Document::TOUCH_LISTENER))
     137    if (m_document->touchEventHandlerCount())
    138138        m_document->page()->chrome()->client()->needTouchEvents(true);
    139139#endif
  • trunk/Source/WebCore/html/HTMLInputElement.cpp

    r125759 r126080  
    445445    bool hasTouchEventHandler = m_inputType->hasTouchEventHandler();
    446446    if (hasTouchEventHandler != m_hasTouchEventHandler) {
    447       if (hasTouchEventHandler) {
     447      if (hasTouchEventHandler)
    448448        document()->didAddTouchEventHandler();
    449         document()->addListenerType(Document::TOUCH_LISTENER);
    450       } else
     449      else
    451450        document()->didRemoveTouchEventHandler();
    452451      m_hasTouchEventHandler = hasTouchEventHandler;
  • trunk/Source/WebCore/page/EventHandler.cpp

    r125898 r126080  
    35913591            if (!doc)
    35923592                continue;
    3593             if (!doc->hasListenerType(Document::TOUCH_LISTENER))
     3593            if (!doc->touchEventHandlerCount())
    35943594                continue;
    35953595
     
    36113611        if (!doc)
    36123612            continue;
    3613         if (!doc->hasListenerType(Document::TOUCH_LISTENER))
     3613        if (!doc->touchEventHandlerCount())
    36143614            continue;
    36153615        Frame* targetFrame = doc->frame();
  • trunk/Source/WebCore/page/Frame.cpp

    r125615 r126080  
    313313        notifyChromeClientWheelEventHandlerCountChanged();
    314314#if ENABLE(TOUCH_EVENTS)
    315         if (m_doc && m_doc->hasListenerType(Document::TOUCH_LISTENER))
     315        if (m_doc && m_doc->touchEventHandlerCount())
    316316            m_page->chrome()->client()->needTouchEvents(true);
    317317#endif
  • trunk/Source/WebCore/testing/Internals.cpp

    r125898 r126080  
    966966}
    967967
    968 bool Internals::hasTouchEventListener(Document* document, ExceptionCode& ec)
    969 {
    970     if (!document) {
    971         ec = INVALID_ACCESS_ERR;
    972         return 0;
    973     }
    974 
    975     return document->hasListenerType(Document::TOUCH_LISTENER);
    976 }
    977 
    978 
    979968PassRefPtr<NodeList> Internals::nodesFromRect(Document* document, int x, int y, unsigned topPadding, unsigned rightPadding,
    980969    unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allowShadowContent, ExceptionCode& ec) const
  • trunk/Source/WebCore/testing/Internals.h

    r125898 r126080  
    159159    unsigned wheelEventHandlerCount(Document*, ExceptionCode&);
    160160    unsigned touchEventHandlerCount(Document*, ExceptionCode&);
    161     bool hasTouchEventListener(Document*, ExceptionCode&);
    162161
    163162    PassRefPtr<NodeList> nodesFromRect(Document*, int x, int y, unsigned topPadding, unsigned rightPadding,
  • trunk/Source/WebCore/testing/Internals.idl

    r125898 r126080  
    136136        unsigned long wheelEventHandlerCount(in Document document) raises (DOMException);
    137137        unsigned long touchEventHandlerCount(in Document document) raises (DOMException);
    138         boolean hasTouchEventListener(in Document document) raises (DOMException);
    139138
    140139        NodeList nodesFromRect(in Document document, in long x, in long y,
  • trunk/Source/WebKit/chromium/ChangeLog

    r126076 r126080  
     12012-08-20  Adam Klein  <adamk@chromium.org>
     2
     3        Remove redundant TOUCH_LISTENER event type
     4        https://bugs.webkit.org/show_bug.cgi?id=94524
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        * src/WebPluginContainerImpl.cpp:
     9        (WebKit::WebPluginContainerImpl::setIsAcceptingTouchEvents): Remove
     10        bookkeeping for TOUCH_LISTENER.
     11
    1122012-08-16  James Robinson  <jamesr@chromium.org>
    213
  • trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.cpp

    r126076 r126080  
    513513        return;
    514514    m_isAcceptingTouchEvents = acceptingTouchEvents;
    515     if (m_isAcceptingTouchEvents) {
     515    if (m_isAcceptingTouchEvents)
    516516        m_element->document()->didAddTouchEventHandler();
    517         m_element->document()->addListenerType(Document::TOUCH_LISTENER);
    518     } else
     517    else
    519518        m_element->document()->didRemoveTouchEventHandler();
    520519}
Note: See TracChangeset for help on using the changeset viewer.