| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are met: | 5 * modification, are permitted provided that the following conditions are met: |
| 6 * | 6 * |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 removeFromLoadingFonts(fontFace); | 225 removeFromLoadingFonts(fontFace); |
| 226 } | 226 } |
| 227 | 227 |
| 228 void FontFaceSet::loadError(FontFace* fontFace) | 228 void FontFaceSet::loadError(FontFace* fontFace) |
| 229 { | 229 { |
| 230 m_histogram.updateStatus(fontFace); | 230 m_histogram.updateStatus(fontFace); |
| 231 m_failedFonts.append(fontFace); | 231 m_failedFonts.append(fontFace); |
| 232 removeFromLoadingFonts(fontFace); | 232 removeFromLoadingFonts(fontFace); |
| 233 } | 233 } |
| 234 | 234 |
| 235 bool FontFaceSet::hasBlankText() const |
| 236 { |
| 237 for (auto& fontFace : m_loadingFonts) { |
| 238 if (fontFace->isBlank()) |
| 239 return true; |
| 240 } |
| 241 return false; |
| 242 } |
| 243 |
| 235 void FontFaceSet::addToLoadingFonts(FontFace* fontFace) | 244 void FontFaceSet::addToLoadingFonts(FontFace* fontFace) |
| 236 { | 245 { |
| 237 if (!m_isLoading) { | 246 if (!m_isLoading) { |
| 238 m_isLoading = true; | 247 m_isLoading = true; |
| 239 m_shouldFireLoadingEvent = true; | 248 m_shouldFireLoadingEvent = true; |
| 240 if (m_ready->getState() != ReadyProperty::Pending) | 249 if (m_ready->getState() != ReadyProperty::Pending) |
| 241 m_ready->reset(); | 250 m_ready->reset(); |
| 242 handlePendingEventsAndPromisesSoon(); | 251 handlePendingEventsAndPromisesSoon(); |
| 243 } | 252 } |
| 244 m_loadingFonts.add(fontFace); | 253 m_loadingFonts.add(fontFace); |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 | 510 |
| 502 return fonts; | 511 return fonts; |
| 503 } | 512 } |
| 504 | 513 |
| 505 void FontFaceSet::didLayout(Document& document) | 514 void FontFaceSet::didLayout(Document& document) |
| 506 { | 515 { |
| 507 if (FontFaceSet* fonts = static_cast<FontFaceSet*>(Supplement<Document>::fro
m(document, supplementName()))) | 516 if (FontFaceSet* fonts = static_cast<FontFaceSet*>(Supplement<Document>::fro
m(document, supplementName()))) |
| 508 fonts->didLayout(); | 517 fonts->didLayout(); |
| 509 } | 518 } |
| 510 | 519 |
| 520 bool FontFaceSet::hasBlankText(Document& document) |
| 521 { |
| 522 if (FontFaceSet* fonts = static_cast<FontFaceSet*>(Supplement<Document>::fro
m(document, supplementName()))) |
| 523 return fonts->hasBlankText(); |
| 524 return false; |
| 525 } |
| 526 |
| 511 FontFaceSetIterable::IterationSource* FontFaceSet::startIteration(ScriptState*,
ExceptionState&) | 527 FontFaceSetIterable::IterationSource* FontFaceSet::startIteration(ScriptState*,
ExceptionState&) |
| 512 { | 528 { |
| 513 // Setlike should iterate each item in insertion order, and items should | 529 // Setlike should iterate each item in insertion order, and items should |
| 514 // be keep on up to date. But since blink does not have a way to hook up CSS | 530 // be keep on up to date. But since blink does not have a way to hook up CSS |
| 515 // modification, take a snapshot here, and make it ordered as follows. | 531 // modification, take a snapshot here, and make it ordered as follows. |
| 516 HeapVector<Member<FontFace>> fontFaces; | 532 HeapVector<Member<FontFace>> fontFaces; |
| 517 if (inActiveDocumentContext()) { | 533 if (inActiveDocumentContext()) { |
| 518 const HeapListHashSet<Member<FontFace>>& cssConnectedFaces = cssConnecte
dFontFaceList(); | 534 const HeapListHashSet<Member<FontFace>>& cssConnectedFaces = cssConnecte
dFontFaceList(); |
| 519 fontFaces.reserveInitialCapacity(cssConnectedFaces.size() + m_nonCSSConn
ectedFaces.size()); | 535 fontFaces.reserveInitialCapacity(cssConnectedFaces.size() + m_nonCSSConn
ectedFaces.size()); |
| 520 for (const auto& fontFace : cssConnectedFaces) | 536 for (const auto& fontFace : cssConnectedFaces) |
| (...skipping 19 matching lines...) Expand all Loading... |
| 540 visitor->trace(m_loadedFonts); | 556 visitor->trace(m_loadedFonts); |
| 541 visitor->trace(m_failedFonts); | 557 visitor->trace(m_failedFonts); |
| 542 visitor->trace(m_nonCSSConnectedFaces); | 558 visitor->trace(m_nonCSSConnectedFaces); |
| 543 visitor->trace(m_asyncRunner); | 559 visitor->trace(m_asyncRunner); |
| 544 EventTargetWithInlineData::trace(visitor); | 560 EventTargetWithInlineData::trace(visitor); |
| 545 Supplement<Document>::trace(visitor); | 561 Supplement<Document>::trace(visitor); |
| 546 ActiveDOMObject::trace(visitor); | 562 ActiveDOMObject::trace(visitor); |
| 547 } | 563 } |
| 548 | 564 |
| 549 } // namespace blink | 565 } // namespace blink |
| OLD | NEW |