Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(631)

Unified Diff: Source/core/css/FontFaceSet.cpp

Issue 26004002: Decouple ScriptPromise creation from ScriptPromiseResolver. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: rebase Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698