Changeset 120248 in webkit


Ignore:
Timestamp:
Jun 13, 2012 2:09:57 PM (12 years ago)
Author:
scheib@chromium.org
Message:

Remove duplicate webkitpointerlockchange events when unlocking.
https://bugs.webkit.org/show_bug.cgi?id=88917

Reviewed by Dimitri Glazkov.

Source/WebCore:

Subsequent patches adding the new API for entering and exiting
pointer lock would be burdened by handling multiple change events
when the lock target is changed. This change introduces
temporary code to suppress duplicate change events.

Existing tests simplified by removing the duplicate change events.

  • page/PointerLockController.cpp:

(WebCore::PointerLockController::requestPointerLock):
(WebCore::PointerLockController::didLosePointerLock):

  • page/PointerLockController.h:

(PointerLockController):

LayoutTests:

Part of a series of refactoring changes to update pointer lock API to
the fullscreen locking style. https://bugs.webkit.org/show_bug.cgi?id=84402

Tests simplified by removing the duplicate change events.

  • pointer-lock/lock-already-locked-expected.txt:
  • pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt:
  • pointer-lock/pointerlockchange-pointerlockerror-events.html:
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r120244 r120248  
     12012-06-12  Vincent Scheib  <scheib@chromium.org>
     2
     3        Remove duplicate webkitpointerlockchange events when unlocking.
     4        https://bugs.webkit.org/show_bug.cgi?id=88917
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        Part of a series of refactoring changes to update pointer lock API to
     9        the fullscreen locking style. https://bugs.webkit.org/show_bug.cgi?id=84402
     10
     11        Tests simplified by removing the duplicate change events.
     12
     13        * pointer-lock/lock-already-locked-expected.txt:
     14        * pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt:
     15        * pointer-lock/pointerlockchange-pointerlockerror-events.html:
     16
    1172012-06-12  Filip Pizlo  <fpizlo@apple.com>
    218
  • trunk/LayoutTests/pointer-lock/lock-already-locked-expected.txt

    r120031 r120248  
    1818PASS document.onwebkitpointerlockchange event received.
    1919PASS document.webkitPointerLockElement is targetdiv2
    20 PASS document.onwebkitpointerlockchange event received.
    21 PASS document.webkitPointerLockElement is targetdiv2
    2220PASS successfullyParsed is true
    2321
  • trunk/LayoutTests/pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt

    r119763 r120248  
    1313     Lock targetDiv2.
    1414PASS onwebkitpointerlockchange received after: Lock targetDiv2.
    15 PASS onwebkitpointerlockchange received after: Lock targetDiv2.
    1615     Lock targetDiv2 again.
    1716PASS onwebkitpointerlockchange received after: Lock targetDiv2 again.
     
    2120PASS onwebkitpointerlockchange received after: Lock targetIframe1 (handler for iframe1).
    2221PASS onwebkitpointerlockchange received after: Lock targetIframe1.
    23 PASS onwebkitpointerlockchange received after: Lock targetIframe1.
    2422     Lock targetIframe2.
    2523     Lock targetIframe2 (handler for iframe1).
    2624     Lock targetIframe2 (handler for iframe2).
    2725PASS onwebkitpointerlockchange received after: Lock targetIframe2 (handler for iframe2).
    28 PASS onwebkitpointerlockchange received after: Lock targetIframe2 (handler for iframe1).
    2926PASS onwebkitpointerlockchange received after: Lock targetIframe2 (handler for iframe1).
    3027     Unlock targetIframe2.
  • trunk/LayoutTests/pointer-lock/pointerlockchange-pointerlockerror-events.html

    r119763 r120248  
    3838    };
    3939
    40     function expectOnlyChangeEvent(message, expectedCalls, targetDocument) {
     40    function expectOnlyChangeEvent(message, targetDocument) {
    4141        debug("     " + message);
    42         expectedCalls = expectedCalls !== undefined ? expectedCalls : 1;
    4342        targetDocument = targetDocument !== undefined ? targetDocument : document;
    44         eventExpected("onwebkitpointerlockchange", message, expectedCalls, targetDocument);
     43        eventExpected("onwebkitpointerlockchange", message, 1, targetDocument);
    4544        eventExpected("onwebkitpointerlockerror", message, 0, targetDocument);
    4645    };
    4746
    48     function expectOnlyErrorEvent(message, expectedCalls, targetDocument) {
     47    function expectOnlyErrorEvent(message, targetDocument) {
    4948        debug("     " + message);
    50         expectedCalls = expectedCalls !== undefined ? expectedCalls : 1;
    5149        targetDocument = targetDocument !== undefined ? targetDocument : document;
    5250        eventExpected("onwebkitpointerlockchange", message, 0, targetDocument);
    53         eventExpected("onwebkitpointerlockerror", message, expectedCalls, targetDocument);
     51        eventExpected("onwebkitpointerlockerror", message, 1, targetDocument);
    5452    };
    5553
     
    9088        },
    9189        function () {
    92             // FIXME: Only 1 change event should be expected.
    93             // But, we will see 2 until we remove the old code for
    94             // pointerlocklost and remove the call to didLosePointerLock
    95             // made in PointerLockController::requestPointerLock.
    96             // (https://bugs.webkit.org/show_bug.cgi?id=84402)
    97             expectOnlyChangeEvent("Lock targetDiv2.", 2);
     90            expectOnlyChangeEvent("Lock targetDiv2.");
    9891            navigator.webkitPointer.lock(targetDiv2);
    9992        },
     
    116109        },
    117110        function () {
    118             // FIXME: Only 1 change event should be expected.
    119             // But, we will see 2 until we remove the old code for
    120             // pointerlocklost and remove the call to didLosePointerLock
    121             // made in PointerLockController::requestPointerLock.
    122             // (https://bugs.webkit.org/show_bug.cgi?id=84402)
    123             expectOnlyChangeEvent("Lock targetIframe1.", 2);
    124             expectOnlyChangeEvent("Lock targetIframe1 (handler for iframe1).", 1, targetIframe1.contentDocument);
     111            expectOnlyChangeEvent("Lock targetIframe1.");
     112            expectOnlyChangeEvent("Lock targetIframe1 (handler for iframe1).", targetIframe1.contentDocument);
    125113            navigator.webkitPointer.lock(targetIframe1.contentDocument.body);
    126114        },
     
    130118        function () {
    131119            expectNoEvents("Lock targetIframe2.");
    132             // FIXME: Only 1 change event should be expected.
    133             // But, we will see 2 until we remove the old code for
    134             // pointerlocklost and remove the call to didLosePointerLock
    135             // made in PointerLockController::requestPointerLock.
    136             // (https://bugs.webkit.org/show_bug.cgi?id=84402)
    137             expectOnlyChangeEvent("Lock targetIframe2 (handler for iframe1).", 2, targetIframe1.contentDocument);
    138             expectOnlyChangeEvent("Lock targetIframe2 (handler for iframe2).", 1, targetIframe2.contentDocument);
     120            expectOnlyChangeEvent("Lock targetIframe2 (handler for iframe1).", targetIframe1.contentDocument);
     121            expectOnlyChangeEvent("Lock targetIframe2 (handler for iframe2).", targetIframe2.contentDocument);
    139122            navigator.webkitPointer.lock(targetIframe2.contentDocument.body);
    140123        },
     
    145128            expectNoEvents("Unlock targetIframe2.");
    146129            expectNoEvents("Unlock targetIframe2 (handler for iframe1).", targetIframe1.contentDocument);
    147             expectOnlyChangeEvent("Unlock targetIframe2 (handler for iframe2).", 1, targetIframe2.contentDocument);
     130            expectOnlyChangeEvent("Unlock targetIframe2 (handler for iframe2).", targetIframe2.contentDocument);
    148131            navigator.webkitPointer.unlock();
    149132        },
  • trunk/Source/WebCore/ChangeLog

    r120246 r120248  
     12012-06-12  Vincent Scheib  <scheib@chromium.org>
     2
     3        Remove duplicate webkitpointerlockchange events when unlocking.
     4        https://bugs.webkit.org/show_bug.cgi?id=88917
     5
     6        Reviewed by Dimitri Glazkov.
     7
     8        Subsequent patches adding the new API for entering and exiting
     9        pointer lock would be burdened by handling multiple change events
     10        when the lock target is changed. This change introduces
     11        temporary code to suppress duplicate change events.
     12
     13        Existing tests simplified by removing the duplicate change events.
     14
     15        * page/PointerLockController.cpp:
     16        (WebCore::PointerLockController::requestPointerLock):
     17        (WebCore::PointerLockController::didLosePointerLock):
     18        * page/PointerLockController.h:
     19        (PointerLockController):
     20
    1212012-06-13  Silvia Pfeiffer  <silviapf@chromium.org>
    222
  • trunk/Source/WebCore/page/PointerLockController.cpp

    r120031 r120248  
    6363                successCallback->handleEvent();
    6464        } else {
    65             didLosePointerLock();
     65            didLosePointerLock(false);
    6666            m_element = target;
    6767            if (successCallback)
     
    128128}
    129129
    130 void PointerLockController::didLosePointerLock()
     130void PointerLockController::didLosePointerLock(bool sendChangeEvent)
    131131{
    132132    // FIXME: Keep enqueueEvent usage. (https://bugs.webkit.org/show_bug.cgi?id=84402)
    133     enqueueEvent(eventNames().webkitpointerlockchangeEvent, m_element.get());
     133    if (sendChangeEvent)
     134        enqueueEvent(eventNames().webkitpointerlockchangeEvent, m_element.get());
    134135
    135136    // FIXME: Remove callback usage. (https://bugs.webkit.org/show_bug.cgi?id=84402)
  • trunk/Source/WebCore/page/PointerLockController.h

    r120031 r120248  
    5151    void didAcquirePointerLock();
    5252    void didNotAcquirePointerLock();
    53     void didLosePointerLock();
     53    void didLosePointerLock(bool sendChangeEvent = true); // FIXME: Remove sendChangeEvent parameter when removing old API. (https://bugs.webkit.org/show_bug.cgi?id=84402)
    5454    void dispatchLockedMouseEvent(const PlatformMouseEvent&, const AtomicString& eventType);
    5555
Note: See TracChangeset for help on using the changeset viewer.