Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef NotificationImageLoader_h | |
| 6 #define NotificationImageLoader_h | |
| 7 | |
| 8 #include "core/loader/ThreadableLoader.h" | |
| 9 #include "core/loader/ThreadableLoaderClient.h" | |
| 10 #include "platform/SharedBuffer.h" | |
| 11 #include "platform/heap/Handle.h" | |
| 12 #include "third_party/skia/include/core/SkBitmap.h" | |
|
Peter Beverloo
2016/04/18 15:22:37
nit: could forward declare SkBitmap
Michael van Ouwerkerk
2016/04/18 17:03:15
Done.
| |
| 13 #include "wtf/Functional.h" | |
| 14 #include "wtf/OwnPtr.h" | |
| 15 #include "wtf/PassOwnPtr.h" | |
| 16 #include "wtf/RefPtr.h" | |
| 17 | |
| 18 namespace blink { | |
| 19 | |
| 20 class ExecutionContext; | |
| 21 class KURL; | |
| 22 class ResourceError; | |
| 23 | |
| 24 // Asynchronously downloads an image when given a url, decodes the loaded data, | |
| 25 // and passes the bitmap to the given callback. | |
| 26 class NotificationImageLoader final : public GarbageCollectedFinalized<Notificat ionImageLoader>, public ThreadableLoaderClient { | |
| 27 public: | |
| 28 // The bitmap may be empty if the request failed or the image data could not | |
| 29 // be decoded. | |
| 30 using ImageCallback = Function<void(const SkBitmap&)>; | |
| 31 | |
| 32 NotificationImageLoader(); | |
| 33 ~NotificationImageLoader() override; | |
| 34 | |
| 35 // Asynchronously downloads an image from the given url, decodes the loaded | |
| 36 // data, and passes the bitmap to the callback. | |
| 37 void start(ExecutionContext*, const KURL&, PassOwnPtr<ImageCallback>); | |
| 38 | |
| 39 // Cancels the pending load, if there is one. The |m_imageCallback| will not | |
| 40 // be run. | |
| 41 void stop(); | |
| 42 | |
| 43 // ThreadableLoaderClient interface. | |
| 44 void didReceiveData(const char* data, unsigned length) override; | |
| 45 void didFinishLoading(unsigned long resourceIdentifier, double finishTime) o verride; | |
| 46 void didFail(const ResourceError&) override; | |
| 47 void didFailRedirectCheck() override; | |
| 48 | |
| 49 DEFINE_INLINE_TRACE() {} | |
| 50 | |
| 51 private: | |
| 52 void runCallbackWithEmptyBitmap(); | |
| 53 | |
| 54 bool m_stopped; | |
| 55 RefPtr<SharedBuffer> m_data; | |
| 56 OwnPtr<ImageCallback> m_imageCallback; | |
| 57 OwnPtr<ThreadableLoader> m_threadableLoader; | |
| 58 }; | |
| 59 | |
| 60 } // namespace blink | |
| 61 | |
| 62 #endif // NotificationImageLoader_h | |
| OLD | NEW |