Changeset 196747 in webkit


Ignore:
Timestamp:
Feb 17, 2016 11:25:56 PM (8 years ago)
Author:
mmaxfield@apple.com
Message:

[Font Loading] Implement FontFaceSet
https://bugs.webkit.org/show_bug.cgi?id=153348

Reviewed by Simon Fraser.

Source/WebCore:

The CSS Font Loading spec includes a FontFaceSet object which represents
a collection of FontFaces. This patch implements such an object, and
backs it with a vector of FontFaces. Similarly to the FontFace object,
FontFaceSet is separated into a FontFaceSet frontend object and a
CSSFontFaceSet backend object, which actually owns the FontFace objects.
All the interaction with Promises is performed in the frontend object.

This patch does not implement the EventTarget part of the FontFaceSet
API, so the only way to know when a font is finished loading is by using
the associated Promise objects.

The CSS Font Loading spec describes how the Document should vend an
instance of FontFaceSet which represents the font faces currently
associated with the Document. However, that functionality is
forthcoming. Currently, the only way to get a FontFaceSet is to create
one yourself (using the constructor). Therefore, this patch does not
implement the spec's notion of a "CSS-connected font face."

Test: fast/text/font-face-set-javascript.html

  • CMakeLists.txt: Add new files.
  • DerivedSources.make: Ditto.
  • WebCore.vcxproj/WebCore.vcxproj: Ditto.
  • WebCore.vcxproj/WebCore.vcxproj.filters: Ditto.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • bindings/js/JSFontFaceSetCustom.cpp: Added.

(WebCore::JSFontFaceSet::ready): Use the Promise member.
(WebCore::JSFontFaceSet::entries): Use existing iterator code.
(WebCore::JSFontFaceSet::keys):
(WebCore::JSFontFaceSet::values):

  • css/CSSAllInOne.cpp: Add new files.
  • css/CSSFontFace.cpp: We now have a collection of clients (instead of

just one). Also, we need to keep a pointer to our FontFace wrapper.
(WebCore::CSSFontFace::CSSFontFace):
(WebCore::CSSFontFace::addClient):
(WebCore::CSSFontFace::removeClient):
(WebCore::CSSFontFace::setStatus): Rename the delegate callback to be
more clear.
(WebCore::CSSFontFace::fontLoaded):
(WebCore::CSSFontFace::addedToSegmentedFontFace): Deleted.
(WebCore::CSSFontFace::removedFromSegmentedFontFace): Deleted.

  • css/CSSFontFace.h: Same as above.

(WebCore::CSSFontFace::create):
(WebCore::CSSFontFace::Client::~Client):
(WebCore::CSSFontFace::Client::kick):
(WebCore::CSSFontFace::Client::stateChanged):
(WebCore::CSSFontFace::wrapper):
(WebCore::CSSFontFaceClient::~CSSFontFaceClient): Deleted.

  • css/CSSFontFaceSet.cpp: Added. Initial imlementation.

(WebCore::CSSFontFaceSet::CSSFontFaceSet):
(WebCore::CSSFontFaceSet::~CSSFontFaceSet):
(WebCore::CSSFontFaceSet::incrementActiveCount):
(WebCore::CSSFontFaceSet::decrementActiveCount):
(WebCore::CSSFontFaceSet::has):
(WebCore::CSSFontFaceSet::add):
(WebCore::CSSFontFaceSet::remove):
(WebCore::extractFamilies):
(WebCore::familiesIntersect): Because this is an initial imlementation,
this function is not optimized. A subsequent patch (which implements
Document.fonts) will optimize this.
(WebCore::CSSFontFaceSet::matchingFaces):
(WebCore::CSSFontFaceSet::load):
(WebCore::CSSFontFaceSet::check):
(WebCore::CSSFontFaceSet::stateChanged):

  • css/CSSFontFaceSet.h: Added.

(WebCore::CSSFontFaceSetClient::~CSSFontFaceSetClient):
(WebCore::CSSFontFaceSet::size):
(WebCore::CSSFontFaceSet::operator[]):
(WebCore::CSSFontFaceSet::status):

  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::familyNameFromPrimitive):
(WebCore::CSSFontSelector::registerLocalFontFacesForFamily):
(WebCore::CSSFontSelector::addFontFaceRule):
(WebCore::familyNameFromPrimitive): Deleted.
(WebCore::CSSFontSelector::kick): Deleted.

  • css/CSSFontSelector.h:
  • css/CSSSegmentedFontFace.cpp:

(WebCore::CSSSegmentedFontFace::~CSSSegmentedFontFace):
(WebCore::CSSSegmentedFontFace::appendFontFace):
(WebCore::CSSSegmentedFontFace::kick):
(WebCore::CSSSegmentedFontFace::fontLoaded): Deleted.

  • css/CSSSegmentedFontFace.h:
  • css/FontFace.cpp:

(WebCore::FontFace::FontFace):
(WebCore::FontFace::~FontFace):
(WebCore::FontFace::stateChanged): Renamed to make its purpose clearer.
(WebCore::FontFace::kick): Deleted.

  • css/FontFace.h:
  • css/FontFaceSet.cpp: Added.

(WebCore::createPromise):
(WebCore::FontFaceSet::FontFaceSet):
(WebCore::FontFaceSet::~FontFaceSet):
(WebCore::FontFaceSet::Iterator::Iterator):
(WebCore::FontFaceSet::Iterator::next):
(WebCore::FontFaceSet::PendingPromise::PendingPromise):
(WebCore::FontFaceSet::PendingPromise::~PendingPromise):
(WebCore::FontFaceSet::has):
(WebCore::FontFaceSet::size):
(WebCore::FontFaceSet::add):
(WebCore::FontFaceSet::remove):
(WebCore::FontFaceSet::clear):
(WebCore::FontFaceSet::load): Most of the complexity of loading is
due to the promises involved. Rather than use the Javascript function
Promise.all(), this patch builds a data structure to represent the
promises which need to be resolved. When fonts finish loading, we look
at the data structure to determine which promises to resolve.
(WebCore::FontFaceSet::check):
(WebCore::FontFaceSet::status):
(WebCore::FontFaceSet::canSuspendForDocumentSuspension):
(WebCore::FontFaceSet::startedLoading):
(WebCore::FontFaceSet::completedLoading):
(WebCore::FontFaceSet::fulfillPromise): Keep the promise alive.
(WebCore::FontFaceSet::faceFinished):

  • css/FontFaceSet.h: Added.

(WebCore::FontFaceSet::create):
(WebCore::FontFaceSet::load):
(WebCore::FontFaceSet::check):
(WebCore::FontFaceSet::createIterator):
(WebCore::FontFaceSet::PendingPromise::create):

  • css/FontFaceSet.idl: Added.
  • dom/EventNames.h:
  • dom/EventTargetFactory.in:

LayoutTests:

  • fast/text/font-face-set-javascript-expected.txt: Added.
  • fast/text/font-face-set-javascript.html: Added.
Location:
trunk
Files:
8 added
25 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r196740 r196747  
     12016-02-17  Myles C. Maxfield  <mmaxfield@apple.com>
     2
     3        [Font Loading] Implement FontFaceSet
     4        https://bugs.webkit.org/show_bug.cgi?id=153348
     5
     6        Reviewed by Simon Fraser.
     7
     8        * fast/text/font-face-set-javascript-expected.txt: Added.
     9        * fast/text/font-face-set-javascript.html: Added.
     10
    1112016-02-17  Commit Queue  <commit-queue@webkit.org>
    212
  • trunk/LayoutTests/js/dom/global-constructors-attributes-expected.txt

    r196621 r196747  
    379379PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false
    380380PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true
     381PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet
     382PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false
     383PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false
     384PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false
     385PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true
    381386PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData
    382387PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false
  • trunk/LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt

    r196604 r196747  
    374374PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false
    375375PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true
     376PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet
     377PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false
     378PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false
     379PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false
     380PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true
    376381PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData
    377382PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false
  • trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt

    r196604 r196747  
    379379PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false
    380380PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true
     381PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet
     382PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false
     383PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false
     384PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false
     385PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true
    381386PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData
    382387PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false
  • trunk/LayoutTests/platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt

    r196621 r196747  
    379379PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false
    380380PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true
     381PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet
     382PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false
     383PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false
     384PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false
     385PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true
    381386PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData
    382387PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false
  • trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt

    r196621 r196747  
    424424PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false
    425425PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true
     426PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet
     427PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false
     428PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false
     429PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false
     430PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true
    426431PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData
    427432PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false
  • trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt

    r196621 r196747  
    424424PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false
    425425PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true
     426PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet
     427PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false
     428PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false
     429PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false
     430PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true
    426431PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData
    427432PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false
  • trunk/LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt

    r196604 r196747  
    299299PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false
    300300PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true
     301PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet
     302PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false
     303PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false
     304PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false
     305PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true
    301306PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData
    302307PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false
  • trunk/Source/WebCore/CMakeLists.txt

    r196688 r196747  
    332332    css/DOMWindowCSS.idl
    333333    css/FontFace.idl
     334    css/FontFaceSet.idl
    334335    css/FontLoader.idl
    335336    css/MediaList.idl
     
    11111112    bindings/js/JSCSSStyleDeclarationCustom.cpp
    11121113    bindings/js/JSFontFaceCustom.cpp
     1114    bindings/js/JSFontFaceSetCustom.cpp
    11131115    bindings/js/JSCSSValueCustom.cpp
    11141116    bindings/js/JSCallbackData.cpp
     
    13031305    css/CSSDefaultStyleSheets.cpp
    13041306    css/CSSFilterImageValue.cpp
     1307    css/FontFaceSet.cpp
    13051308    css/FontFace.cpp
    13061309    css/CSSFontFace.cpp
     1310    css/CSSFontFaceSet.cpp
    13071311    css/CSSFontFaceLoadEvent.cpp
    13081312    css/CSSFontFaceRule.cpp
  • trunk/Source/WebCore/ChangeLog

    r196745 r196747  
     12016-02-17  Myles C. Maxfield  <mmaxfield@apple.com>
     2
     3        [Font Loading] Implement FontFaceSet
     4        https://bugs.webkit.org/show_bug.cgi?id=153348
     5
     6        Reviewed by Simon Fraser.
     7
     8        The CSS Font Loading spec includes a FontFaceSet object which represents
     9        a collection of FontFaces. This patch implements such an object, and
     10        backs it with a vector of FontFaces. Similarly to the FontFace object,
     11        FontFaceSet is separated into a FontFaceSet frontend object and a
     12        CSSFontFaceSet backend object, which actually owns the FontFace objects.
     13        All the interaction with Promises is performed in the frontend object.
     14
     15        This patch does not implement the EventTarget part of the FontFaceSet
     16        API, so the only way to know when a font is finished loading is by using
     17        the associated Promise objects.
     18
     19        The CSS Font Loading spec describes how the Document should vend an
     20        instance of FontFaceSet which represents the font faces currently
     21        associated with the Document. However, that functionality is
     22        forthcoming. Currently, the only way to get a FontFaceSet is to create
     23        one yourself (using the constructor). Therefore, this patch does not
     24        implement the spec's notion of a "CSS-connected font face."
     25
     26        Test: fast/text/font-face-set-javascript.html
     27
     28        * CMakeLists.txt: Add new files.
     29        * DerivedSources.make: Ditto.
     30        * WebCore.vcxproj/WebCore.vcxproj: Ditto.
     31        * WebCore.vcxproj/WebCore.vcxproj.filters: Ditto.
     32        * WebCore.xcodeproj/project.pbxproj: Ditto.
     33        * bindings/js/JSFontFaceSetCustom.cpp: Added.
     34        (WebCore::JSFontFaceSet::ready): Use the Promise member.
     35        (WebCore::JSFontFaceSet::entries): Use existing iterator code.
     36        (WebCore::JSFontFaceSet::keys):
     37        (WebCore::JSFontFaceSet::values):
     38        * css/CSSAllInOne.cpp: Add new files.
     39        * css/CSSFontFace.cpp: We now have a collection of clients (instead of
     40        just one). Also, we need to keep a pointer to our FontFace wrapper.
     41        (WebCore::CSSFontFace::CSSFontFace):
     42        (WebCore::CSSFontFace::addClient):
     43        (WebCore::CSSFontFace::removeClient):
     44        (WebCore::CSSFontFace::setStatus): Rename the delegate callback to be
     45        more clear.
     46        (WebCore::CSSFontFace::fontLoaded):
     47        (WebCore::CSSFontFace::addedToSegmentedFontFace): Deleted.
     48        (WebCore::CSSFontFace::removedFromSegmentedFontFace): Deleted.
     49        * css/CSSFontFace.h: Same as above.
     50        (WebCore::CSSFontFace::create):
     51        (WebCore::CSSFontFace::Client::~Client):
     52        (WebCore::CSSFontFace::Client::kick):
     53        (WebCore::CSSFontFace::Client::stateChanged):
     54        (WebCore::CSSFontFace::wrapper):
     55        (WebCore::CSSFontFaceClient::~CSSFontFaceClient): Deleted.
     56        * css/CSSFontFaceSet.cpp: Added. Initial imlementation.
     57        (WebCore::CSSFontFaceSet::CSSFontFaceSet):
     58        (WebCore::CSSFontFaceSet::~CSSFontFaceSet):
     59        (WebCore::CSSFontFaceSet::incrementActiveCount):
     60        (WebCore::CSSFontFaceSet::decrementActiveCount):
     61        (WebCore::CSSFontFaceSet::has):
     62        (WebCore::CSSFontFaceSet::add):
     63        (WebCore::CSSFontFaceSet::remove):
     64        (WebCore::extractFamilies):
     65        (WebCore::familiesIntersect): Because this is an initial imlementation,
     66        this function is not optimized. A subsequent patch (which implements
     67        Document.fonts) will optimize this.
     68        (WebCore::CSSFontFaceSet::matchingFaces):
     69        (WebCore::CSSFontFaceSet::load):
     70        (WebCore::CSSFontFaceSet::check):
     71        (WebCore::CSSFontFaceSet::stateChanged):
     72        * css/CSSFontFaceSet.h: Added.
     73        (WebCore::CSSFontFaceSetClient::~CSSFontFaceSetClient):
     74        (WebCore::CSSFontFaceSet::size):
     75        (WebCore::CSSFontFaceSet::operator[]):
     76        (WebCore::CSSFontFaceSet::status):
     77        * css/CSSFontSelector.cpp:
     78        (WebCore::CSSFontSelector::familyNameFromPrimitive):
     79        (WebCore::CSSFontSelector::registerLocalFontFacesForFamily):
     80        (WebCore::CSSFontSelector::addFontFaceRule):
     81        (WebCore::familyNameFromPrimitive): Deleted.
     82        (WebCore::CSSFontSelector::kick): Deleted.
     83        * css/CSSFontSelector.h:
     84        * css/CSSSegmentedFontFace.cpp:
     85        (WebCore::CSSSegmentedFontFace::~CSSSegmentedFontFace):
     86        (WebCore::CSSSegmentedFontFace::appendFontFace):
     87        (WebCore::CSSSegmentedFontFace::kick):
     88        (WebCore::CSSSegmentedFontFace::fontLoaded): Deleted.
     89        * css/CSSSegmentedFontFace.h:
     90        * css/FontFace.cpp:
     91        (WebCore::FontFace::FontFace):
     92        (WebCore::FontFace::~FontFace):
     93        (WebCore::FontFace::stateChanged): Renamed to make its purpose clearer.
     94        (WebCore::FontFace::kick): Deleted.
     95        * css/FontFace.h:
     96        * css/FontFaceSet.cpp: Added.
     97        (WebCore::createPromise):
     98        (WebCore::FontFaceSet::FontFaceSet):
     99        (WebCore::FontFaceSet::~FontFaceSet):
     100        (WebCore::FontFaceSet::Iterator::Iterator):
     101        (WebCore::FontFaceSet::Iterator::next):
     102        (WebCore::FontFaceSet::PendingPromise::PendingPromise):
     103        (WebCore::FontFaceSet::PendingPromise::~PendingPromise):
     104        (WebCore::FontFaceSet::has):
     105        (WebCore::FontFaceSet::size):
     106        (WebCore::FontFaceSet::add):
     107        (WebCore::FontFaceSet::remove):
     108        (WebCore::FontFaceSet::clear):
     109        (WebCore::FontFaceSet::load): Most of the complexity of loading is
     110        due to the promises involved. Rather than use the Javascript function
     111        Promise.all(), this patch builds a data structure to represent the
     112        promises which need to be resolved. When fonts finish loading, we look
     113        at the data structure to determine which promises to resolve.
     114        (WebCore::FontFaceSet::check):
     115        (WebCore::FontFaceSet::status):
     116        (WebCore::FontFaceSet::canSuspendForDocumentSuspension):
     117        (WebCore::FontFaceSet::startedLoading):
     118        (WebCore::FontFaceSet::completedLoading):
     119        (WebCore::FontFaceSet::fulfillPromise): Keep the promise alive.
     120        (WebCore::FontFaceSet::faceFinished):
     121        * css/FontFaceSet.h: Added.
     122        (WebCore::FontFaceSet::create):
     123        (WebCore::FontFaceSet::load):
     124        (WebCore::FontFaceSet::check):
     125        (WebCore::FontFaceSet::createIterator):
     126        (WebCore::FontFaceSet::PendingPromise::create):
     127        * css/FontFaceSet.idl: Added.
     128        * dom/EventNames.h:
     129        * dom/EventTargetFactory.in:
     130
    11312016-02-17  Mark Lam  <mark.lam@apple.com>
    2132
  • trunk/Source/WebCore/DerivedSources.make

    r196604 r196747  
    243243    $(WebCore)/css/DOMWindowCSS.idl \
    244244    $(WebCore)/css/FontFace.idl \
     245    $(WebCore)/css/FontFaceSet.idl \
    245246    $(WebCore)/css/FontLoader.idl \
    246247    $(WebCore)/css/MediaList.idl \
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj

    r196636 r196747  
    19721972      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
    19731973    </ClCompile>
     1974    <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFontFaceSet.cpp">
     1975      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
     1976      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     1977      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
     1978      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
     1979      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
     1980      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
     1981      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
     1982      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     1983      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
     1984      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
     1985      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
     1986      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
     1987    </ClCompile>
    19741988    <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFontFace.cpp">
    19751989      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
     
    96129626      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
    96139627    </ClCompile>
     9628    <ClCompile Include="..\css\FontFaceSet.cpp">
     9629      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
     9630      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     9631      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
     9632      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
     9633      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
     9634      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
     9635      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
     9636      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     9637      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
     9638      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
     9639      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
     9640      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
     9641    </ClCompile>
    96149642    <ClCompile Include="..\css\FontFace.cpp">
     9643      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
     9644      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     9645      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
     9646      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
     9647      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
     9648      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
     9649      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
     9650      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     9651      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
     9652      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
     9653      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
     9654      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
     9655    </ClCompile>
     9656    <ClCompile Include="..\css\CSSFontFaceSet.cpp">
    96159657      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
    96169658      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     
    1772817770    </ClCompile>
    1772917771    <ClCompile Include="..\bindings\js\JSCSSRuleListCustom.cpp">
     17772      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
     17773      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     17774      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
     17775      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
     17776      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
     17777      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
     17778      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
     17779      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     17780      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
     17781      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
     17782      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
     17783      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
     17784    </ClCompile>
     17785    <ClCompile Include="..\bindings\js\JSFontFaceSetCustom.cpp">
    1773017786      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
    1773117787      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     
    1998820044    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFileReaderSync.h" />
    1998920045    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFontLoader.h" />
     20046    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFontFaceSet.h" />
    1999020047    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFontFace.h" />
    1999120048    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSGamepad.h" />
     
    2170621763    <ClInclude Include="..\css\CSSFilterImageValue.h" />
    2170721764    <ClInclude Include="..\css\CSSFontFace.h" />
     21765    <ClInclude Include="..\css\CSSFontFaceSet.h" />
    2170821766    <ClInclude Include="..\css\FontFace.h" />
     21767    <ClInclude Include="..\css\FontFaceSet.h" />
    2170921768    <ClInclude Include="..\css\CSSFontFaceLoadEvent.h" />
    2171021769    <ClInclude Include="..\css\CSSFontFaceRule.h" />
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters

    r196604 r196747  
    20852085      <Filter>css</Filter>
    20862086    </ClCompile>
     2087    <ClCompile Include="..\css\FontFaceSet.cpp">
     2088      <Filter>css</Filter>
     2089    </ClCompile>
    20872090    <ClCompile Include="..\css\FontFace.cpp">
     2091      <Filter>css</Filter>
     2092    </ClCompile>
     2093    <ClCompile Include="..\css\CSSFontFaceSet.cpp">
    20882094      <Filter>css</Filter>
    20892095    </ClCompile>
     
    42614267    </ClCompile>
    42624268    <ClCompile Include="..\bindings\js\JSCSSRuleListCustom.cpp">
     4269      <Filter>bindings\js</Filter>
     4270    </ClCompile>
     4271    <ClCompile Include="..\bindings\js\JSFontFaceSetCustom.cpp">
    42634272      <Filter>bindings\js</Filter>
    42644273    </ClCompile>
     
    52735282    </ClCompile>
    52745283    <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFileReaderSync.cpp">
     5284      <Filter>DerivedSources</Filter>
     5285    </ClCompile>
     5286    <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFontFaceSet.cpp">
    52755287      <Filter>DerivedSources</Filter>
    52765288    </ClCompile>
     
    90689080      <Filter>css</Filter>
    90699081    </ClInclude>
     9082    <ClInclude Include="..\css\FontFaceSet.h">
     9083      <Filter>css</Filter>
     9084    </ClInclude>
    90709085    <ClInclude Include="..\css\FontFace.h">
     9086      <Filter>css</Filter>
     9087    </ClInclude>
     9088    <ClInclude Include="..\css\CSSFontFaceSet.h">
    90719089      <Filter>css</Filter>
    90729090    </ClInclude>
     
    1270112719    </ClInclude>
    1270212720    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFileReaderSync.h">
     12721      <Filter>DerivedSources</Filter>
     12722    </ClInclude>
     12723    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFontFaceSet.h">
    1270312724      <Filter>DerivedSources</Filter>
    1270412725    </ClInclude>
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r196705 r196747  
    951951                1C21E57D183ED1FF001C289D /* IOSurfacePool.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C21E57B183ED1FF001C289D /* IOSurfacePool.h */; settings = {ATTRIBUTES = (Private, ); }; };
    952952                1C2417BA1992C04100EF9938 /* SpellingDot@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1C2417B91992C04100EF9938 /* SpellingDot@3x.png */; };
     953                1C24EEA41C729CE40080F8FC /* FontFaceSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C24EEA21C729CE40080F8FC /* FontFaceSet.cpp */; };
     954                1C24EEA51C729CE40080F8FC /* FontFaceSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C24EEA31C729CE40080F8FC /* FontFaceSet.h */; };
     955                1C24EEA81C72A7B40080F8FC /* JSFontFaceSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C24EEA61C72A7B40080F8FC /* JSFontFaceSet.cpp */; };
     956                1C24EEA91C72A7B40080F8FC /* JSFontFaceSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C24EEA71C72A7B40080F8FC /* JSFontFaceSet.h */; };
     957                1C24EEAB1C72AA0A0080F8FC /* JSFontFaceSetCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C24EEAA1C72AA0A0080F8FC /* JSFontFaceSetCustom.cpp */; };
    953958                1C26497A0D7E248A00BD10F2 /* DocumentLoaderMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C2649790D7E248A00BD10F2 /* DocumentLoaderMac.cpp */; };
    954959                1C3249111C6D6A3B007EDB32 /* FontVariantBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C3249101C6D6A3B007EDB32 /* FontVariantBuilder.cpp */; };
     
    59165921                C105DA640F3AA6B8001DD44F /* TextEncodingDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */; };
    59175922                C2015C0A1BE6FEB200822389 /* FontVariantBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = C2015C091BE6FE2C00822389 /* FontVariantBuilder.h */; };
     5923                C26017A31C72DC9900F74A16 /* CSSFontFaceSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C26017A11C72DC9900F74A16 /* CSSFontFaceSet.cpp */; };
     5924                C26017A41C72DC9900F74A16 /* CSSFontFaceSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C26017A21C72DC9900F74A16 /* CSSFontFaceSet.h */; };
    59185925                C280833F1C6DC26F001451B6 /* JSFontFace.h in Headers */ = {isa = PBXBuildFile; fileRef = C280833E1C6DC22C001451B6 /* JSFontFace.h */; };
    59195926                C28083401C6DC275001451B6 /* JSFontFace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C280833D1C6DC22C001451B6 /* JSFontFace.cpp */; };
     
    83778384                1C21E57B183ED1FF001C289D /* IOSurfacePool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOSurfacePool.h; sourceTree = "<group>"; };
    83788385                1C2417B91992C04100EF9938 /* SpellingDot@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "SpellingDot@3x.png"; sourceTree = "<group>"; };
     8386                1C24EEA11C729B320080F8FC /* FontFaceSet.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = FontFaceSet.idl; sourceTree = "<group>"; };
     8387                1C24EEA21C729CE40080F8FC /* FontFaceSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontFaceSet.cpp; sourceTree = "<group>"; };
     8388                1C24EEA31C729CE40080F8FC /* FontFaceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontFaceSet.h; sourceTree = "<group>"; };
     8389                1C24EEA61C72A7B40080F8FC /* JSFontFaceSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFontFaceSet.cpp; sourceTree = "<group>"; };
     8390                1C24EEA71C72A7B40080F8FC /* JSFontFaceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFontFaceSet.h; sourceTree = "<group>"; };
     8391                1C24EEAA1C72AA0A0080F8FC /* JSFontFaceSetCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFontFaceSetCustom.cpp; sourceTree = "<group>"; };
    83798392                1C2649790D7E248A00BD10F2 /* DocumentLoaderMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentLoaderMac.cpp; sourceTree = "<group>"; };
    83808393                1C3249101C6D6A3B007EDB32 /* FontVariantBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontVariantBuilder.cpp; sourceTree = "<group>"; };
     
    1383813851                C2015C091BE6FE2C00822389 /* FontVariantBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FontVariantBuilder.h; sourceTree = "<group>"; };
    1383913852                C24685131A148E1800811792 /* CoreGraphicsSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoreGraphicsSPI.h; sourceTree = "<group>"; };
     13853                C26017A11C72DC9900F74A16 /* CSSFontFaceSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSFontFaceSet.cpp; sourceTree = "<group>"; };
     13854                C26017A21C72DC9900F74A16 /* CSSFontFaceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSFontFaceSet.h; sourceTree = "<group>"; };
    1384013855                C280833C1C6DB194001451B6 /* FontFace.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = FontFace.idl; sourceTree = "<group>"; };
    1384113856                C280833D1C6DC22C001451B6 /* JSFontFace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFontFace.cpp; sourceTree = "<group>"; };
     
    1756217577                        isa = PBXGroup;
    1756317578                        children = (
     17579                                1C24EEA61C72A7B40080F8FC /* JSFontFaceSet.cpp */,
     17580                                1C24EEA71C72A7B40080F8FC /* JSFontFaceSet.h */,
    1756417581                                C280833D1C6DC22C001451B6 /* JSFontFace.cpp */,
    1756517582                                C280833E1C6DC22C001451B6 /* JSFontFace.h */,
     
    2247222489                                BCEFE1E40DCA5F3300739219 /* JSXSLTProcessorCustom.cpp */,
    2247322490                                C28083411C6DC96A001451B6 /* JSFontFaceCustom.cpp */,
     22491                                1C24EEAA1C72AA0A0080F8FC /* JSFontFaceSetCustom.cpp */,
    2247422492                        );
    2247522493                        name = Custom;
     
    2378123799                                1C66260F1C6E7CA600AB527C /* FontFace.h */,
    2378223800                                C280833C1C6DB194001451B6 /* FontFace.idl */,
     23801                                1C24EEA11C729B320080F8FC /* FontFaceSet.idl */,
     23802                                1C24EEA21C729CE40080F8FC /* FontFaceSet.cpp */,
     23803                                1C24EEA31C729CE40080F8FC /* FontFaceSet.h */,
     23804                                C26017A11C72DC9900F74A16 /* CSSFontFaceSet.cpp */,
     23805                                C26017A21C72DC9900F74A16 /* CSSFontFaceSet.h */,
    2378323806                        );
    2378423807                        path = css;
     
    2650326526                                8482B7521198CB6B00BFB005 /* JSHashChangeEvent.h in Headers */,
    2650426527                                BC94D14F0C275C68006BC617 /* JSHistory.h in Headers */,
     26528                                1C24EEA51C729CE40080F8FC /* FontFaceSet.h in Headers */,
    2650526529                                BC97E413109154FA0010D361 /* JSHTMLAllCollection.h in Headers */,
    2650626530                                1A4A2DF00A1B852A00C807F8 /* JSHTMLAnchorElement.h in Headers */,
     
    2731627340                                536D5A23193E8E0C00CE4CAB /* ParsingUtilities.h in Headers */,
    2731727341                                F55B3DCA1251F12D003EF269 /* PasswordInputType.h in Headers */,
     27342                                1C24EEA91C72A7B40080F8FC /* JSFontFaceSet.h in Headers */,
    2731827343                                4B2708C70AF19EE40065127F /* Pasteboard.h in Headers */,
    2731927344                                C598905714E9C28000E8D18B /* PasteboardStrategy.h in Headers */,
     
    2805128076                                088A0E09126EF1DB00978F7A /* SVGListPropertyTearOff.h in Headers */,
    2805228077                                B2227A410D00BF220071B782 /* SVGLocatable.h in Headers */,
     28078                                C26017A41C72DC9900F74A16 /* CSSFontFaceSet.h in Headers */,
    2805328079                                436708EE12D9CA4B00044234 /* SVGMarkerData.h in Headers */,
    2805428080                                B2227A440D00BF220071B782 /* SVGMarkerElement.h in Headers */,
     
    2987129897                                5185FC771BB4C4E80012898F /* IDBAny.cpp in Sources */,
    2987229898                                5198F7BE1BC338AF00E2CC5F /* IDBAnyImpl.cpp in Sources */,
     29899                                C26017A31C72DC9900F74A16 /* CSSFontFaceSet.cpp in Sources */,
    2987329900                                C585A66211D4FAC5004C3E4B /* IDBBindingUtilities.cpp in Sources */,
    2987429901                                516D7D711BB5F0BD00AF7C77 /* IDBConnectionToClient.cpp in Sources */,
     
    3039630423                                E1284BB210449FFA00EAEB52 /* JSPageTransitionEvent.cpp in Sources */,
    3039730424                                FDA15EB112B03EE1003A583A /* JSPannerNode.cpp in Sources */,
     30425                                1C24EEA41C729CE40080F8FC /* FontFaceSet.cpp in Sources */,
    3039830426                                FD8AA63E169514A700D2EA68 /* JSPannerNodeCustom.cpp in Sources */,
    3039930427                                E51A81DF17298D7700BFCA61 /* JSPerformance.cpp in Sources */,
     
    3116631194                                A454424E119B3687009BE912 /* RenderMeter.cpp in Sources */,
    3116731195                                1A3586DF15264C450022A659 /* RenderMultiColumnFlowThread.cpp in Sources */,
     31196                                1C24EEA81C72A7B40080F8FC /* JSFontFaceSet.cpp in Sources */,
    3116831197                                BCE32B9E1517C22700F542EC /* RenderMultiColumnSet.cpp in Sources */,
    3116931198                                BC1A7D9718FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.cpp in Sources */,
     
    3158731616                                845E72FB0FD2623900A87D79 /* SVGFilter.cpp in Sources */,
    3158831617                                081EBF3A0FD34F4100DA7559 /* SVGFilterBuilder.cpp in Sources */,
     31618                                1C24EEAB1C72AA0A0080F8FC /* JSFontFaceSetCustom.cpp in Sources */,
    3158931619                                B2227A0B0D00BF220071B782 /* SVGFilterElement.cpp in Sources */,
    3159031620                                B2227A0E0D00BF220071B782 /* SVGFilterPrimitiveStandardAttributes.cpp in Sources */,
  • trunk/Source/WebCore/css/CSSAllInOne.cpp

    r196510 r196747  
    4343#include "CSSFontFaceLoadEvent.cpp"
    4444#include "CSSFontFaceRule.cpp"
     45#include "CSSFontFaceSet.cpp"
    4546#include "CSSFontFaceSource.cpp"
    4647#include "CSSFontFaceSrcValue.cpp"
  • trunk/Source/WebCore/css/CSSFontFace.cpp

    r196604 r196747  
    4646namespace WebCore {
    4747
    48 CSSFontFace::CSSFontFace(CSSFontFaceClient& client, CSSFontSelector& fontSelector, bool isLocalFallback)
     48CSSFontFace::CSSFontFace(CSSFontSelector& fontSelector, FontFace* wrapper, bool isLocalFallback)
    4949    : m_fontSelector(fontSelector)
    50     , m_client(client)
     50    , m_wrapper(wrapper)
    5151    , m_isLocalFallback(isLocalFallback)
    5252{
     
    231231}
    232232
    233 void CSSFontFace::addedToSegmentedFontFace(CSSSegmentedFontFace& segmentedFontFace)
    234 {
    235     m_segmentedFontFaces.add(&segmentedFontFace);
    236 }
    237 
    238 void CSSFontFace::removedFromSegmentedFontFace(CSSSegmentedFontFace& segmentedFontFace)
    239 {
    240     m_segmentedFontFaces.remove(&segmentedFontFace);
     233void CSSFontFace::addClient(Client& client)
     234{
     235    m_clients.add(&client);
     236}
     237
     238void CSSFontFace::removeClient(Client& client)
     239{
     240    m_clients.remove(&client);
    241241}
    242242
     
    269269    }
    270270
     271    for (auto& client : m_clients)
     272        client->stateChanged(*this, m_status, newStatus);
     273
    271274    m_status = newStatus;
    272 
    273     if (m_status == Status::Success || m_status == Status::Failure)
    274         m_client.kick(*this);
    275275}
    276276
     
    283283        pump();
    284284
    285     if (m_segmentedFontFaces.isEmpty())
    286         return;
    287 
    288285    m_fontSelector->fontLoaded();
    289286
    290     for (auto* face : m_segmentedFontFaces)
    291         face->fontLoaded(*this);
     287    for (auto& client : m_clients)
     288        client->fontLoaded(*this);
    292289}
    293290
  • trunk/Source/WebCore/css/CSSFontFace.h

    r196604 r196747  
    11/*
    2  * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
     2 * Copyright (C) 2007, 2008, 2016 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    4545class FontDescription;
    4646class Font;
     47class FontFace;
    4748
    48 class CSSFontFaceClient {
     49// FIXME: This class does not need to be reference counted.
     50class CSSFontFace final : public RefCounted<CSSFontFace> {
    4951public:
    50     virtual ~CSSFontFaceClient() { }
    51     virtual void kick(CSSFontFace&) = 0;
    52 };
    53 
    54 class CSSFontFace : public RefCounted<CSSFontFace> {
    55 public:
    56     static Ref<CSSFontFace> create(CSSFontFaceClient& client, CSSFontSelector& fontSelector, bool isLocalFallback = false) { return adoptRef(*new CSSFontFace(client, fontSelector, isLocalFallback)); }
     52    static Ref<CSSFontFace> create(CSSFontSelector& fontSelector, FontFace* wrapper = nullptr, bool isLocalFallback = false)
     53    {
     54        return adoptRef(*new CSSFontFace(fontSelector, wrapper, isLocalFallback));
     55    }
    5756    virtual ~CSSFontFace();
    5857
     
    8180    Status status() const { return m_status; }
    8281
    83     void addedToSegmentedFontFace(CSSSegmentedFontFace&);
    84     void removedFromSegmentedFontFace(CSSSegmentedFontFace&);
     82    class Client;
     83    void addClient(Client&);
     84    void removeClient(Client&);
    8585
    8686    bool allSourcesFailed() const;
     
    9393    void load();
    9494    RefPtr<Font> font(const FontDescription&, bool syntheticBold, bool syntheticItalic);
     95
     96    class Client {
     97    public:
     98        virtual ~Client() { }
     99        virtual void fontLoaded(CSSFontFace&) { };
     100        virtual void stateChanged(CSSFontFace&, Status oldState, Status newState) { UNUSED_PARAM(oldState); UNUSED_PARAM(newState); };
     101    };
    95102
    96103    // Pending => Loading  => TimedOut
     
    126133    };
    127134
     135    FontFace* wrapper() const { return m_wrapper; }
     136
    128137#if ENABLE(SVG_FONTS)
    129138    bool hasSVGFontFaceSource() const;
     
    131140
    132141private:
    133     CSSFontFace(CSSFontFaceClient&, CSSFontSelector&, bool isLocalFallback);
     142    CSSFontFace(CSSFontSelector&, FontFace*, bool isLocalFallback);
    134143
    135144    size_t pump();
     
    139148    FontTraitsMask m_traitsMask { static_cast<FontTraitsMask>(FontStyleNormalMask | FontWeight400Mask) };
    140149    Vector<UnicodeRange> m_ranges;
    141     HashSet<CSSSegmentedFontFace*> m_segmentedFontFaces; // FIXME: Refactor this (in favor of CSSFontFaceClient) when implementing FontFaceSet.
     150    HashSet<Client*> m_clients;
    142151    Ref<CSSFontSelector> m_fontSelector;
    143     CSSFontFaceClient& m_client;
     152    FontFace* m_wrapper;
    144153    FontFeatureSettings m_featureSettings;
    145154    FontVariantSettings m_variantSettings;
  • trunk/Source/WebCore/css/CSSFontSelector.cpp

    r196604 r196747  
    118118}
    119119
    120 static String familyNameFromPrimitive(const CSSPrimitiveValue& value)
     120String CSSFontSelector::familyNameFromPrimitive(const CSSPrimitiveValue& value)
    121121{
    122122    if (value.isFontFamily())
     
    155155    Vector<Ref<CSSFontFace>> faces = { };
    156156    for (auto mask : traitsMasks) {
    157         Ref<CSSFontFace> face = CSSFontFace::create(*this, *this, true);
     157        Ref<CSSFontFace> face = CSSFontFace::create(*this, nullptr, true);
    158158       
    159159        RefPtr<CSSValueList> familyList = CSSValueList::createCommaSeparated();
     
    202202        return;
    203203
    204     Ref<CSSFontFace> fontFace = CSSFontFace::create(*this, *this);
     204    Ref<CSSFontFace> fontFace = CSSFontFace::create(*this);
    205205
    206206    if (!fontFace->setFamilies(*fontFamily))
     
    497497
    498498
    499 void CSSFontSelector::kick(CSSFontFace&)
    500 {
    501 }
    502 
    503499size_t CSSFontSelector::fallbackFontCount()
    504500{
  • trunk/Source/WebCore/css/CSSFontSelector.h

    r196604 r196747  
    4242
    4343class CSSFontFaceRule;
     44class CSSPrimitiveValue;
    4445class CSSSegmentedFontFace;
    4546class CSSValueList;
     
    4849class StyleRuleFontFace;
    4950
    50 class CSSFontSelector final : public FontSelector, public CSSFontFaceClient {
     51class CSSFontSelector final : public FontSelector {
    5152public:
    5253    static Ref<CSSFontSelector> create(Document& document)
     
    8182    void beginLoadingFontSoon(CachedFont*);
    8283
     84    static String familyNameFromPrimitive(const CSSPrimitiveValue&);
     85
    8386private:
    8487    explicit CSSFontSelector(Document&);
     
    8992
    9093    void registerLocalFontFacesForFamily(const String&);
    91 
    92     void kick(CSSFontFace&) override;
    9394
    9495    Document* m_document;
  • trunk/Source/WebCore/css/CSSSegmentedFontFace.cpp

    r196322 r196747  
    4646{
    4747    for (auto& face : m_fontFaces)
    48         face->removedFromSegmentedFontFace(*this);
     48        face->removeClient(*this);
     49}
     50
     51void CSSSegmentedFontFace::appendFontFace(Ref<CSSFontFace>&& fontFace)
     52{
     53    m_cache.clear();
     54    fontFace->addClient(*this);
     55    m_fontFaces.append(WTFMove(fontFace));
    4956}
    5057
     
    5259{
    5360    m_cache.clear();
    54 }
    55 
    56 void CSSSegmentedFontFace::appendFontFace(Ref<CSSFontFace>&& fontFace)
    57 {
    58     m_cache.clear();
    59     fontFace->addedToSegmentedFontFace(*this);
    60     m_fontFaces.append(WTFMove(fontFace));
    6161}
    6262
  • trunk/Source/WebCore/css/CSSSegmentedFontFace.h

    r196438 r196747  
    2727#define CSSSegmentedFontFace_h
    2828
     29#include "CSSFontFace.h"
    2930#include "FontCache.h"
    3031#include "FontRanges.h"
     
    3637namespace WebCore {
    3738
    38 class CSSFontFace;
    3939class CSSFontSelector;
    4040class FontDescription;
    4141
    42 class CSSSegmentedFontFace final {
     42class CSSSegmentedFontFace final : public CSSFontFace::Client {
    4343    WTF_MAKE_FAST_ALLOCATED;
    4444public:
     
    4848    CSSFontSelector& fontSelector() const { return m_fontSelector; }
    4949
    50     void fontLoaded(CSSFontFace&);
    51 
    5250    void appendFontFace(Ref<CSSFontFace>&&);
    5351
     
    5553
    5654private:
     55    virtual void fontLoaded(CSSFontFace&) override;
    5756
    5857    CSSFontSelector& m_fontSelector;
  • trunk/Source/WebCore/css/FontFace.cpp

    r196604 r196747  
    11/*
    2  * Copyright (C) 2007, 2008, 2011, 2013 Apple Inc. All rights reserved.
     2 * Copyright (C) 2016 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    112112
    113113FontFace::FontFace(JSC::ExecState& execState, CSSFontSelector& fontSelector)
    114     : m_backing(CSSFontFace::create(*this, fontSelector))
     114    : m_backing(CSSFontFace::create(fontSelector, this))
    115115    , m_promise(createPromise(execState))
    116116{
     117    m_backing->addClient(*this);
    117118}
    118119
    119120FontFace::~FontFace()
    120121{
     122    m_backing->removeClient(*this);
    121123}
    122124
     
    316318}
    317319
    318 void FontFace::kick(CSSFontFace& face)
     320void FontFace::stateChanged(CSSFontFace& face, CSSFontFace::Status, CSSFontFace::Status newState)
    319321{
    320322    ASSERT_UNUSED(face, &face == m_backing.ptr());
    321     switch (m_backing->status()) {
     323    switch (newState) {
    322324    case CSSFontFace::Status::TimedOut:
    323325        rejectPromise(NETWORK_ERR);
  • trunk/Source/WebCore/css/FontFace.h

    r196604 r196747  
    11/*
    2  * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
     2 * Copyright (C) 2007, 2008, 2016 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    4646class Dictionary;
    4747
    48 class FontFace : public RefCounted<FontFace>, public CSSFontFaceClient {
     48class FontFace final : public RefCounted<FontFace>, public CSSFontFace::Client {
    4949public:
    5050    static RefPtr<FontFace> create(JSC::ExecState&, ScriptExecutionContext&, const String& family, const Deprecated::ScriptValue& source, const Dictionary& descriptors, ExceptionCode&);
     
    8080    FontFace(JSC::ExecState&, CSSFontSelector&);
    8181
    82     void kick(CSSFontFace&) override;
     82    virtual void stateChanged(CSSFontFace&, CSSFontFace::Status oldState, CSSFontFace::Status newState) override;
    8383
    8484    void fulfillPromise();
  • trunk/Source/WebCore/dom/EventNames.h

    r195937 r196747  
    142142    macro(loading) \
    143143    macro(loadingdone) \
     144    macro(loadingerror) \
    144145    macro(loadstart) \
    145146    macro(mark) \
  • trunk/Source/WebCore/dom/EventTargetFactory.in

    r185077 r196747  
    1010EventSource
    1111FileReader
    12 FontLoader conditional=FONT_LOAD_EVENTS
     12FontFaceSet
    1313IDBDatabase conditional=INDEXED_DATABASE
    1414IDBOpenDBRequest conditional=INDEXED_DATABASE
Note: See TracChangeset for help on using the changeset viewer.