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) |