void NotificationImageLoader::didFinishLoading(unsigned long resourceIdentifier, double finishTime) { // If this has been stopped it is not desirable to trigger further work, // there is a shutdown of some sort in progress. if (m_stopped) return; DEFINE_THREAD_SAFE_STATIC_LOCAL( CustomCountHistogram, finishedTimeHistogram, new CustomCountHistogram("Notifications.Icon.LoadFinishTime", 1, 1000 * 60 * 60 /* 1 hour max */, 50 /* buckets */)); finishedTimeHistogram.count(monotonicallyIncreasingTimeMS() - m_startTime); if (m_data) { DEFINE_THREAD_SAFE_STATIC_LOCAL( CustomCountHistogram, fileSizeHistogram, new CustomCountHistogram("Notifications.Icon.FileSize", 1, 10000000 /* ~10mb max */, 50 /* buckets */)); fileSizeHistogram.count(m_data->size()); std::unique_ptr<ImageDecoder> decoder = ImageDecoder::create( m_data, true /* dataComplete */, ImageDecoder::AlphaPremultiplied, ImageDecoder::ColorSpaceApplied); if (decoder) { // The |ImageFrame*| is owned by the decoder. ImageFrame* imageFrame = decoder->frameBufferAtIndex(0); if (imageFrame) { (*m_imageCallback)(imageFrame->bitmap()); return; } } } runCallbackWithEmptyBitmap(); }
void NotificationImageLoader::didFail(const ResourceError& error) { DEFINE_THREAD_SAFE_STATIC_LOCAL(CustomCountHistogram, failedTimeHistogram, new CustomCountHistogram("Notifications.Icon.LoadFailTime", 1, 1000 * 60 * 60 /* 1 hour max */, 50 /* buckets */)); failedTimeHistogram.count(monotonicallyIncreasingTimeMS() - m_startTime); runCallbackWithEmptyBitmap(); }
void NotificationImageLoader::didFailRedirectCheck() { runCallbackWithEmptyBitmap(); }