OLD | NEW |
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 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 if (m_loadLimitState == ShortLimitExceeded || | 98 if (m_loadLimitState == ShortLimitExceeded || |
99 m_loadLimitState == LongLimitExceeded) | 99 m_loadLimitState == LongLimitExceeded) |
100 static_cast<FontResourceClient*>(c)->fontLoadShortLimitExceeded(this); | 100 static_cast<FontResourceClient*>(c)->fontLoadShortLimitExceeded(this); |
101 if (m_loadLimitState == LongLimitExceeded) | 101 if (m_loadLimitState == LongLimitExceeded) |
102 static_cast<FontResourceClient*>(c)->fontLoadLongLimitExceeded(this); | 102 static_cast<FontResourceClient*>(c)->fontLoadLongLimitExceeded(this); |
103 } | 103 } |
104 | 104 |
105 void FontResource::setRevalidatingRequest(const ResourceRequest& request) { | 105 void FontResource::setRevalidatingRequest(const ResourceRequest& request) { |
106 // Reload will use the same object, and needs to reset |m_loadLimitState| | 106 // Reload will use the same object, and needs to reset |m_loadLimitState| |
107 // before any didAddClient() is called again. | 107 // before any didAddClient() is called again. |
108 // TODO(toyoshim): Change following CHECKs to DCHECKs once we confirm these do | 108 DCHECK(isLoaded()); |
109 // not fire. | 109 DCHECK(!m_fontLoadShortLimitTimer.isActive()); |
110 CHECK(isLoaded()); | 110 DCHECK(!m_fontLoadLongLimitTimer.isActive()); |
111 CHECK(!m_fontLoadShortLimitTimer.isActive()); | |
112 CHECK(!m_fontLoadLongLimitTimer.isActive()); | |
113 m_loadLimitState = LoadNotStarted; | 111 m_loadLimitState = LoadNotStarted; |
114 Resource::setRevalidatingRequest(request); | 112 Resource::setRevalidatingRequest(request); |
115 } | 113 } |
116 | 114 |
117 void FontResource::startLoadLimitTimers() { | 115 void FontResource::startLoadLimitTimers() { |
118 // TODO(toyoshim): Change CHECK() to DCHECK() if this can survive on Canary | 116 DCHECK(isLoading()); |
119 // for some days. http://crbug.com/670638 | |
120 CHECK(isLoading()); | |
121 DCHECK_EQ(m_loadLimitState, LoadNotStarted); | 117 DCHECK_EQ(m_loadLimitState, LoadNotStarted); |
122 m_loadLimitState = UnderLimit; | 118 m_loadLimitState = UnderLimit; |
123 m_fontLoadShortLimitTimer.startOneShot(fontLoadWaitShortLimitSec, | 119 m_fontLoadShortLimitTimer.startOneShot(fontLoadWaitShortLimitSec, |
124 BLINK_FROM_HERE); | 120 BLINK_FROM_HERE); |
125 m_fontLoadLongLimitTimer.startOneShot(fontLoadWaitLongLimitSec, | 121 m_fontLoadLongLimitTimer.startOneShot(fontLoadWaitLongLimitSec, |
126 BLINK_FROM_HERE); | 122 BLINK_FROM_HERE); |
127 } | 123 } |
128 | 124 |
129 bool FontResource::ensureCustomFontData() { | 125 bool FontResource::ensureCustomFontData() { |
130 if (!m_fontData && !errorOccurred() && !isLoading()) { | 126 if (!m_fontData && !errorOccurred() && !isLoading()) { |
(...skipping 13 matching lines...) Expand all Loading... |
144 FontPlatformData FontResource::platformDataFromCustomData( | 140 FontPlatformData FontResource::platformDataFromCustomData( |
145 float size, | 141 float size, |
146 bool bold, | 142 bool bold, |
147 bool italic, | 143 bool italic, |
148 FontOrientation orientation) { | 144 FontOrientation orientation) { |
149 DCHECK(m_fontData); | 145 DCHECK(m_fontData); |
150 return m_fontData->fontPlatformData(size, bold, italic, orientation); | 146 return m_fontData->fontPlatformData(size, bold, italic, orientation); |
151 } | 147 } |
152 | 148 |
153 void FontResource::fontLoadShortLimitCallback(TimerBase*) { | 149 void FontResource::fontLoadShortLimitCallback(TimerBase*) { |
154 // TODO(toyoshim): Change CHECK() to DCHECK() and remove if(!isLoading()) if | 150 DCHECK(isLoading()); |
155 // this can survive on Canary for some days. http://crbug.com/670638 | |
156 CHECK(isLoading()); | |
157 if (!isLoading()) | |
158 return; | |
159 DCHECK_EQ(m_loadLimitState, UnderLimit); | 151 DCHECK_EQ(m_loadLimitState, UnderLimit); |
160 m_loadLimitState = ShortLimitExceeded; | 152 m_loadLimitState = ShortLimitExceeded; |
161 ResourceClientWalker<FontResourceClient> walker(clients()); | 153 ResourceClientWalker<FontResourceClient> walker(clients()); |
162 while (FontResourceClient* client = walker.next()) | 154 while (FontResourceClient* client = walker.next()) |
163 client->fontLoadShortLimitExceeded(this); | 155 client->fontLoadShortLimitExceeded(this); |
164 } | 156 } |
165 | 157 |
166 void FontResource::fontLoadLongLimitCallback(TimerBase*) { | 158 void FontResource::fontLoadLongLimitCallback(TimerBase*) { |
167 // TODO(toyoshim): Change CHECK() to DCHECK() and remove if(!isLoading()) if | 159 DCHECK(isLoading()); |
168 // this can survive on Canary for some days. http://crbug.com/670638 | |
169 CHECK(isLoading()); | |
170 if (!isLoading()) | |
171 return; | |
172 DCHECK_EQ(m_loadLimitState, ShortLimitExceeded); | 160 DCHECK_EQ(m_loadLimitState, ShortLimitExceeded); |
173 m_loadLimitState = LongLimitExceeded; | 161 m_loadLimitState = LongLimitExceeded; |
174 ResourceClientWalker<FontResourceClient> walker(clients()); | 162 ResourceClientWalker<FontResourceClient> walker(clients()); |
175 while (FontResourceClient* client = walker.next()) | 163 while (FontResourceClient* client = walker.next()) |
176 client->fontLoadLongLimitExceeded(this); | 164 client->fontLoadLongLimitExceeded(this); |
177 } | 165 } |
178 | 166 |
179 void FontResource::allClientsAndObserversRemoved() { | 167 void FontResource::allClientsAndObserversRemoved() { |
180 m_fontData.reset(); | 168 m_fontData.reset(); |
181 Resource::allClientsAndObserversRemoved(); | 169 Resource::allClientsAndObserversRemoved(); |
(...skipping 23 matching lines...) Expand all Loading... |
205 Resource::onMemoryDump(level, memoryDump); | 193 Resource::onMemoryDump(level, memoryDump); |
206 if (!m_fontData) | 194 if (!m_fontData) |
207 return; | 195 return; |
208 const String name = getMemoryDumpName() + "/decoded_webfont"; | 196 const String name = getMemoryDumpName() + "/decoded_webfont"; |
209 WebMemoryAllocatorDump* dump = memoryDump->createMemoryAllocatorDump(name); | 197 WebMemoryAllocatorDump* dump = memoryDump->createMemoryAllocatorDump(name); |
210 dump->addScalar("size", "bytes", m_fontData->dataSize()); | 198 dump->addScalar("size", "bytes", m_fontData->dataSize()); |
211 memoryDump->addSuballocation(dump->guid(), "malloc"); | 199 memoryDump->addSuballocation(dump->guid(), "malloc"); |
212 } | 200 } |
213 | 201 |
214 } // namespace blink | 202 } // namespace blink |
OLD | NEW |