OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/css/RemoteFontFaceSource.h" | 5 #include "core/css/RemoteFontFaceSource.h" |
6 | 6 |
7 #include "core/css/CSSCustomFontData.h" | 7 #include "core/css/CSSCustomFontData.h" |
8 #include "core/css/CSSFontFace.h" | 8 #include "core/css/CSSFontFace.h" |
9 #include "core/css/CSSFontSelector.h" | 9 #include "core/css/CSSFontSelector.h" |
10 #include "core/dom/Document.h" | 10 #include "core/dom/Document.h" |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 return; | 256 return; |
257 int duration = static_cast<int>(currentTimeMS() - m_blankPaintTime); | 257 int duration = static_cast<int>(currentTimeMS() - m_blankPaintTime); |
258 DEFINE_STATIC_LOCAL(CustomCountHistogram, blankTextShownTimeHistogram, ("Web
Font.BlankTextShownTime", 0, 10000, 50)); | 258 DEFINE_STATIC_LOCAL(CustomCountHistogram, blankTextShownTimeHistogram, ("Web
Font.BlankTextShownTime", 0, 10000, 50)); |
259 blankTextShownTimeHistogram.count(duration); | 259 blankTextShownTimeHistogram.count(duration); |
260 m_blankPaintTime = -1; | 260 m_blankPaintTime = -1; |
261 } | 261 } |
262 | 262 |
263 void RemoteFontFaceSource::FontLoadHistograms::recordRemoteFont(const FontResour
ce* font, bool isLoadedFromMemoryCache) | 263 void RemoteFontFaceSource::FontLoadHistograms::recordRemoteFont(const FontResour
ce* font, bool isLoadedFromMemoryCache) |
264 { | 264 { |
265 if (m_loadStartTime > 0 && font && !font->isLoading()) { | 265 if (m_loadStartTime > 0 && font && !font->isLoading()) { |
266 int duration = static_cast<int>(currentTimeMS() - m_loadStartTime); | |
267 recordLoadTimeHistogram(font, duration); | |
268 m_loadStartTime = -1; | |
269 | |
270 enum { Miss, DiskHit, DataUrl, MemoryHit, CacheHitEnumMax }; | 266 enum { Miss, DiskHit, DataUrl, MemoryHit, CacheHitEnumMax }; |
271 int histogramValue = font->url().protocolIsData() ? DataUrl | 267 int cacheHitValue = font->url().protocolIsData() ? DataUrl |
272 : isLoadedFromMemoryCache ? MemoryHit | 268 : isLoadedFromMemoryCache ? MemoryHit |
273 : font->response().wasCached() ? DiskHit | 269 : font->response().wasCached() ? DiskHit |
274 : Miss; | 270 : Miss; |
275 DEFINE_STATIC_LOCAL(EnumerationHistogram, cacheHitHistogram, ("WebFont.C
acheHit", CacheHitEnumMax)); | 271 DEFINE_STATIC_LOCAL(EnumerationHistogram, cacheHitHistogram, ("WebFont.C
acheHit", CacheHitEnumMax)); |
276 cacheHitHistogram.count(histogramValue); | 272 cacheHitHistogram.count(cacheHitValue); |
| 273 |
| 274 int duration = static_cast<int>(currentTimeMS() - m_loadStartTime); |
| 275 recordLoadTimeHistogram(font, duration, cacheHitValue == Miss); |
| 276 m_loadStartTime = -1; |
277 | 277 |
278 enum { CORSFail, CORSSuccess, CORSEnumMax }; | 278 enum { CORSFail, CORSSuccess, CORSEnumMax }; |
279 int corsValue = font->isCORSFailed() ? CORSFail : CORSSuccess; | 279 int corsValue = font->isCORSFailed() ? CORSFail : CORSSuccess; |
280 DEFINE_STATIC_LOCAL(EnumerationHistogram, corsHistogram, ("WebFont.CORSS
uccess", CORSEnumMax)); | 280 DEFINE_STATIC_LOCAL(EnumerationHistogram, corsHistogram, ("WebFont.CORSS
uccess", CORSEnumMax)); |
281 corsHistogram.count(corsValue); | 281 corsHistogram.count(corsValue); |
282 } | 282 } |
283 } | 283 } |
284 | 284 |
285 void RemoteFontFaceSource::FontLoadHistograms::recordLoadTimeHistogram(const Fon
tResource* font, int duration) | 285 void RemoteFontFaceSource::FontLoadHistograms::recordLoadTimeHistogram(const Fon
tResource* font, int duration, bool isLoadedFromNetwork) |
286 { | 286 { |
287 if (font->errorOccurred()) { | 287 if (font->errorOccurred()) { |
288 DEFINE_STATIC_LOCAL(CustomCountHistogram, loadErrorHistogram, ("WebFont.
DownloadTime.LoadError", 0, 10000, 50)); | 288 DEFINE_STATIC_LOCAL(CustomCountHistogram, loadErrorHistogram, ("WebFont.
DownloadTime.LoadError", 0, 10000, 50)); |
| 289 DEFINE_STATIC_LOCAL(CustomCountHistogram, missedCacheLoadErrorHistogram,
("WebFont.MissedCache.DownloadTime.LoadError", 0, 10000, 50)); |
289 loadErrorHistogram.count(duration); | 290 loadErrorHistogram.count(duration); |
| 291 if (isLoadedFromNetwork) |
| 292 missedCacheLoadErrorHistogram.count(duration); |
290 return; | 293 return; |
291 } | 294 } |
292 | 295 |
293 unsigned size = font->encodedSize(); | 296 unsigned size = font->encodedSize(); |
294 if (size < 10 * 1024) { | 297 if (size < 10 * 1024) { |
295 DEFINE_STATIC_LOCAL(CustomCountHistogram, under10kHistogram, ("WebFont.D
ownloadTime.0.Under10KB", 0, 10000, 50)); | 298 DEFINE_STATIC_LOCAL(CustomCountHistogram, under10kHistogram, ("WebFont.D
ownloadTime.0.Under10KB", 0, 10000, 50)); |
| 299 DEFINE_STATIC_LOCAL(CustomCountHistogram, missedCacheUnder10kHistogram,
("WebFont.MissedCache.DownloadTime.0.Under10KB", 0, 10000, 50)); |
296 under10kHistogram.count(duration); | 300 under10kHistogram.count(duration); |
| 301 if (isLoadedFromNetwork) |
| 302 missedCacheUnder10kHistogram.count(duration); |
297 return; | 303 return; |
298 } | 304 } |
299 if (size < 50 * 1024) { | 305 if (size < 50 * 1024) { |
300 DEFINE_STATIC_LOCAL(CustomCountHistogram, under50kHistogram, ("WebFont.D
ownloadTime.1.10KBTo50KB", 0, 10000, 50)); | 306 DEFINE_STATIC_LOCAL(CustomCountHistogram, under50kHistogram, ("WebFont.D
ownloadTime.1.10KBTo50KB", 0, 10000, 50)); |
| 307 DEFINE_STATIC_LOCAL(CustomCountHistogram, missedCacheUnder50kHistogram,
("WebFont.MissedCache.DownloadTime.1.10KBTo50KB", 0, 10000, 50)); |
301 under50kHistogram.count(duration); | 308 under50kHistogram.count(duration); |
| 309 if (isLoadedFromNetwork) |
| 310 missedCacheUnder50kHistogram.count(duration); |
302 return; | 311 return; |
303 } | 312 } |
304 if (size < 100 * 1024) { | 313 if (size < 100 * 1024) { |
305 DEFINE_STATIC_LOCAL(CustomCountHistogram, under100kHistogram, ("WebFont.
DownloadTime.2.50KBTo100KB", 0, 10000, 50)); | 314 DEFINE_STATIC_LOCAL(CustomCountHistogram, under100kHistogram, ("WebFont.
DownloadTime.2.50KBTo100KB", 0, 10000, 50)); |
| 315 DEFINE_STATIC_LOCAL(CustomCountHistogram, missedCacheUnder100kHistogram,
("WebFont.MissedCache.DownloadTime.2.50KBTo100KB", 0, 10000, 50)); |
306 under100kHistogram.count(duration); | 316 under100kHistogram.count(duration); |
| 317 if (isLoadedFromNetwork) |
| 318 missedCacheUnder100kHistogram.count(duration); |
307 return; | 319 return; |
308 } | 320 } |
309 if (size < 1024 * 1024) { | 321 if (size < 1024 * 1024) { |
310 DEFINE_STATIC_LOCAL(CustomCountHistogram, under1mbHistogram, ("WebFont.D
ownloadTime.3.100KBTo1MB", 0, 10000, 50)); | 322 DEFINE_STATIC_LOCAL(CustomCountHistogram, under1mbHistogram, ("WebFont.D
ownloadTime.3.100KBTo1MB", 0, 10000, 50)); |
| 323 DEFINE_STATIC_LOCAL(CustomCountHistogram, missedCacheUnder1mbHistogram,
("WebFont.MissedCache.DownloadTime.3.100KBTo1MB", 0, 10000, 50)); |
311 under1mbHistogram.count(duration); | 324 under1mbHistogram.count(duration); |
| 325 if (isLoadedFromNetwork) |
| 326 missedCacheUnder1mbHistogram.count(duration); |
312 return; | 327 return; |
313 } | 328 } |
314 DEFINE_STATIC_LOCAL(CustomCountHistogram, over1mbHistogram, ("WebFont.Downlo
adTime.4.Over1MB", 0, 10000, 50)); | 329 DEFINE_STATIC_LOCAL(CustomCountHistogram, over1mbHistogram, ("WebFont.Downlo
adTime.4.Over1MB", 0, 10000, 50)); |
| 330 DEFINE_STATIC_LOCAL(CustomCountHistogram, missedCacheOver1mbHistogram, ("Web
Font.MissedCache.DownloadTime.4.Over1MB", 0, 10000, 50)); |
315 over1mbHistogram.count(duration); | 331 over1mbHistogram.count(duration); |
| 332 if (isLoadedFromNetwork) |
| 333 missedCacheOver1mbHistogram.count(duration); |
316 } | 334 } |
317 | 335 |
318 void RemoteFontFaceSource::FontLoadHistograms::recordInterventionResult(bool isT
riggered, bool isLoadedFromNetwork) | 336 void RemoteFontFaceSource::FontLoadHistograms::recordInterventionResult(bool isT
riggered, bool isLoadedFromNetwork) |
319 { | 337 { |
320 // interventionResult takes 0-3 values. | 338 // interventionResult takes 0-3 values. |
321 int interventionResult = 0; | 339 int interventionResult = 0; |
322 if (m_isLongLimitExceeded) | 340 if (m_isLongLimitExceeded) |
323 interventionResult |= 1 << 0; | 341 interventionResult |= 1 << 0; |
324 if (isTriggered) | 342 if (isTriggered) |
325 interventionResult |= 1 << 1; | 343 interventionResult |= 1 << 1; |
326 const int boundary = 1 << 2; | 344 const int boundary = 1 << 2; |
327 | 345 |
328 DEFINE_STATIC_LOCAL(EnumerationHistogram, interventionHistogram, ("WebFont.I
nterventionResult", boundary)); | 346 DEFINE_STATIC_LOCAL(EnumerationHistogram, interventionHistogram, ("WebFont.I
nterventionResult", boundary)); |
329 DEFINE_STATIC_LOCAL(EnumerationHistogram, missedCacheInterventionHistogram,
("WebFont.InterventionResult.MissedCache", boundary)); | 347 DEFINE_STATIC_LOCAL(EnumerationHistogram, missedCacheInterventionHistogram,
("WebFont.InterventionResult.MissedCache", boundary)); |
330 interventionHistogram.count(interventionResult); | 348 interventionHistogram.count(interventionResult); |
331 if (isLoadedFromNetwork) | 349 if (isLoadedFromNetwork) |
332 missedCacheInterventionHistogram.count(interventionResult); | 350 missedCacheInterventionHistogram.count(interventionResult); |
333 } | 351 } |
334 | 352 |
335 } // namespace blink | 353 } // namespace blink |
OLD | NEW |