Changeset 196747 in webkit
- Timestamp:
- Feb 17, 2016 11:25:56 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 8 added
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r196740 r196747 1 2016-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 1 11 2016-02-17 Commit Queue <commit-queue@webkit.org> 2 12 -
trunk/LayoutTests/js/dom/global-constructors-attributes-expected.txt
r196621 r196747 379 379 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false 380 380 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true 381 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet 382 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false 383 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false 384 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false 385 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true 381 386 PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData 382 387 PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false -
trunk/LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt
r196604 r196747 374 374 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false 375 375 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true 376 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet 377 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false 378 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false 379 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false 380 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true 376 381 PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData 377 382 PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false -
trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt
r196604 r196747 379 379 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false 380 380 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true 381 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet 382 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false 383 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false 384 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false 385 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true 381 386 PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData 382 387 PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false -
trunk/LayoutTests/platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt
r196621 r196747 379 379 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false 380 380 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true 381 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet 382 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false 383 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false 384 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false 385 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true 381 386 PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData 382 387 PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false -
trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt
r196621 r196747 424 424 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false 425 425 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true 426 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet 427 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false 428 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false 429 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false 430 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true 426 431 PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData 427 432 PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false -
trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt
r196621 r196747 424 424 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false 425 425 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true 426 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet 427 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false 428 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false 429 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false 430 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true 426 431 PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData 427 432 PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false -
trunk/LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt
r196604 r196747 299 299 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').enumerable is false 300 300 PASS Object.getOwnPropertyDescriptor(global, 'FontFace').configurable is true 301 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').value is FontFaceSet 302 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('get') is false 303 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').hasOwnProperty('set') is false 304 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').enumerable is false 305 PASS Object.getOwnPropertyDescriptor(global, 'FontFaceSet').configurable is true 301 306 PASS Object.getOwnPropertyDescriptor(global, 'FormData').value is FormData 302 307 PASS Object.getOwnPropertyDescriptor(global, 'FormData').hasOwnProperty('get') is false -
trunk/Source/WebCore/CMakeLists.txt
r196688 r196747 332 332 css/DOMWindowCSS.idl 333 333 css/FontFace.idl 334 css/FontFaceSet.idl 334 335 css/FontLoader.idl 335 336 css/MediaList.idl … … 1111 1112 bindings/js/JSCSSStyleDeclarationCustom.cpp 1112 1113 bindings/js/JSFontFaceCustom.cpp 1114 bindings/js/JSFontFaceSetCustom.cpp 1113 1115 bindings/js/JSCSSValueCustom.cpp 1114 1116 bindings/js/JSCallbackData.cpp … … 1303 1305 css/CSSDefaultStyleSheets.cpp 1304 1306 css/CSSFilterImageValue.cpp 1307 css/FontFaceSet.cpp 1305 1308 css/FontFace.cpp 1306 1309 css/CSSFontFace.cpp 1310 css/CSSFontFaceSet.cpp 1307 1311 css/CSSFontFaceLoadEvent.cpp 1308 1312 css/CSSFontFaceRule.cpp -
trunk/Source/WebCore/ChangeLog
r196745 r196747 1 2016-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 1 131 2016-02-17 Mark Lam <mark.lam@apple.com> 2 132 -
trunk/Source/WebCore/DerivedSources.make
r196604 r196747 243 243 $(WebCore)/css/DOMWindowCSS.idl \ 244 244 $(WebCore)/css/FontFace.idl \ 245 $(WebCore)/css/FontFaceSet.idl \ 245 246 $(WebCore)/css/FontLoader.idl \ 246 247 $(WebCore)/css/MediaList.idl \ -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
r196636 r196747 1972 1972 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild> 1973 1973 </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> 1974 1988 <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFontFace.cpp"> 1975 1989 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> … … 9612 9626 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild> 9613 9627 </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> 9614 9642 <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"> 9615 9657 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> 9616 9658 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> … … 17728 17770 </ClCompile> 17729 17771 <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"> 17730 17786 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> 17731 17787 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> … … 19988 20044 <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFileReaderSync.h" /> 19989 20045 <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFontLoader.h" /> 20046 <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFontFaceSet.h" /> 19990 20047 <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSFontFace.h" /> 19991 20048 <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSGamepad.h" /> … … 21706 21763 <ClInclude Include="..\css\CSSFilterImageValue.h" /> 21707 21764 <ClInclude Include="..\css\CSSFontFace.h" /> 21765 <ClInclude Include="..\css\CSSFontFaceSet.h" /> 21708 21766 <ClInclude Include="..\css\FontFace.h" /> 21767 <ClInclude Include="..\css\FontFaceSet.h" /> 21709 21768 <ClInclude Include="..\css\CSSFontFaceLoadEvent.h" /> 21710 21769 <ClInclude Include="..\css\CSSFontFaceRule.h" /> -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters
r196604 r196747 2085 2085 <Filter>css</Filter> 2086 2086 </ClCompile> 2087 <ClCompile Include="..\css\FontFaceSet.cpp"> 2088 <Filter>css</Filter> 2089 </ClCompile> 2087 2090 <ClCompile Include="..\css\FontFace.cpp"> 2091 <Filter>css</Filter> 2092 </ClCompile> 2093 <ClCompile Include="..\css\CSSFontFaceSet.cpp"> 2088 2094 <Filter>css</Filter> 2089 2095 </ClCompile> … … 4261 4267 </ClCompile> 4262 4268 <ClCompile Include="..\bindings\js\JSCSSRuleListCustom.cpp"> 4269 <Filter>bindings\js</Filter> 4270 </ClCompile> 4271 <ClCompile Include="..\bindings\js\JSFontFaceSetCustom.cpp"> 4263 4272 <Filter>bindings\js</Filter> 4264 4273 </ClCompile> … … 5273 5282 </ClCompile> 5274 5283 <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"> 5275 5287 <Filter>DerivedSources</Filter> 5276 5288 </ClCompile> … … 9068 9080 <Filter>css</Filter> 9069 9081 </ClInclude> 9082 <ClInclude Include="..\css\FontFaceSet.h"> 9083 <Filter>css</Filter> 9084 </ClInclude> 9070 9085 <ClInclude Include="..\css\FontFace.h"> 9086 <Filter>css</Filter> 9087 </ClInclude> 9088 <ClInclude Include="..\css\CSSFontFaceSet.h"> 9071 9089 <Filter>css</Filter> 9072 9090 </ClInclude> … … 12701 12719 </ClInclude> 12702 12720 <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"> 12703 12724 <Filter>DerivedSources</Filter> 12704 12725 </ClInclude> -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r196705 r196747 951 951 1C21E57D183ED1FF001C289D /* IOSurfacePool.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C21E57B183ED1FF001C289D /* IOSurfacePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; 952 952 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 */; }; 953 958 1C26497A0D7E248A00BD10F2 /* DocumentLoaderMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C2649790D7E248A00BD10F2 /* DocumentLoaderMac.cpp */; }; 954 959 1C3249111C6D6A3B007EDB32 /* FontVariantBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C3249101C6D6A3B007EDB32 /* FontVariantBuilder.cpp */; }; … … 5916 5921 C105DA640F3AA6B8001DD44F /* TextEncodingDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = C105DA630F3AA6B8001DD44F /* TextEncodingDetector.h */; }; 5917 5922 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 */; }; 5918 5925 C280833F1C6DC26F001451B6 /* JSFontFace.h in Headers */ = {isa = PBXBuildFile; fileRef = C280833E1C6DC22C001451B6 /* JSFontFace.h */; }; 5919 5926 C28083401C6DC275001451B6 /* JSFontFace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C280833D1C6DC22C001451B6 /* JSFontFace.cpp */; }; … … 8377 8384 1C21E57B183ED1FF001C289D /* IOSurfacePool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOSurfacePool.h; sourceTree = "<group>"; }; 8378 8385 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>"; }; 8379 8392 1C2649790D7E248A00BD10F2 /* DocumentLoaderMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentLoaderMac.cpp; sourceTree = "<group>"; }; 8380 8393 1C3249101C6D6A3B007EDB32 /* FontVariantBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontVariantBuilder.cpp; sourceTree = "<group>"; }; … … 13838 13851 C2015C091BE6FE2C00822389 /* FontVariantBuilder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FontVariantBuilder.h; sourceTree = "<group>"; }; 13839 13852 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>"; }; 13840 13855 C280833C1C6DB194001451B6 /* FontFace.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = FontFace.idl; sourceTree = "<group>"; }; 13841 13856 C280833D1C6DC22C001451B6 /* JSFontFace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFontFace.cpp; sourceTree = "<group>"; }; … … 17562 17577 isa = PBXGroup; 17563 17578 children = ( 17579 1C24EEA61C72A7B40080F8FC /* JSFontFaceSet.cpp */, 17580 1C24EEA71C72A7B40080F8FC /* JSFontFaceSet.h */, 17564 17581 C280833D1C6DC22C001451B6 /* JSFontFace.cpp */, 17565 17582 C280833E1C6DC22C001451B6 /* JSFontFace.h */, … … 22472 22489 BCEFE1E40DCA5F3300739219 /* JSXSLTProcessorCustom.cpp */, 22473 22490 C28083411C6DC96A001451B6 /* JSFontFaceCustom.cpp */, 22491 1C24EEAA1C72AA0A0080F8FC /* JSFontFaceSetCustom.cpp */, 22474 22492 ); 22475 22493 name = Custom; … … 23781 23799 1C66260F1C6E7CA600AB527C /* FontFace.h */, 23782 23800 C280833C1C6DB194001451B6 /* FontFace.idl */, 23801 1C24EEA11C729B320080F8FC /* FontFaceSet.idl */, 23802 1C24EEA21C729CE40080F8FC /* FontFaceSet.cpp */, 23803 1C24EEA31C729CE40080F8FC /* FontFaceSet.h */, 23804 C26017A11C72DC9900F74A16 /* CSSFontFaceSet.cpp */, 23805 C26017A21C72DC9900F74A16 /* CSSFontFaceSet.h */, 23783 23806 ); 23784 23807 path = css; … … 26503 26526 8482B7521198CB6B00BFB005 /* JSHashChangeEvent.h in Headers */, 26504 26527 BC94D14F0C275C68006BC617 /* JSHistory.h in Headers */, 26528 1C24EEA51C729CE40080F8FC /* FontFaceSet.h in Headers */, 26505 26529 BC97E413109154FA0010D361 /* JSHTMLAllCollection.h in Headers */, 26506 26530 1A4A2DF00A1B852A00C807F8 /* JSHTMLAnchorElement.h in Headers */, … … 27316 27340 536D5A23193E8E0C00CE4CAB /* ParsingUtilities.h in Headers */, 27317 27341 F55B3DCA1251F12D003EF269 /* PasswordInputType.h in Headers */, 27342 1C24EEA91C72A7B40080F8FC /* JSFontFaceSet.h in Headers */, 27318 27343 4B2708C70AF19EE40065127F /* Pasteboard.h in Headers */, 27319 27344 C598905714E9C28000E8D18B /* PasteboardStrategy.h in Headers */, … … 28051 28076 088A0E09126EF1DB00978F7A /* SVGListPropertyTearOff.h in Headers */, 28052 28077 B2227A410D00BF220071B782 /* SVGLocatable.h in Headers */, 28078 C26017A41C72DC9900F74A16 /* CSSFontFaceSet.h in Headers */, 28053 28079 436708EE12D9CA4B00044234 /* SVGMarkerData.h in Headers */, 28054 28080 B2227A440D00BF220071B782 /* SVGMarkerElement.h in Headers */, … … 29871 29897 5185FC771BB4C4E80012898F /* IDBAny.cpp in Sources */, 29872 29898 5198F7BE1BC338AF00E2CC5F /* IDBAnyImpl.cpp in Sources */, 29899 C26017A31C72DC9900F74A16 /* CSSFontFaceSet.cpp in Sources */, 29873 29900 C585A66211D4FAC5004C3E4B /* IDBBindingUtilities.cpp in Sources */, 29874 29901 516D7D711BB5F0BD00AF7C77 /* IDBConnectionToClient.cpp in Sources */, … … 30396 30423 E1284BB210449FFA00EAEB52 /* JSPageTransitionEvent.cpp in Sources */, 30397 30424 FDA15EB112B03EE1003A583A /* JSPannerNode.cpp in Sources */, 30425 1C24EEA41C729CE40080F8FC /* FontFaceSet.cpp in Sources */, 30398 30426 FD8AA63E169514A700D2EA68 /* JSPannerNodeCustom.cpp in Sources */, 30399 30427 E51A81DF17298D7700BFCA61 /* JSPerformance.cpp in Sources */, … … 31166 31194 A454424E119B3687009BE912 /* RenderMeter.cpp in Sources */, 31167 31195 1A3586DF15264C450022A659 /* RenderMultiColumnFlowThread.cpp in Sources */, 31196 1C24EEA81C72A7B40080F8FC /* JSFontFaceSet.cpp in Sources */, 31168 31197 BCE32B9E1517C22700F542EC /* RenderMultiColumnSet.cpp in Sources */, 31169 31198 BC1A7D9718FCB5B000421879 /* RenderMultiColumnSpannerPlaceholder.cpp in Sources */, … … 31587 31616 845E72FB0FD2623900A87D79 /* SVGFilter.cpp in Sources */, 31588 31617 081EBF3A0FD34F4100DA7559 /* SVGFilterBuilder.cpp in Sources */, 31618 1C24EEAB1C72AA0A0080F8FC /* JSFontFaceSetCustom.cpp in Sources */, 31589 31619 B2227A0B0D00BF220071B782 /* SVGFilterElement.cpp in Sources */, 31590 31620 B2227A0E0D00BF220071B782 /* SVGFilterPrimitiveStandardAttributes.cpp in Sources */, -
trunk/Source/WebCore/css/CSSAllInOne.cpp
r196510 r196747 43 43 #include "CSSFontFaceLoadEvent.cpp" 44 44 #include "CSSFontFaceRule.cpp" 45 #include "CSSFontFaceSet.cpp" 45 46 #include "CSSFontFaceSource.cpp" 46 47 #include "CSSFontFaceSrcValue.cpp" -
trunk/Source/WebCore/css/CSSFontFace.cpp
r196604 r196747 46 46 namespace WebCore { 47 47 48 CSSFontFace::CSSFontFace(CSSFont FaceClient& client, CSSFontSelector& fontSelector, bool isLocalFallback)48 CSSFontFace::CSSFontFace(CSSFontSelector& fontSelector, FontFace* wrapper, bool isLocalFallback) 49 49 : m_fontSelector(fontSelector) 50 , m_ client(client)50 , m_wrapper(wrapper) 51 51 , m_isLocalFallback(isLocalFallback) 52 52 { … … 231 231 } 232 232 233 void CSSFontFace::add edToSegmentedFontFace(CSSSegmentedFontFace& segmentedFontFace)234 { 235 m_ segmentedFontFaces.add(&segmentedFontFace);236 } 237 238 void CSSFontFace::remove dFromSegmentedFontFace(CSSSegmentedFontFace& segmentedFontFace)239 { 240 m_ segmentedFontFaces.remove(&segmentedFontFace);233 void CSSFontFace::addClient(Client& client) 234 { 235 m_clients.add(&client); 236 } 237 238 void CSSFontFace::removeClient(Client& client) 239 { 240 m_clients.remove(&client); 241 241 } 242 242 … … 269 269 } 270 270 271 for (auto& client : m_clients) 272 client->stateChanged(*this, m_status, newStatus); 273 271 274 m_status = newStatus; 272 273 if (m_status == Status::Success || m_status == Status::Failure)274 m_client.kick(*this);275 275 } 276 276 … … 283 283 pump(); 284 284 285 if (m_segmentedFontFaces.isEmpty())286 return;287 288 285 m_fontSelector->fontLoaded(); 289 286 290 for (auto * face : m_segmentedFontFaces)291 face->fontLoaded(*this);287 for (auto& client : m_clients) 288 client->fontLoaded(*this); 292 289 } 293 290 -
trunk/Source/WebCore/css/CSSFontFace.h
r196604 r196747 1 1 /* 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.2 * Copyright (C) 2007, 2008, 2016 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 45 45 class FontDescription; 46 46 class Font; 47 class FontFace; 47 48 48 class CSSFontFaceClient { 49 // FIXME: This class does not need to be reference counted. 50 class CSSFontFace final : public RefCounted<CSSFontFace> { 49 51 public: 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 } 57 56 virtual ~CSSFontFace(); 58 57 … … 81 80 Status status() const { return m_status; } 82 81 83 void addedToSegmentedFontFace(CSSSegmentedFontFace&); 84 void removedFromSegmentedFontFace(CSSSegmentedFontFace&); 82 class Client; 83 void addClient(Client&); 84 void removeClient(Client&); 85 85 86 86 bool allSourcesFailed() const; … … 93 93 void load(); 94 94 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 }; 95 102 96 103 // Pending => Loading => TimedOut … … 126 133 }; 127 134 135 FontFace* wrapper() const { return m_wrapper; } 136 128 137 #if ENABLE(SVG_FONTS) 129 138 bool hasSVGFontFaceSource() const; … … 131 140 132 141 private: 133 CSSFontFace(CSSFont FaceClient&, CSSFontSelector&, bool isLocalFallback);142 CSSFontFace(CSSFontSelector&, FontFace*, bool isLocalFallback); 134 143 135 144 size_t pump(); … … 139 148 FontTraitsMask m_traitsMask { static_cast<FontTraitsMask>(FontStyleNormalMask | FontWeight400Mask) }; 140 149 Vector<UnicodeRange> m_ranges; 141 HashSet<C SSSegmentedFontFace*> m_segmentedFontFaces; // FIXME: Refactor this (in favor of CSSFontFaceClient) when implementing FontFaceSet.150 HashSet<Client*> m_clients; 142 151 Ref<CSSFontSelector> m_fontSelector; 143 CSSFontFaceClient& m_client;152 FontFace* m_wrapper; 144 153 FontFeatureSettings m_featureSettings; 145 154 FontVariantSettings m_variantSettings; -
trunk/Source/WebCore/css/CSSFontSelector.cpp
r196604 r196747 118 118 } 119 119 120 static StringfamilyNameFromPrimitive(const CSSPrimitiveValue& value)120 String CSSFontSelector::familyNameFromPrimitive(const CSSPrimitiveValue& value) 121 121 { 122 122 if (value.isFontFamily()) … … 155 155 Vector<Ref<CSSFontFace>> faces = { }; 156 156 for (auto mask : traitsMasks) { 157 Ref<CSSFontFace> face = CSSFontFace::create(*this, *this, true);157 Ref<CSSFontFace> face = CSSFontFace::create(*this, nullptr, true); 158 158 159 159 RefPtr<CSSValueList> familyList = CSSValueList::createCommaSeparated(); … … 202 202 return; 203 203 204 Ref<CSSFontFace> fontFace = CSSFontFace::create(*this , *this);204 Ref<CSSFontFace> fontFace = CSSFontFace::create(*this); 205 205 206 206 if (!fontFace->setFamilies(*fontFamily)) … … 497 497 498 498 499 void CSSFontSelector::kick(CSSFontFace&)500 {501 }502 503 499 size_t CSSFontSelector::fallbackFontCount() 504 500 { -
trunk/Source/WebCore/css/CSSFontSelector.h
r196604 r196747 42 42 43 43 class CSSFontFaceRule; 44 class CSSPrimitiveValue; 44 45 class CSSSegmentedFontFace; 45 46 class CSSValueList; … … 48 49 class StyleRuleFontFace; 49 50 50 class CSSFontSelector final : public FontSelector , public CSSFontFaceClient{51 class CSSFontSelector final : public FontSelector { 51 52 public: 52 53 static Ref<CSSFontSelector> create(Document& document) … … 81 82 void beginLoadingFontSoon(CachedFont*); 82 83 84 static String familyNameFromPrimitive(const CSSPrimitiveValue&); 85 83 86 private: 84 87 explicit CSSFontSelector(Document&); … … 89 92 90 93 void registerLocalFontFacesForFamily(const String&); 91 92 void kick(CSSFontFace&) override;93 94 94 95 Document* m_document; -
trunk/Source/WebCore/css/CSSSegmentedFontFace.cpp
r196322 r196747 46 46 { 47 47 for (auto& face : m_fontFaces) 48 face->removedFromSegmentedFontFace(*this); 48 face->removeClient(*this); 49 } 50 51 void CSSSegmentedFontFace::appendFontFace(Ref<CSSFontFace>&& fontFace) 52 { 53 m_cache.clear(); 54 fontFace->addClient(*this); 55 m_fontFaces.append(WTFMove(fontFace)); 49 56 } 50 57 … … 52 59 { 53 60 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));61 61 } 62 62 -
trunk/Source/WebCore/css/CSSSegmentedFontFace.h
r196438 r196747 27 27 #define CSSSegmentedFontFace_h 28 28 29 #include "CSSFontFace.h" 29 30 #include "FontCache.h" 30 31 #include "FontRanges.h" … … 36 37 namespace WebCore { 37 38 38 class CSSFontFace;39 39 class CSSFontSelector; 40 40 class FontDescription; 41 41 42 class CSSSegmentedFontFace final {42 class CSSSegmentedFontFace final : public CSSFontFace::Client { 43 43 WTF_MAKE_FAST_ALLOCATED; 44 44 public: … … 48 48 CSSFontSelector& fontSelector() const { return m_fontSelector; } 49 49 50 void fontLoaded(CSSFontFace&);51 52 50 void appendFontFace(Ref<CSSFontFace>&&); 53 51 … … 55 53 56 54 private: 55 virtual void fontLoaded(CSSFontFace&) override; 57 56 58 57 CSSFontSelector& m_fontSelector; -
trunk/Source/WebCore/css/FontFace.cpp
r196604 r196747 1 1 /* 2 * Copyright (C) 20 07, 2008, 2011, 2013Apple Inc. All rights reserved.2 * Copyright (C) 2016 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 112 112 113 113 FontFace::FontFace(JSC::ExecState& execState, CSSFontSelector& fontSelector) 114 : m_backing(CSSFontFace::create( *this, fontSelector))114 : m_backing(CSSFontFace::create(fontSelector, this)) 115 115 , m_promise(createPromise(execState)) 116 116 { 117 m_backing->addClient(*this); 117 118 } 118 119 119 120 FontFace::~FontFace() 120 121 { 122 m_backing->removeClient(*this); 121 123 } 122 124 … … 316 318 } 317 319 318 void FontFace:: kick(CSSFontFace& face)320 void FontFace::stateChanged(CSSFontFace& face, CSSFontFace::Status, CSSFontFace::Status newState) 319 321 { 320 322 ASSERT_UNUSED(face, &face == m_backing.ptr()); 321 switch ( m_backing->status()) {323 switch (newState) { 322 324 case CSSFontFace::Status::TimedOut: 323 325 rejectPromise(NETWORK_ERR); -
trunk/Source/WebCore/css/FontFace.h
r196604 r196747 1 1 /* 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.2 * Copyright (C) 2007, 2008, 2016 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 46 46 class Dictionary; 47 47 48 class FontFace : public RefCounted<FontFace>, public CSSFontFaceClient {48 class FontFace final : public RefCounted<FontFace>, public CSSFontFace::Client { 49 49 public: 50 50 static RefPtr<FontFace> create(JSC::ExecState&, ScriptExecutionContext&, const String& family, const Deprecated::ScriptValue& source, const Dictionary& descriptors, ExceptionCode&); … … 80 80 FontFace(JSC::ExecState&, CSSFontSelector&); 81 81 82 v oid kick(CSSFontFace&) override;82 virtual void stateChanged(CSSFontFace&, CSSFontFace::Status oldState, CSSFontFace::Status newState) override; 83 83 84 84 void fulfillPromise(); -
trunk/Source/WebCore/dom/EventNames.h
r195937 r196747 142 142 macro(loading) \ 143 143 macro(loadingdone) \ 144 macro(loadingerror) \ 144 145 macro(loadstart) \ 145 146 macro(mark) \ -
trunk/Source/WebCore/dom/EventTargetFactory.in
r185077 r196747 10 10 EventSource 11 11 FileReader 12 Font Loader conditional=FONT_LOAD_EVENTS12 FontFaceSet 13 13 IDBDatabase conditional=INDEXED_DATABASE 14 14 IDBOpenDBRequest conditional=INDEXED_DATABASE
Note: See TracChangeset
for help on using the changeset viewer.