Chromium Code Reviews| Index: third_party/WebKit/Source/core/fetch/FontResource.cpp |
| diff --git a/third_party/WebKit/Source/core/fetch/FontResource.cpp b/third_party/WebKit/Source/core/fetch/FontResource.cpp |
| index 53d9d05c20c865717a827298590ac6423983865e..068ad3b72359bb56b2df16c1a76c6de1a0ff6486 100644 |
| --- a/third_party/WebKit/Source/core/fetch/FontResource.cpp |
| +++ b/third_party/WebKit/Source/core/fetch/FontResource.cpp |
| @@ -38,7 +38,8 @@ |
| namespace blink { |
| -static const double fontLoadWaitLimitSec = 3.0; |
| +static const double fontLoadWaitShortLimitSec = 0.1; |
| +static const double fontLoadWaitLongLimitSec = 3.0; |
|
kinuko
2015/11/01 16:32:04
I assume this corresponds to "'100ms' or less is r
Kunihiko Sakamoto
2015/11/02 05:30:16
Done.
|
| enum FontPackageFormat { |
| PackageFormatUnknown, |
| @@ -77,9 +78,9 @@ ResourcePtr<FontResource> FontResource::fetch(FetchRequest& request, ResourceFet |
| FontResource::FontResource(const ResourceRequest& resourceRequest) |
| : Resource(resourceRequest, Font) |
| , m_state(Unloaded) |
| - , m_exceedsFontLoadWaitLimit(false) |
| , m_corsFailed(false) |
| - , m_fontLoadWaitLimitTimer(this, &FontResource::fontLoadWaitLimitCallback) |
| + , m_fontLoadShortLimitTimer(this, &FontResource::fontLoadShortLimitCallback) |
| + , m_fontLoadLongLimitTimer(this, &FontResource::fontLoadLongLimitCallback) |
| { |
| } |
| @@ -121,7 +122,8 @@ void FontResource::beginLoadIfNeeded(ResourceFetcher* dl) |
| if (m_state != LoadInitiated) { |
| m_state = LoadInitiated; |
| Resource::load(dl, m_options); |
| - m_fontLoadWaitLimitTimer.startOneShot(fontLoadWaitLimitSec, BLINK_FROM_HERE); |
| + m_fontLoadShortLimitTimer.startOneShot(fontLoadWaitShortLimitSec, BLINK_FROM_HERE); |
| + m_fontLoadLongLimitTimer.startOneShot(fontLoadWaitLongLimitSec, BLINK_FROM_HERE); |
| ResourceClientWalker<FontResourceClient> walker(m_clients); |
| while (FontResourceClient* client = walker.next()) |
| @@ -156,14 +158,22 @@ bool FontResource::isSafeToUnlock() const |
| return m_data->hasOneRef(); |
| } |
| -void FontResource::fontLoadWaitLimitCallback(Timer<FontResource>*) |
| +void FontResource::fontLoadShortLimitCallback(Timer<FontResource>*) |
| { |
| if (!isLoading()) |
| return; |
| - m_exceedsFontLoadWaitLimit = true; |
| ResourceClientWalker<FontResourceClient> walker(m_clients); |
| while (FontResourceClient* client = walker.next()) |
| - client->fontLoadWaitLimitExceeded(this); |
| + client->fontLoadShortLimitExceeded(this); |
| +} |
| + |
| +void FontResource::fontLoadLongLimitCallback(Timer<FontResource>*) |
| +{ |
| + if (!isLoading()) |
| + return; |
| + ResourceClientWalker<FontResourceClient> walker(m_clients); |
| + while (FontResourceClient* client = walker.next()) |
| + client->fontLoadLongLimitExceeded(this); |
| } |
| void FontResource::allClientsRemoved() |
| @@ -174,7 +184,8 @@ void FontResource::allClientsRemoved() |
| void FontResource::checkNotify() |
| { |
| - m_fontLoadWaitLimitTimer.stop(); |
| + m_fontLoadShortLimitTimer.stop(); |
| + m_fontLoadLongLimitTimer.stop(); |
| ResourceClientWalker<FontResourceClient> w(m_clients); |
| while (FontResourceClient* c = w.next()) |
| c->fontLoaded(this); |