Index: third_party/WebKit/Source/core/css/CSSFontFace.cpp |
diff --git a/third_party/WebKit/Source/core/css/CSSFontFace.cpp b/third_party/WebKit/Source/core/css/CSSFontFace.cpp |
index e46ce5bbf3c7f5f4218a613e52a500cb83e4e4f2..5c676beb5d23b2148644e301698bd4f52ecb9010 100644 |
--- a/third_party/WebKit/Source/core/css/CSSFontFace.cpp |
+++ b/third_party/WebKit/Source/core/css/CSSFontFace.cpp |
@@ -30,7 +30,9 @@ |
#include "core/css/CSSSegmentedFontFace.h" |
#include "core/css/FontFaceSet.h" |
#include "core/css/RemoteFontFaceSource.h" |
+#include "core/dom/TaskRunnerHelper.h" |
#include "core/frame/UseCounter.h" |
+#include "platform/WebTaskRunner.h" |
#include "platform/fonts/FontDescription.h" |
#include "platform/fonts/SimpleFontData.h" |
#include <algorithm> |
@@ -175,19 +177,33 @@ void CSSFontFace::load(const FontDescription& fontDescription) { |
} |
void CSSFontFace::setLoadStatus(FontFace::LoadStatusType newStatus) { |
- ASSERT(m_fontFace); |
- if (newStatus == FontFace::Error) |
- m_fontFace->setError(); |
- else |
+ DCHECK(m_fontFace); |
+ m_loadStatus = newStatus; |
+ if (newStatus == FontFace::Loading) { |
m_fontFace->setLoadStatus(newStatus); |
+ } else { |
+ TaskRunnerHelper::get(TaskType::DOMManipulation, |
+ m_fontFace->getExecutionContext()) |
+ ->postTask(BLINK_FROM_HERE, WTF::bind(&CSSFontFace::setLoadStatusHelper, |
+ wrapPersistent(this), newStatus)); |
+ return; |
+ } |
if (!m_segmentedFontFace) |
jbroman
2017/01/05 20:01:08
nit: it's a little confusing that stuff that only
|
return; |
Document* document = m_segmentedFontFace->fontSelector()->document(); |
- if (document && newStatus == FontFace::Loading) |
+ if (document) |
FontFaceSet::from(*document)->beginFontLoading(m_fontFace); |
} |
+void CSSFontFace::setLoadStatusHelper(FontFace::LoadStatusType newStatus) { |
+ DCHECK(m_fontFace); |
+ if (newStatus == FontFace::Error) |
+ m_fontFace->setError(); |
+ else |
+ m_fontFace->setLoadStatus(newStatus); |
+} |
+ |
DEFINE_TRACE(CSSFontFace) { |
visitor->trace(m_segmentedFontFace); |
visitor->trace(m_sources); |