Index: third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
diff --git a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
index 70198f1f273d547dd024ccacaf14089673ce908e..ab4aebb07ad2fd562232961211dc5c6a9621492c 100644 |
--- a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
+++ b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
@@ -101,6 +101,7 @@ public: |
, m_maxDecodedBytes(maxDecodedBytes) |
, m_sizeAvailable(false) |
, m_isAllDataReceived(false) |
+ , m_haveUpdatedFrameCount(true) |
, m_failed(false) { } |
virtual ~ImageDecoder() { } |
@@ -123,6 +124,7 @@ public: |
return; |
m_data = data; |
m_isAllDataReceived = allDataReceived; |
+ m_haveUpdatedFrameCount = false; |
onSetData(m_data.get()); |
} |
@@ -147,6 +149,12 @@ public: |
return !m_failed && m_sizeAvailable; |
} |
+ // Whether the requested frame is fully decoded. |
+ inline bool frameIsCompleteAtIndex(size_t frameIndex) const |
+ { |
+ return (frameIndex < m_frameBufferCache.size()) && (m_frameBufferCache[frameIndex].getStatus() == ImageFrame::FrameComplete); |
+ } |
+ |
virtual IntSize size() const { return m_size; } |
// Decoders which downsample images should override this method to |
@@ -202,11 +210,8 @@ public: |
// ImageDecoder-owned pointer. |
ImageFrame* frameBufferAtIndex(size_t); |
- // Whether the requested frame has alpha. |
- virtual bool frameHasAlphaAtIndex(size_t) const; |
- |
// Whether or not the frame is fully received. |
- virtual bool frameIsCompleteAtIndex(size_t) const; |
+ virtual bool frameIsFullyReceivedAtIndex(size_t) const; |
// Duration for displaying a frame in seconds. This method is only used by |
// animated images. |
@@ -217,6 +222,9 @@ public: |
// it has been cleared). |
virtual size_t frameBytesAtIndex(size_t) const; |
+ // Whether the requested frame has alpha. |
+ bool frameHasAlphaAtIndex(size_t) const; |
+ |
ImageOrientation orientation() const { return m_orientation; } |
void setIgnoreGammaAndColorProfile(bool flag) { m_ignoreGammaAndColorProfile = flag; } |
@@ -315,6 +323,9 @@ protected: |
// memory devices. |
size_t m_maxDecodedBytes; |
+ // Whether frameCount() was called to update frame count after setData(). |
+ bool haveUpdatedFrameCount() const { return m_haveUpdatedFrameCount; } |
+ |
private: |
// Some code paths compute the size of the image as "width * height * 4" |
// and return it as a (signed) int. Avoid overflow. |
@@ -328,6 +339,7 @@ private: |
IntSize m_size; |
bool m_sizeAvailable; |
bool m_isAllDataReceived; |
+ bool m_haveUpdatedFrameCount; |
bool m_failed; |
#if USE(QCMSLIB) |