Changeset 252016 in webkit


Ignore:
Timestamp:
Nov 4, 2019 2:57:51 PM (4 years ago)
Author:
Chris Dumez
Message:

Port FontFaceSet to the HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=203769

Reviewed by Ryosuke Niwa.

  • css/FontFaceSet.cpp:

(WebCore::FontFaceSet::didFirstLayout):
(WebCore::FontFaceSet::completedLoading):
(WebCore::FontFaceSet::faceFinished):
(WebCore::FontFaceSet::enqueueTask):

  • css/FontFaceSet.h:
  • dom/AbstractEventLoop.h:
Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r252014 r252016  
     12019-11-04  Chris Dumez  <cdumez@apple.com>
     2
     3        Port FontFaceSet to the HTML5 event loop
     4        https://bugs.webkit.org/show_bug.cgi?id=203769
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        * css/FontFaceSet.cpp:
     9        (WebCore::FontFaceSet::didFirstLayout):
     10        (WebCore::FontFaceSet::completedLoading):
     11        (WebCore::FontFaceSet::faceFinished):
     12        (WebCore::FontFaceSet::enqueueTask):
     13        * css/FontFaceSet.h:
     14        * dom/AbstractEventLoop.h:
     15
    1162019-11-04  John Wilander  <wilander@apple.com>
    217
  • trunk/Source/WebCore/css/FontFaceSet.cpp

    r251244 r252016  
    2727#include "FontFaceSet.h"
    2828
     29#include "AbstractEventLoop.h"
    2930#include "DOMPromiseProxy.h"
    3031#include "Document.h"
     
    5960    , m_backing(CSSFontFaceSet::create())
    6061    , m_readyPromise(makeUniqueRef<ReadyPromise>(*this, &FontFaceSet::readyPromiseResolve))
    61     , m_taskQueue(SuspendableTaskQueue::create(document))
    6262{
    6363    m_backing->addClient(*this);
     
    7070    , m_backing(backing)
    7171    , m_readyPromise(makeUniqueRef<ReadyPromise>(*this, &FontFaceSet::readyPromiseResolve))
    72     , m_taskQueue(SuspendableTaskQueue::create(document))
    7372{
    7473    if (document.frame())
     
    202201    m_isFirstLayoutDone = true;
    203202    if (!m_backing->hasActiveFontFaces() && !m_readyPromise->isFulfilled()) {
    204         m_taskQueue->enqueueTask([this] {
     203        queueTaskKeepingObjectAlive(*this, TaskSource::FontLoading, [this] {
    205204            if (!m_readyPromise->isFulfilled())
    206205                m_readyPromise->resolve(*this);
     
    212211{
    213212    if (m_isFirstLayoutDone && !m_readyPromise->isFulfilled()) {
    214         m_taskQueue->enqueueTask([this] {
     213        queueTaskKeepingObjectAlive(*this, TaskSource::FontLoading, [this] {
    215214            if (!m_readyPromise->isFulfilled())
    216215                m_readyPromise->resolve(*this);
     
    228227        return;
    229228
    230     m_taskQueue->enqueueTask([pendingPromises = WTFMove(pendingPromises), newStatus] {
     229    queueTaskKeepingObjectAlive(*this, TaskSource::FontLoading, [pendingPromises = WTFMove(pendingPromises), newStatus] {
    231230        for (auto& pendingPromise : pendingPromises) {
    232231            if (pendingPromise->hasReachedTerminalState)
  • trunk/Source/WebCore/css/FontFaceSet.h

    r251244 r252016  
    3030#include "EventTarget.h"
    3131#include "IDLTypes.h"
    32 #include "SuspendableTaskQueue.h"
    3332
    3433namespace WebCore {
     
    119118    HashMap<RefPtr<FontFace>, Vector<Ref<PendingPromise>>> m_pendingPromises;
    120119    UniqueRef<ReadyPromise> m_readyPromise;
    121     UniqueRef<SuspendableTaskQueue> m_taskQueue;
    122120    bool m_isFirstLayoutDone { true };
    123121};
  • trunk/Source/WebCore/dom/TaskSource.h

    r251975 r252016  
    3131    DOMManipulation,
    3232    FileReading,
     33    FontLoading,
    3334    IdleTask,
    3435    Networking,
Note: See TracChangeset for help on using the changeset viewer.