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

Side by Side Diff: third_party/WebKit/Source/core/fetch/FontResource.cpp

Issue 1802123002: Unify Resource loading status tracking (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 9 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Torch Mobile, Inc. 3 * Copyright (C) 2009 Torch Mobile, Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 72
73 PassRefPtrWillBeRawPtr<FontResource> FontResource::fetch(FetchRequest& request, ResourceFetcher* fetcher) 73 PassRefPtrWillBeRawPtr<FontResource> FontResource::fetch(FetchRequest& request, ResourceFetcher* fetcher)
74 { 74 {
75 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone ); 75 ASSERT(request.resourceRequest().frameType() == WebURLRequest::FrameTypeNone );
76 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon textFont); 76 request.mutableResourceRequest().setRequestContext(WebURLRequest::RequestCon textFont);
77 return toFontResource(fetcher->requestResource(request, FontResourceFactory( ))); 77 return toFontResource(fetcher->requestResource(request, FontResourceFactory( )));
78 } 78 }
79 79
80 FontResource::FontResource(const ResourceRequest& resourceRequest, const Resourc eLoaderOptions& options) 80 FontResource::FontResource(const ResourceRequest& resourceRequest, const Resourc eLoaderOptions& options)
81 : Resource(resourceRequest, Font, options) 81 : Resource(resourceRequest, Font, options)
82 , m_state(Unloaded) 82 , m_loadLimitState(UnderLimit)
83 , m_corsFailed(false) 83 , m_corsFailed(false)
84 , m_fontLoadShortLimitTimer(this, &FontResource::fontLoadShortLimitCallback) 84 , m_fontLoadShortLimitTimer(this, &FontResource::fontLoadShortLimitCallback)
85 , m_fontLoadLongLimitTimer(this, &FontResource::fontLoadLongLimitCallback) 85 , m_fontLoadLongLimitTimer(this, &FontResource::fontLoadLongLimitCallback)
86 { 86 {
87 } 87 }
88 88
89 FontResource::~FontResource() 89 FontResource::~FontResource()
90 { 90 {
91 } 91 }
92 92
93 void FontResource::didScheduleLoad() 93 void FontResource::didScheduleLoad()
94 { 94 {
95 if (m_state == Unloaded) 95 if (getStatus() == NotStarted)
96 m_state = LoadScheduled; 96 setStatus(LoadStartScheduled);
97 } 97 }
98 98
99 void FontResource::didUnscheduleLoad() 99 void FontResource::didUnscheduleLoad()
100 { 100 {
101 if (m_state == LoadScheduled) 101 if (getStatus() == LoadStartScheduled)
102 m_state = Unloaded; 102 setStatus(NotStarted);
103 } 103 }
104 104
105 void FontResource::load(ResourceFetcher*) 105 void FontResource::load(ResourceFetcher*)
106 { 106 {
107 // Don't load the file yet. Wait for an access before triggering the load. 107 // Don't load the file yet. Wait for an access before triggering the load.
108 setLoading(true);
109 if (!m_revalidatingRequest.isNull()) 108 if (!m_revalidatingRequest.isNull())
110 m_state = Unloaded; 109 setStatus(NotStarted);
111 } 110 }
112 111
113 void FontResource::didAddClient(ResourceClient* c) 112 void FontResource::didAddClient(ResourceClient* c)
114 { 113 {
115 ASSERT(FontResourceClient::isExpectedType(c)); 114 ASSERT(FontResourceClient::isExpectedType(c));
116 Resource::didAddClient(c); 115 Resource::didAddClient(c);
117 if (!isLoading()) 116 if (isLoaded())
118 static_cast<FontResourceClient*>(c)->fontLoaded(this); 117 static_cast<FontResourceClient*>(c)->fontLoaded(this);
119 if (m_state == ShortLimitExceeded || m_state == LongLimitExceeded) 118 if (m_loadLimitState == ShortLimitExceeded || m_loadLimitState == LongLimitE xceeded)
120 static_cast<FontResourceClient*>(c)->fontLoadShortLimitExceeded(this); 119 static_cast<FontResourceClient*>(c)->fontLoadShortLimitExceeded(this);
121 if (m_state == LongLimitExceeded) 120 if (m_loadLimitState == LongLimitExceeded)
122 static_cast<FontResourceClient*>(c)->fontLoadLongLimitExceeded(this); 121 static_cast<FontResourceClient*>(c)->fontLoadLongLimitExceeded(this);
123 } 122 }
124 123
125 void FontResource::beginLoadIfNeeded(ResourceFetcher* dl) 124 void FontResource::beginLoadIfNeeded(ResourceFetcher* dl)
126 { 125 {
127 if (stillNeedsLoad()) { 126 if (stillNeedsLoad()) {
128 m_state = LoadInitiated;
129 Resource::load(dl); 127 Resource::load(dl);
130 m_fontLoadShortLimitTimer.startOneShot(fontLoadWaitShortLimitSec, BLINK_ FROM_HERE); 128 m_fontLoadShortLimitTimer.startOneShot(fontLoadWaitShortLimitSec, BLINK_ FROM_HERE);
131 m_fontLoadLongLimitTimer.startOneShot(fontLoadWaitLongLimitSec, BLINK_FR OM_HERE); 129 m_fontLoadLongLimitTimer.startOneShot(fontLoadWaitLongLimitSec, BLINK_FR OM_HERE);
132 130
133 ResourceClientWalker<FontResourceClient> walker(m_clients); 131 ResourceClientWalker<FontResourceClient> walker(m_clients);
134 while (FontResourceClient* client = walker.next()) 132 while (FontResourceClient* client = walker.next())
135 client->didStartFontLoad(this); 133 client->didStartFontLoad(this);
136 } 134 }
137 } 135 }
138 136
(...skipping 21 matching lines...) Expand all
160 158
161 bool FontResource::isSafeToUnlock() const 159 bool FontResource::isSafeToUnlock() const
162 { 160 {
163 return m_data->hasOneRef(); 161 return m_data->hasOneRef();
164 } 162 }
165 163
166 void FontResource::fontLoadShortLimitCallback(Timer<FontResource>*) 164 void FontResource::fontLoadShortLimitCallback(Timer<FontResource>*)
167 { 165 {
168 if (!isLoading()) 166 if (!isLoading())
169 return; 167 return;
170 ASSERT(m_state == LoadInitiated); 168 ASSERT(m_loadLimitState == UnderLimit);
171 m_state = ShortLimitExceeded; 169 m_loadLimitState = ShortLimitExceeded;
172 ResourceClientWalker<FontResourceClient> walker(m_clients); 170 ResourceClientWalker<FontResourceClient> walker(m_clients);
173 while (FontResourceClient* client = walker.next()) 171 while (FontResourceClient* client = walker.next())
174 client->fontLoadShortLimitExceeded(this); 172 client->fontLoadShortLimitExceeded(this);
175 } 173 }
176 174
177 void FontResource::fontLoadLongLimitCallback(Timer<FontResource>*) 175 void FontResource::fontLoadLongLimitCallback(Timer<FontResource>*)
178 { 176 {
179 if (!isLoading()) 177 if (!isLoading())
180 return; 178 return;
181 ASSERT(m_state == ShortLimitExceeded); 179 ASSERT(m_loadLimitState == ShortLimitExceeded);
182 m_state = LongLimitExceeded; 180 m_loadLimitState = LongLimitExceeded;
183 ResourceClientWalker<FontResourceClient> walker(m_clients); 181 ResourceClientWalker<FontResourceClient> walker(m_clients);
184 while (FontResourceClient* client = walker.next()) 182 while (FontResourceClient* client = walker.next())
185 client->fontLoadLongLimitExceeded(this); 183 client->fontLoadLongLimitExceeded(this);
186 } 184 }
187 185
188 void FontResource::allClientsRemoved() 186 void FontResource::allClientsRemoved()
189 { 187 {
190 m_fontData.clear(); 188 m_fontData.clear();
191 Resource::allClientsRemoved(); 189 Resource::allClientsRemoved();
192 } 190 }
193 191
194 void FontResource::checkNotify() 192 void FontResource::checkNotify()
195 { 193 {
196 m_fontLoadShortLimitTimer.stop(); 194 m_fontLoadShortLimitTimer.stop();
197 m_fontLoadLongLimitTimer.stop(); 195 m_fontLoadLongLimitTimer.stop();
198 ResourceClientWalker<FontResourceClient> w(m_clients); 196 ResourceClientWalker<FontResourceClient> w(m_clients);
199 while (FontResourceClient* c = w.next()) 197 while (FontResourceClient* c = w.next())
200 c->fontLoaded(this); 198 c->fontLoaded(this);
201 } 199 }
202 200
203 } // namespace blink 201 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698