| Index: Source/core/css/FontFaceSet.cpp
|
| diff --git a/Source/core/css/FontFaceSet.cpp b/Source/core/css/FontFaceSet.cpp
|
| index d241d24e38b7cab0d45e5786baf5ad30f7a7d569..07abbdd1c89cab1fa06c5610f4be436dc76d080c 100644
|
| --- a/Source/core/css/FontFaceSet.cpp
|
| +++ b/Source/core/css/FontFaceSet.cpp
|
| @@ -50,12 +50,12 @@ static const char* const defaultFontFamily = "sans-serif";
|
|
|
| class LoadFontPromiseResolver : public CSSSegmentedFontFace::LoadFontCallback {
|
| public:
|
| - static PassRefPtr<LoadFontPromiseResolver> create(const FontFamily& family, ScriptExecutionContext* context)
|
| + static PassRefPtr<LoadFontPromiseResolver> create(const FontFamily& family, ScriptPromise promise, ScriptExecutionContext* context)
|
| {
|
| int numFamilies = 0;
|
| for (const FontFamily* f = &family; f; f = f->next())
|
| numFamilies++;
|
| - return adoptRef<LoadFontPromiseResolver>(new LoadFontPromiseResolver(numFamilies, context));
|
| + return adoptRef<LoadFontPromiseResolver>(new LoadFontPromiseResolver(numFamilies, promise, context));
|
| }
|
|
|
| virtual void notifyLoaded(CSSSegmentedFontFace*) OVERRIDE;
|
| @@ -64,19 +64,12 @@ public:
|
| void error(Document*);
|
| void resolve();
|
|
|
| - ScriptPromise promise()
|
| - {
|
| - ScriptPromise promise = m_resolver->promise();
|
| - m_resolver->detachPromise();
|
| - return promise;
|
| - }
|
| -
|
| private:
|
| - LoadFontPromiseResolver(int numLoading, ScriptExecutionContext* context)
|
| + LoadFontPromiseResolver(int numLoading, ScriptPromise promise, ScriptExecutionContext* context)
|
| : m_numLoading(numLoading)
|
| , m_errorOccured(false)
|
| , m_scriptState(ScriptState::current())
|
| - , m_resolver(ScriptPromiseResolver::create(context))
|
| + , m_resolver(ScriptPromiseResolver::create(promise, context))
|
| { }
|
|
|
| int m_numLoading;
|
| @@ -116,33 +109,26 @@ void LoadFontPromiseResolver::resolve()
|
| if (m_errorOccured)
|
| m_resolver->reject(ScriptValue::createNull());
|
| else
|
| - m_resolver->fulfill(ScriptValue::createNull());
|
| + m_resolver->resolve(ScriptValue::createNull());
|
| }
|
|
|
| class FontsReadyPromiseResolver {
|
| public:
|
| - static PassOwnPtr<FontsReadyPromiseResolver> create(ScriptExecutionContext* context)
|
| + static PassOwnPtr<FontsReadyPromiseResolver> create(ScriptPromise promise, ScriptExecutionContext* context)
|
| {
|
| - return adoptPtr(new FontsReadyPromiseResolver(context));
|
| + return adoptPtr(new FontsReadyPromiseResolver(promise, context));
|
| }
|
|
|
| void call(PassRefPtr<FontFaceSet> fontFaceSet)
|
| {
|
| ScriptScope scope(m_scriptState);
|
| - m_resolver->fulfill(fontFaceSet);
|
| - }
|
| -
|
| - ScriptPromise promise()
|
| - {
|
| - ScriptPromise promise = m_resolver->promise();
|
| - m_resolver->detachPromise();
|
| - return promise;
|
| + m_resolver->resolve(fontFaceSet);
|
| }
|
|
|
| private:
|
| - FontsReadyPromiseResolver(ScriptExecutionContext* context)
|
| + FontsReadyPromiseResolver(ScriptPromise promise, ScriptExecutionContext* context)
|
| : m_scriptState(ScriptState::current())
|
| - , m_resolver(ScriptPromiseResolver::create(context))
|
| + , m_resolver(ScriptPromiseResolver::create(promise, context))
|
| { }
|
| ScriptState* m_scriptState;
|
| RefPtr<ScriptPromiseResolver> m_resolver;
|
| @@ -291,8 +277,8 @@ void FontFaceSet::queueDoneEvent(FontFace* fontFace)
|
|
|
| ScriptPromise FontFaceSet::ready()
|
| {
|
| - OwnPtr<FontsReadyPromiseResolver> resolver = FontsReadyPromiseResolver::create(scriptExecutionContext());
|
| - ScriptPromise promise = resolver->promise();
|
| + ScriptPromise promise = ScriptPromise::create(scriptExecutionContext());
|
| + OwnPtr<FontsReadyPromiseResolver> resolver = FontsReadyPromiseResolver::create(promise, scriptExecutionContext());
|
| m_readyResolvers.append(resolver.release());
|
| if (!m_timer.isActive())
|
| m_timer.startOneShot(0);
|
| @@ -365,7 +351,8 @@ ScriptPromise FontFaceSet::load(const String& fontString, const String&, Excepti
|
| }
|
|
|
| Document* d = document();
|
| - RefPtr<LoadFontPromiseResolver> resolver = LoadFontPromiseResolver::create(font.family(), scriptExecutionContext());
|
| + ScriptPromise promise = ScriptPromise::create(scriptExecutionContext());
|
| + RefPtr<LoadFontPromiseResolver> resolver = LoadFontPromiseResolver::create(font.family(), promise, scriptExecutionContext());
|
| for (const FontFamily* f = &font.family(); f; f = f->next()) {
|
| CSSSegmentedFontFace* face = d->styleResolver()->fontSelector()->getFontFace(font.fontDescription(), f->family());
|
| if (!face) {
|
| @@ -374,7 +361,7 @@ ScriptPromise FontFaceSet::load(const String& fontString, const String&, Excepti
|
| }
|
| face->loadFont(font.fontDescription(), resolver);
|
| }
|
| - return resolver->promise();
|
| + return promise;
|
| }
|
|
|
| bool FontFaceSet::check(const String& fontString, const String&, ExceptionState& es)
|
|
|