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

Unified Diff: third_party/WebKit/Source/core/fetch/FontResource.h

Issue 2453813004: WebFonts cache-aware timeout adaptation (Closed)
Patch Set: rebase, disable cache-aware behavior for font-display: swap, histogram Created 4 years, 1 month 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: third_party/WebKit/Source/core/fetch/FontResource.h
diff --git a/third_party/WebKit/Source/core/fetch/FontResource.h b/third_party/WebKit/Source/core/fetch/FontResource.h
index e83ab315a525782642b34205c432c2d1cc84114f..5d191676fdda0b9fe85e1fce4d65117c56606b18 100644
--- a/third_party/WebKit/Source/core/fetch/FontResource.h
+++ b/third_party/WebKit/Source/core/fetch/FontResource.h
@@ -67,6 +67,8 @@ class CORE_EXPORT FontResource final : public Resource {
bool italic,
FontOrientation = FontOrientation::Horizontal);
+ void willReloadAfterDiskCacheMiss() override;
+
private:
class FontResourceFactory : public ResourceFactory {
public:
@@ -83,12 +85,16 @@ class CORE_EXPORT FontResource final : public Resource {
void checkNotify() override;
void fontLoadShortLimitCallback(TimerBase*);
void fontLoadLongLimitCallback(TimerBase*);
+ void notifyClientsShortLimitExceeded();
+ void notifyClientsLongLimitExceeded();
+ // This is used in UMA histograms, should not change order.
enum LoadLimitState {
LoadNotStarted,
UnderLimit,
ShortLimitExceeded,
- LongLimitExceeded
+ LongLimitExceeded,
+ LoadLimitStateEnumMax
};
std::unique_ptr<FontCustomPlatformData> m_fontData;
@@ -110,6 +116,11 @@ class FontResourceClient : public ResourceClient {
return client->getResourceClientType() == FontType;
}
ResourceClientType getResourceClientType() const final { return FontType; }
+
+ // If cache-aware loading is activated, both callbacks will be blocked until
+ // disk cache miss. If called on cache miss, calls to addClient() and
+ // removeClient() is prohibited to prevent race issues regarding current
+ // loading state.
virtual void fontLoadShortLimitExceeded(FontResource*) {}
virtual void fontLoadLongLimitExceeded(FontResource*) {}
};

Powered by Google App Engine
This is Rietveld 408576698