Changeset 252122 in webkit


Ignore:
Timestamp:
Nov 5, 2019 7:56:05 PM (4 years ago)
Author:
rniwa@webkit.org
Message:

Integrate visualViewport's resize event with HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=203842

Reviewed by Simon Fraser.

Source/WebCore:

Integrate the visual viewport API's resize event with HTML5 event loop
as intended in r251867.

Test: fast/events/resize-subframe-in-rendering-update.html

  • dom/DocumentEventQueue.cpp:

(WebCore::DocumentEventQueue::enqueueResizeEvent): Deleted.

  • dom/DocumentEventQueue.h:
  • page/VisualViewport.cpp:

(WebCore::VisualViewport::update):
(WebCore::VisualViewport::enqueueResizeEvent): Deleted.

LayoutTests:

Added a test to make sure resize event fires on visualViewport in the frame tree order.

  • fast/visual-viewport/visual-viewport-resize-subframe-in-rendering-update-expected.txt: Added.
  • fast/visual-viewport/visual-viewport-resize-subframe-in-rendering-update.html: Added.
Location:
trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r252121 r252122  
     12019-11-05  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        Integrate visualViewport's resize event with HTML5 event loop
     4        https://bugs.webkit.org/show_bug.cgi?id=203842
     5
     6        Reviewed by Simon Fraser.
     7
     8        Added a test to make sure resize event fires on visualViewport in the frame tree order.
     9
     10        * fast/visual-viewport/visual-viewport-resize-subframe-in-rendering-update-expected.txt: Added.
     11        * fast/visual-viewport/visual-viewport-resize-subframe-in-rendering-update.html: Added.
     12
    1132019-11-05  Justin Fan  <justin_fan@apple.com>
    214
  • trunk/Source/WebCore/ChangeLog

    r252118 r252122  
     12019-11-05  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        Integrate visualViewport's resize event with HTML5 event loop
     4        https://bugs.webkit.org/show_bug.cgi?id=203842
     5
     6        Reviewed by Simon Fraser.
     7
     8        Integrate the visual viewport API's resize event with HTML5 event loop
     9        as intended in r251867.
     10
     11        Test: fast/events/resize-subframe-in-rendering-update.html
     12
     13        * dom/DocumentEventQueue.cpp:
     14        (WebCore::DocumentEventQueue::enqueueResizeEvent): Deleted.
     15        * dom/DocumentEventQueue.h:
     16        * page/VisualViewport.cpp:
     17        (WebCore::VisualViewport::update):
     18        (WebCore::VisualViewport::enqueueResizeEvent): Deleted.
     19
    1202019-11-05  Fujii Hironori  <Hironori.Fujii@sony.com>
    221
  • trunk/Source/WebCore/dom/DocumentEventQueue.cpp

    r250464 r252122  
    106106}
    107107
    108 void DocumentEventQueue::enqueueResizeEvent(EventTarget& target, Event::CanBubble canBubble, Event::IsCancelable cancelable)
    109 {
    110     if (m_isClosed)
    111         return;
    112 
    113     if (!m_document.hasListenerType(Document::RESIZE_LISTENER))
    114         return;
    115 
    116     if (!m_targetsWithQueuedResizeEvents.add(&target).isNewEntry)
    117         return;
    118 
    119     Ref<Event> resizeEvent = Event::create(eventNames().resizeEvent, canBubble, cancelable);
    120     resizeEvent->setTarget(&target);
    121     enqueueEvent(WTFMove(resizeEvent));
    122 }
    123 
    124108bool DocumentEventQueue::cancelEvent(Event& event)
    125109{
  • trunk/Source/WebCore/dom/DocumentEventQueue.h

    r234995 r252122  
    5050    void enqueueOrDispatchScrollEvent(Node&);
    5151    void enqueueScrollEvent(EventTarget&, Event::CanBubble, Event::IsCancelable);
    52     void enqueueResizeEvent(EventTarget&, Event::CanBubble, Event::IsCancelable);
    5352
    5453private:
  • trunk/Source/WebCore/page/VisualViewport.cpp

    r251567 r252122  
    151151    double scale = 1;
    152152
    153     if (auto* frame = this->frame()) {
     153    auto frame = makeRefPtr(this->frame());
     154    if (frame) {
    154155        if (auto* view = frame->view()) {
    155156            auto visualViewportRect = view->visualViewportRect();
     
    174175    }
    175176    if (m_width != width || m_height != height || m_scale != scale) {
    176         enqueueResizeEvent();
     177        if (auto* frame = this->frame())
     178            frame->document()->setNeedsVisualViewportResize();
    177179        m_width = width;
    178180        m_height = height;
    179181        m_scale = scale;
    180182    }
    181 }
    182 
    183 void VisualViewport::enqueueResizeEvent()
    184 {
    185     auto* frame = this->frame();
    186     if (!frame)
    187         return;
    188 
    189     frame->document()->eventQueue().enqueueResizeEvent(*this, Event::CanBubble::No, Event::IsCancelable::No);
    190183}
    191184
Note: See TracChangeset for help on using the changeset viewer.