Chromium Code Reviews| 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 | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 47 #include "core/css/RemoteFontFaceSource.h" | 47 #include "core/css/RemoteFontFaceSource.h" |
| 48 #include "core/css/StylePropertySet.h" | 48 #include "core/css/StylePropertySet.h" |
| 49 #include "core/css/StyleRule.h" | 49 #include "core/css/StyleRule.h" |
| 50 #include "core/css/parser/CSSParser.h" | 50 #include "core/css/parser/CSSParser.h" |
| 51 #include "core/dom/DOMArrayBuffer.h" | 51 #include "core/dom/DOMArrayBuffer.h" |
| 52 #include "core/dom/DOMArrayBufferView.h" | 52 #include "core/dom/DOMArrayBufferView.h" |
| 53 #include "core/dom/DOMException.h" | 53 #include "core/dom/DOMException.h" |
| 54 #include "core/dom/Document.h" | 54 #include "core/dom/Document.h" |
| 55 #include "core/dom/ExceptionCode.h" | 55 #include "core/dom/ExceptionCode.h" |
| 56 #include "core/dom/StyleEngine.h" | 56 #include "core/dom/StyleEngine.h" |
| 57 #include "core/dom/TaskRunnerHelper.h" | |
| 57 #include "core/frame/LocalFrame.h" | 58 #include "core/frame/LocalFrame.h" |
| 58 #include "core/frame/Settings.h" | 59 #include "core/frame/Settings.h" |
| 59 #include "core/frame/UseCounter.h" | 60 #include "core/frame/UseCounter.h" |
| 60 #include "platform/FontFamilyNames.h" | 61 #include "platform/FontFamilyNames.h" |
| 61 #include "platform/Histogram.h" | 62 #include "platform/Histogram.h" |
| 62 #include "platform/SharedBuffer.h" | 63 #include "platform/SharedBuffer.h" |
| 64 #include "platform/WebTaskRunner.h" | |
| 63 | 65 |
| 64 namespace blink { | 66 namespace blink { |
| 65 | 67 |
| 66 static const CSSValue* parseCSSValue(const Document* document, | 68 static const CSSValue* parseCSSValue(const Document* document, |
| 67 const String& value, | 69 const String& value, |
| 68 CSSPropertyID propertyID) { | 70 CSSPropertyID propertyID) { |
| 69 CSSParserContext context(*document, UseCounter::getFrom(document)); | 71 CSSParserContext context(*document, UseCounter::getFrom(document)); |
| 70 return CSSParser::parseFontFaceDescriptor(propertyID, value, context); | 72 return CSSParser::parseFontFaceDescriptor(propertyID, value, context); |
| 71 } | 73 } |
| 72 | 74 |
| (...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 345 } | 347 } |
| 346 return emptyString(); | 348 return emptyString(); |
| 347 } | 349 } |
| 348 | 350 |
| 349 void FontFace::setLoadStatus(LoadStatusType status) { | 351 void FontFace::setLoadStatus(LoadStatusType status) { |
| 350 m_status = status; | 352 m_status = status; |
| 351 ASSERT(m_status != Error || m_error); | 353 ASSERT(m_status != Error || m_error); |
| 352 | 354 |
| 353 if (m_status == Loaded || m_status == Error) { | 355 if (m_status == Loaded || m_status == Error) { |
| 354 if (m_loadedProperty) { | 356 if (m_loadedProperty) { |
| 355 if (m_status == Loaded) | 357 if (m_status == Loaded) { |
| 356 m_loadedProperty->resolve(this); | 358 TaskRunnerHelper::get(TaskType::DOMManipulation, getExecutionContext()) |
| 357 else | 359 ->postTask(BLINK_FROM_HERE, |
| 360 WTF::bind(&LoadedProperty::resolve<FontFace*>, | |
| 361 wrapPersistent(m_loadedProperty.get()), | |
| 362 wrapPersistent(this))); | |
| 363 } else | |
| 358 m_loadedProperty->reject(m_error.get()); | 364 m_loadedProperty->reject(m_error.get()); |
|
Kunihiko Sakamoto
2017/01/10 06:02:12
Need to post a task for rejection too?
adithyas
2017/01/10 17:52:46
Rejection is always asynchronous so we don't have
Kunihiko Sakamoto
2017/01/11 05:25:45
Ah interesting, didn't know that.
adithyas
2017/01/11 17:59:39
Technically, resolution is also always asynchronou
| |
| 359 } | 365 } |
| 360 | 366 |
| 361 HeapVector<Member<LoadFontCallback>> callbacks; | 367 HeapVector<Member<LoadFontCallback>> callbacks; |
| 362 m_callbacks.swap(callbacks); | 368 m_callbacks.swap(callbacks); |
| 363 for (size_t i = 0; i < callbacks.size(); ++i) { | 369 for (size_t i = 0; i < callbacks.size(); ++i) { |
| 364 if (m_status == Loaded) | 370 if (m_status == Loaded) |
| 365 callbacks[i]->notifyLoaded(this); | 371 callbacks[i]->notifyLoaded(this); |
|
Kunihiko Sakamoto
2017/01/10 06:02:12
This may resolve a promise (that is created by Fon
adithyas
2017/01/10 17:52:46
FontFaceSet uses an AsyncMethodRunner to resolve t
Kunihiko Sakamoto
2017/01/11 05:25:45
FontFaceSet::notifyLoaded() is OK, but LoadFontPro
adithyas
2017/01/11 17:59:39
Ahh okay, I've changed it to run the callbacks in
| |
| 366 else | 372 else |
| 367 callbacks[i]->notifyError(this); | 373 callbacks[i]->notifyError(this); |
| 368 } | 374 } |
| 369 } | 375 } |
| 370 } | 376 } |
| 371 | 377 |
| 372 void FontFace::setError(DOMException* error) { | 378 void FontFace::setError(DOMException* error) { |
| 373 if (!m_error) | 379 if (!m_error) |
| 374 m_error = error ? error : DOMException::create(NetworkError); | 380 m_error = error ? error : DOMException::create(NetworkError); |
| 375 setLoadStatus(Error); | 381 setLoadStatus(Error); |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 640 | 646 |
| 641 bool FontFace::hadBlankText() const { | 647 bool FontFace::hadBlankText() const { |
| 642 return m_cssFontFace->hadBlankText(); | 648 return m_cssFontFace->hadBlankText(); |
| 643 } | 649 } |
| 644 | 650 |
| 645 bool FontFace::hasPendingActivity() const { | 651 bool FontFace::hasPendingActivity() const { |
| 646 return m_status == Loading && getExecutionContext(); | 652 return m_status == Loading && getExecutionContext(); |
| 647 } | 653 } |
| 648 | 654 |
| 649 } // namespace blink | 655 } // namespace blink |
| OLD | NEW |