Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b7bc61d59e5e7ef50ac23d72fe09a9e49186c6fb
      
https://github.com/WebKit/WebKit/commit/b7bc61d59e5e7ef50ac23d72fe09a9e49186c6fb
  Author: Ryosuke Niwa <[email protected]>
  Date:   2023-08-09 (Wed, 09 Aug 2023)

  Changed paths:
    M 
LayoutTests/imported/w3c/web-platform-tests/requestidlecallback/basic-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/requestidlecallback/callback-timeout-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/requestidlecallback/callback-timeout-when-busy-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/requestidlecallback/deadline-after-expired-timer-expected.txt
    M LayoutTests/platform/ios-wk2/TestExpectations
    M LayoutTests/platform/mac-wk2/TestExpectations
    A LayoutTests/requestidlecallback/requestidlecallback-deadline-expected.txt
    A 
LayoutTests/requestidlecallback/requestidlecallback-deadline-shortened-by-rendering-update-expected.txt
    A 
LayoutTests/requestidlecallback/requestidlecallback-deadline-shortened-by-rendering-update.html
    A LayoutTests/requestidlecallback/requestidlecallback-deadline.html
    M Source/WebCore/dom/IdleCallbackController.cpp
    M Source/WebCore/dom/IdleCallbackController.h
    M Source/WebCore/dom/IdleDeadline.cpp
    M Source/WebCore/dom/IdleDeadline.h
    M Source/WebCore/dom/WindowEventLoop.cpp
    M Source/WebCore/dom/WindowEventLoop.h
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/testing/Internals.cpp
    M Source/WebCore/testing/Internals.h
    M Source/WebCore/testing/Internals.idl

  Log Message:
  -----------
  Implement timeout for idle callbacks
https://bugs.webkit.org/show_bug.cgi?id=259866

Reviewed by Chris Dumez.

This PR adds the support for idle callbacks' timeout. It also moves the logic 
of computing the idle deadline
to WindowEventLoop, which now keeps track of WeakHashMap of Page to its next 
rendering update time.

* 
LayoutTests/imported/w3c/web-platform-tests/requestidlecallback/basic-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/requestidlecallback/callback-timeout-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/requestidlecallback/callback-timeout-when-busy-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/requestidlecallback/deadline-after-expired-timer-expected.txt:
* LayoutTests/platform/ios-wk2/TestExpectations:
* LayoutTests/platform/mac-wk2/TestExpectations:
* LayoutTests/requestidlecallback/requestidlecallback-deadline-expected.txt: 
Added.
* 
LayoutTests/requestidlecallback/requestidlecallback-deadline-shortened-by-rendering-update-expected.txt:
 Added.
* 
LayoutTests/requestidlecallback/requestidlecallback-deadline-shortened-by-rendering-update.html:
 Added.
* LayoutTests/requestidlecallback/requestidlecallback-deadline.html: Added.

* Source/WebCore/dom/IdleCallbackController.cpp:
* Source/WebCore/dom/IdleCallbackController.cpp:
(WebCore::IdleCallbackController::queueIdleCallback): Schedule a timer for the 
timeout.
(WebCore::IdleCallbackController::startIdlePeriod):
(WebCore::IdleCallbackController::queueTaskToInvokeIdleCallbacks):
(WebCore::IdleCallbackController::invokeIdleCallbacks):
(WebCore::IdleCallbackController::invokeIdleCallbackTimeout): Added.

* Source/WebCore/dom/IdleCallbackController.h:

* Source/WebCore/dom/IdleDeadline.cpp:
(WebCore::IdleDeadline::timeRemaining const):
(WebCore::IdleDeadline::didTimeout const): Moved to the header file.

* Source/WebCore/dom/IdleDeadline.h:
(WebCore::IdleDeadline::create): Now takes DidTimeout enum class.
(WebCore::IdleDeadline::IdleDeadline): Ditto.
(WebCore::IdleDeadline::didTimeout const): Moved. Now trivially checks 
m_didTimeout.

* Source/WebCore/dom/WindowEventLoop.cpp:
(WebCore::WindowEventLoop::didScheduleRenderingUpdate): Moved from the header. 
Now takes a Page adds to the map
of pages with pending rendering opportunities.
(WebCore::WindowEventLoop::didFinishRenderingUpdate): Ditto removes it from the 
map.
(WebCore::WindowEventLoop::opportunisticallyRunIdleCallbacks):
(WebCore::WindowEventLoop::shouldEndIdlePeriod):
(WebCore::WindowEventLoop::computeIdleDeadline): Added.

* Source/WebCore/dom/WindowEventLoop.h:

* Source/WebCore/page/Page.cpp:
(WebCore::Page::scheduleRenderingUpdateInternal):
(WebCore::Page::renderingUpdateCompleted):

* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::preferredRenderingUpdateInterval):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:

Canonical link: https://commits.webkit.org/266745@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to