Apply OVERRIDE and FINAL to Image subclasses and clean them up
authortimothy_horton@apple.com <timothy_horton@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 12 Sep 2013 09:03:55 +0000 (09:03 +0000)
committertimothy_horton@apple.com <timothy_horton@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 12 Sep 2013 09:03:55 +0000 (09:03 +0000)
https://bugs.webkit.org/show_bug.cgi?id=121086

Reviewed by Alexey Proskuryakov.

Everything other than the copious application of OVERRIDE and FINAL
is explicitly called out below.

* WebCore.exp.in:
Export the correct version of getCGImageRef for use by WebKit2.

* platform/graphics/BitmapImage.cpp:
* platform/graphics/BitmapImage.h:
Drive-by inline isBitmapImage.
Move create(HBITMAP) to be near the other create() functions.
Move all of the members and quite a few functions from protected to private.
Devirtualize frameCount().
Move notSolidColor() near the other solid color functions.

* platform/graphics/CrossfadeGeneratedImage.cpp:
(WebCore::CrossfadeGeneratedImage::CrossfadeGeneratedImage):
(WebCore::CrossfadeGeneratedImage::drawPattern):
* platform/graphics/GeneratorGeneratedImage.cpp:
(WebCore::GeneratorGeneratedImage::draw):
(WebCore::GeneratorGeneratedImage::drawPattern):
Use size() and setContainerSize() instead of directly accessing a
superclass' (now private, previously protected) members.

* platform/graphics/CrossfadeGeneratedImage.h:
* platform/graphics/GeneratedImage.h:
Make m_size private, I don't think we do protected members.

* platform/graphics/GeneratorGeneratedImage.h:
Make all the members private.

* svg/graphics/SVGImage.h:
* svg/graphics/SVGImageForContainer.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@155597 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/WebCore.exp.in
Source/WebCore/platform/graphics/BitmapImage.cpp
Source/WebCore/platform/graphics/BitmapImage.h
Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp
Source/WebCore/platform/graphics/CrossfadeGeneratedImage.h
Source/WebCore/platform/graphics/GeneratedImage.h
Source/WebCore/platform/graphics/GeneratorGeneratedImage.cpp
Source/WebCore/platform/graphics/GeneratorGeneratedImage.h
Source/WebCore/svg/graphics/SVGImage.h
Source/WebCore/svg/graphics/SVGImageForContainer.h

index f66c0cc..ea8c787 100644 (file)
@@ -1,3 +1,43 @@
+2013-09-11  Tim Horton  <timothy_horton@apple.com>
+
+        Apply OVERRIDE and FINAL to Image subclasses and clean them up
+        https://bugs.webkit.org/show_bug.cgi?id=121086
+
+        Reviewed by Alexey Proskuryakov.
+
+        Everything other than the copious application of OVERRIDE and FINAL
+        is explicitly called out below.
+
+        * WebCore.exp.in:
+        Export the correct version of getCGImageRef for use by WebKit2.
+
+        * platform/graphics/BitmapImage.cpp:
+        * platform/graphics/BitmapImage.h:
+        Drive-by inline isBitmapImage.
+        Move create(HBITMAP) to be near the other create() functions.
+        Move all of the members and quite a few functions from protected to private.
+        Devirtualize frameCount().
+        Move notSolidColor() near the other solid color functions.
+
+        * platform/graphics/CrossfadeGeneratedImage.cpp:
+        (WebCore::CrossfadeGeneratedImage::CrossfadeGeneratedImage):
+        (WebCore::CrossfadeGeneratedImage::drawPattern):
+        * platform/graphics/GeneratorGeneratedImage.cpp:
+        (WebCore::GeneratorGeneratedImage::draw):
+        (WebCore::GeneratorGeneratedImage::drawPattern):
+        Use size() and setContainerSize() instead of directly accessing a
+        superclass' (now private, previously protected) members.
+
+        * platform/graphics/CrossfadeGeneratedImage.h:
+        * platform/graphics/GeneratedImage.h:
+        Make m_size private, I don't think we do protected members.
+        
+        * platform/graphics/GeneratorGeneratedImage.h:
+        Make all the members private.
+
+        * svg/graphics/SVGImage.h:
+        * svg/graphics/SVGImageForContainer.h:
+
 2013-09-11  Rashmi Shyamasundar  <rashmi.s2@samsung.com>
 
         Canvas fillText and measureText handle ideographic spaces differently
index 7489033..387931a 100644 (file)
@@ -103,6 +103,7 @@ __ZN7WebCore10setCookiesEPNS_8DocumentERKNS_4KURLERKN3WTF6StringE
 __ZN7WebCore10toDocumentEN3JSC7JSValueE
 __ZN7WebCore11BitmapImageC1EP7CGImagePNS_13ImageObserverE
 __ZN7WebCore11BitmapImageC1EPNS_13ImageObserverE
+__ZN7WebCore11BitmapImage13getCGImageRefEv
 __ZN7WebCore11CachedFrame23cachedFramePlatformDataEv
 __ZN7WebCore11CachedFrame26setCachedFramePlatformDataEN3WTF10PassOwnPtrINS_23CachedFramePlatformDataEEE
 __ZN7WebCore11FileChooser10chooseFileERKN3WTF6StringE
index 16d5a31..a0ee0dd 100644 (file)
@@ -67,17 +67,11 @@ BitmapImage::~BitmapImage()
     stopAnimation();
 }
 
-bool BitmapImage::isBitmapImage() const
-{
-    return true;
-}
-
 bool BitmapImage::hasSingleSecurityOrigin() const
 {
     return true;
 }
 
-
 void BitmapImage::destroyDecodedData(bool destroyAll)
 {
     unsigned frameBytesCleared = 0;
index 1a5cbce..3d28863 100644 (file)
@@ -97,7 +97,7 @@ public:
 // BitmapImage Class
 // =================================================
 
-class BitmapImage : public Image {
+class BitmapImage FINAL : public Image {
     friend class GeneratedImage;
     friend class CrossfadeGeneratedImage;
     friend class GeneratorGeneratedImage;
@@ -111,71 +111,66 @@ public:
     {
         return adoptRef(new BitmapImage(observer));
     }
+#if PLATFORM(WIN) || (PLATFORM(QT) && OS(WINDOWS))
+    static PassRefPtr<BitmapImage> create(HBITMAP);
+#endif
     virtual ~BitmapImage();
     
-    virtual bool isBitmapImage() const;
+    virtual bool isBitmapImage() const OVERRIDE { return true; }
 
-    virtual bool hasSingleSecurityOrigin() const;
+    virtual bool hasSingleSecurityOrigin() const OVERRIDE;
 
-    virtual IntSize size() const;
+    virtual IntSize size() const OVERRIDE;
     IntSize sizeRespectingOrientation() const;
     IntSize currentFrameSize() const;
-    virtual bool getHotSpot(IntPoint&) const;
+    virtual bool getHotSpot(IntPoint&) const OVERRIDE;
 
-    virtual bool dataChanged(bool allDataReceived);
-    virtual String filenameExtension() const
+    virtual bool dataChanged(bool allDataReceived) OVERRIDE;
+    virtual String filenameExtension() const OVERRIDE;
 
     // It may look unusual that there is no start animation call as public API.  This is because
     // we start and stop animating lazily.  Animation begins whenever someone draws the image.  It will
     // automatically pause once all observers no longer want to render the image anywhere.
-    virtual void stopAnimation();
-    virtual void resetAnimation();
+    virtual void stopAnimation() OVERRIDE;
+    virtual void resetAnimation() OVERRIDE;
 
-    virtual unsigned decodedSize() const;
+    virtual unsigned decodedSize() const OVERRIDE;
 
 #if PLATFORM(MAC)
     // Accessors for native image formats.
-    virtual NSImage* getNSImage();
-    virtual CFDataRef getTIFFRepresentation();
+    virtual NSImage* getNSImage() OVERRIDE;
+    virtual CFDataRef getTIFFRepresentation() OVERRIDE;
 #endif
-    
+
 #if USE(CG)
-    virtual CGImageRef getCGImageRef();
-    virtual CGImageRef getFirstCGImageRefOfSize(const IntSize&);
-    virtual RetainPtr<CFArrayRef> getCGImageArray();
+    virtual CGImageRef getCGImageRef() OVERRIDE;
+    virtual CGImageRef getFirstCGImageRefOfSize(const IntSize&) OVERRIDE;
+    virtual RetainPtr<CFArrayRef> getCGImageArray() OVERRIDE;
 #endif
 
-#if PLATFORM(WIN) || (PLATFORM(QT) && OS(WINDOWS))
-    static PassRefPtr<BitmapImage> create(HBITMAP);
-#endif
 #if PLATFORM(WIN)
-    virtual bool getHBITMAP(HBITMAP);
+    virtual bool getHBITMAP(HBITMAP) OVERRIDE;
     virtual bool getHBITMAPOfSize(HBITMAP, const IntSize*) OVERRIDE;
 #endif
 
 #if PLATFORM(GTK)
-    virtual GdkPixbuf* getGdkPixbuf();
+    virtual GdkPixbuf* getGdkPixbuf() OVERRIDE;
 #endif
 
 #if PLATFORM(EFL)
-    virtual Evas_Object* getEvasObject(Evas*);
+    virtual Evas_Object* getEvasObject(Evas*) OVERRIDE;
 #endif
 
     virtual PassNativeImagePtr nativeImageForCurrentFrame() OVERRIDE;
     virtual ImageOrientation orientationForCurrentFrame() OVERRIDE { return frameOrientationAtIndex(currentFrame()); }
 
     virtual bool currentFrameKnownToBeOpaque() OVERRIDE;
-
-#if !ASSERT_DISABLED
-    virtual bool notSolidColor();
-#endif
     
     bool canAnimate();
 
 private:
     void updateSize() const;
 
-protected:
     enum RepetitionCountStatus {
       Unknown,    // We haven't checked the source's repetition count.
       Uncertain,  // We have a repetition count, but it might be wrong (some GIFs have a count after the image data, and will report "loop once" until all data has been decoded).
@@ -186,20 +181,20 @@ protected:
     BitmapImage(ImageObserver* = 0);
 
 #if PLATFORM(WIN)
-    virtual void drawFrameMatchingSourceSize(GraphicsContext*, const FloatRect& dstRect, const IntSize& srcSize, ColorSpace styleColorSpace, CompositeOperator);
+    virtual void drawFrameMatchingSourceSize(GraphicsContext*, const FloatRect& dstRect, const IntSize& srcSize, ColorSpace styleColorSpace, CompositeOperator) OVERRIDE;
 #endif
-    virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode);
+    virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode) OVERRIDE;
 #if USE(CG) || USE(CAIRO) || PLATFORM(BLACKBERRY)
     virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode, ImageOrientationDescription) OVERRIDE;
 #endif
 
 #if USE(WINGDI)
     virtual void drawPattern(GraphicsContext*, const FloatRect& srcRect, const AffineTransform& patternTransform,
-                             const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& destRect);
+        const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& destRect) OVERRIDE;
 #endif
 
     size_t currentFrame() const { return m_currentFrame; }
-    virtual size_t frameCount();
+    size_t frameCount();
     PassNativeImagePtr frameAtIndex(size_t);
     bool frameIsCompleteAtIndex(size_t);
     float frameDurationAtIndex(size_t);
@@ -217,7 +212,7 @@ protected:
     // cache.  If |destroyAll| is false, we only delete frames up to the current
     // one; this is used while animating large images to keep memory footprint
     // low without redecoding the whole image on every frame.
-    virtual void destroyDecodedData(bool destroyAll = true);
+    virtual void destroyDecodedData(bool destroyAll = true) OVERRIDE;
 
     // If the image is large enough, calls destroyDecodedData() and passes
     // |destroyAll| along.
@@ -228,7 +223,7 @@ protected:
     // decreased by |frameBytesCleared|.
     void destroyMetadataAndNotify(unsigned frameBytesCleared);
 
-    // Whether or not size is available yet.    
+    // Whether or not size is available yet.
     bool isSizeAvailable();
 
     // Called after asking the source for any information that may require
@@ -240,7 +235,7 @@ protected:
     // Animation.
     int repetitionCount(bool imageKnownToBeComplete);  // |imageKnownToBeComplete| should be set if the caller knows the entire image has been decoded.
     bool shouldAnimate();
-    virtual void startAnimation(bool catchUpIfNecessary = true);
+    virtual void startAnimation(bool catchUpIfNecessary = true) OVERRIDE;
     void advanceAnimation(Timer<BitmapImage>*);
 
     // Function that does the real work of advancing the animation.  When
@@ -252,19 +247,23 @@ protected:
 
     // Handle platform-specific data
     void invalidatePlatformData();
-    
+
     // Checks to see if the image is a 1x1 solid color.  We optimize these images and just do a fill rect instead.
     // This check should happen regardless whether m_checkedForSolidColor is already set, as the frame may have
     // changed.
     void checkForSolidColor();
-    
-    virtual bool mayFillWithSolidColor();
-    virtual Color solidColor() const;
-    
+
+    virtual bool mayFillWithSolidColor() OVERRIDE;
+    virtual Color solidColor() const OVERRIDE;
+
+#if !ASSERT_DISABLED
+    virtual bool notSolidColor() OVERRIDE;
+#endif
+
     ImageSource m_source;
     mutable IntSize m_size; // The size to use for the overall image (will just be the size of the first image).
     mutable IntSize m_sizeRespectingOrientation;
-    
+
     size_t m_currentFrame; // The index of the current frame of animation.
     Vector<FrameData, 1> m_frames; // An array of the cached frames of the animation. We have to ref frames to pin them in the cache.
 
index 1f41aa6..1513563 100644 (file)
@@ -40,7 +40,7 @@ CrossfadeGeneratedImage::CrossfadeGeneratedImage(Image* fromImage, Image* toImag
     , m_percentage(percentage)
     , m_crossfadeSize(crossfadeSize)
 {
-    m_size = size;
+    setContainerSize(size);
 }
 
 void CrossfadeGeneratedImage::drawCrossfade(GraphicsContext* context)
@@ -95,7 +95,7 @@ void CrossfadeGeneratedImage::draw(GraphicsContext* context, const FloatRect& ds
 
 void CrossfadeGeneratedImage::drawPattern(GraphicsContext* context, const FloatRect& srcRect, const AffineTransform& patternTransform, const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator compositeOp, const FloatRect& dstRect, BlendMode)
 {
-    OwnPtr<ImageBuffer> imageBuffer = ImageBuffer::create(m_size, 1, ColorSpaceDeviceRGB, context->isAcceleratedContext() ? Accelerated : Unaccelerated);
+    OwnPtr<ImageBuffer> imageBuffer = ImageBuffer::create(size(), 1, ColorSpaceDeviceRGB, context->isAcceleratedContext() ? Accelerated : Unaccelerated);
     if (!imageBuffer)
         return;
 
index f1da2ca..07548ad 100644 (file)
@@ -36,23 +36,23 @@ namespace WebCore {
 
 class CSSCrossfadeValue;
 
-class CrossfadeGeneratedImage : public GeneratedImage {
+class CrossfadeGeneratedImage FINAL : public GeneratedImage {
 public:
     static PassRefPtr<CrossfadeGeneratedImage> create(Image* fromImage, Image* toImage, float percentage, IntSize crossfadeSize, const IntSize& size)
     {
         return adoptRef(new CrossfadeGeneratedImage(fromImage, toImage, percentage, crossfadeSize, size));
     }
 
-    virtual void setContainerSize(const IntSize&) { }
-    virtual bool usesContainerSize() const { return false; }
-    virtual bool hasRelativeWidth() const { return false; }
-    virtual bool hasRelativeHeight() const { return false; }
+    virtual void setContainerSize(const IntSize&) OVERRIDE { }
+    virtual bool usesContainerSize() const OVERRIDE { return false; }
+    virtual bool hasRelativeWidth() const OVERRIDE { return false; }
+    virtual bool hasRelativeHeight() const OVERRIDE { return false; }
 
-    virtual IntSize size() const { return m_crossfadeSize; }
+    virtual IntSize size() const OVERRIDE { return m_crossfadeSize; }
 
 protected:
-    virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode);
-    virtual void drawPattern(GraphicsContext*, const FloatRect& srcRect, const AffineTransform& patternTransform, const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& dstRect, BlendMode);
+    virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode) OVERRIDE;
+    virtual void drawPattern(GraphicsContext*, const FloatRect& srcRect, const AffineTransform& patternTransform, const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& dstRect, BlendMode) OVERRIDE;
 
     CrossfadeGeneratedImage(Image* fromImage, Image* toImage, float percentage, IntSize crossfadeSize, const IntSize&);
 
index bd46588..f189f74 100644 (file)
@@ -35,30 +35,31 @@ namespace WebCore {
 
 class GeneratedImage : public Image {
 public:
-    virtual bool hasSingleSecurityOrigin() const { return true; }
+    virtual bool hasSingleSecurityOrigin() const OVERRIDE { return true; }
 
-    virtual void setContainerSize(const IntSize& size) { m_size = size; }
-    virtual bool usesContainerSize() const { return true; }
-    virtual bool hasRelativeWidth() const { return true; }
-    virtual bool hasRelativeHeight() const { return true; }
-    virtual void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio);
+    virtual void setContainerSize(const IntSize& size) OVERRIDE { m_size = size; }
+    virtual bool usesContainerSize() const OVERRIDE { return true; }
+    virtual bool hasRelativeWidth() const OVERRIDE { return true; }
+    virtual bool hasRelativeHeight() const OVERRIDE { return true; }
+    virtual void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) OVERRIDE;
 
-    virtual IntSize size() const { return m_size; }
+    virtual IntSize size() const OVERRIDE { return m_size; }
 
     // Assume that generated content has no decoded data we need to worry about
-    virtual void destroyDecodedData(bool /*destroyAll*/ = true) { }
-    virtual unsigned decodedSize() const { return 0; }
+    virtual void destroyDecodedData(bool /*destroyAll*/ = true) OVERRIDE { }
+    virtual unsigned decodedSize() const OVERRIDE { return 0; }
 
 protected:
-    virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode) = 0;
+    virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode) OVERRIDE = 0;
     virtual void drawPattern(GraphicsContext*, const FloatRect& srcRect, const AffineTransform& patternTransform,
-        const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& destRect, BlendMode) = 0;
+        const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& destRect, BlendMode) OVERRIDE = 0;
 
     // FIXME: Implement this to be less conservative.
     virtual bool currentFrameKnownToBeOpaque() OVERRIDE { return false; }
 
     GeneratedImage() { }
 
+private:
     IntSize m_size;
 };
 
index 84100a1..557323c 100644 (file)
@@ -41,14 +41,14 @@ void GeneratorGeneratedImage::draw(GraphicsContext* destContext, const FloatRect
     if (destRect.size() != srcRect.size())
         destContext->scale(FloatSize(destRect.width() / srcRect.width(), destRect.height() / srcRect.height()));
     destContext->translate(-srcRect.x(), -srcRect.y());
-    destContext->fillRect(FloatRect(FloatPoint(), m_size), *m_gradient.get());
+    destContext->fillRect(FloatRect(FloatPoint(), size()), *m_gradient.get());
 }
 
 void GeneratorGeneratedImage::drawPattern(GraphicsContext* destContext, const FloatRect& srcRect, const AffineTransform& patternTransform,
     const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator compositeOp, const FloatRect& destRect, BlendMode)
 {
     // Allow the generator to provide visually-equivalent tiling parameters for better performance.
-    IntSize adjustedSize = m_size;
+    IntSize adjustedSize = size();
     FloatRect adjustedSrcRect = srcRect;
     m_gradient->adjustParametersForTiledDrawing(adjustedSize, adjustedSrcRect);
 
index 0b55be6..d214a04 100644 (file)
@@ -35,7 +35,7 @@
 
 namespace WebCore {
 
-class GeneratorGeneratedImage : public GeneratedImage {
+class GeneratorGeneratedImage FINAL : public GeneratedImage {
 public:
     static PassRefPtr<GeneratorGeneratedImage> create(PassRefPtr<Gradient> generator, const IntSize& size)
     {
@@ -45,16 +45,17 @@ public:
     virtual ~GeneratorGeneratedImage() { }
 
 protected:
-    virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode);
+    virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode) OVERRIDE;
     virtual void drawPattern(GraphicsContext*, const FloatRect& srcRect, const AffineTransform& patternTransform,
-        const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& destRect, BlendMode);
+        const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator, const FloatRect& destRect, BlendMode) OVERRIDE;
 
     GeneratorGeneratedImage(PassRefPtr<Gradient> generator, const IntSize& size)
         : m_gradient(generator)
     {
-        m_size = size;
+        setContainerSize(size);
     }
 
+private:
     RefPtr<Gradient> m_gradient;
     OwnPtr<ImageBuffer> m_cachedImageBuffer;
     IntSize m_cachedAdjustedSize;
index 5a0ba45..974b399 100644 (file)
@@ -41,7 +41,7 @@ class RenderBox;
 class SVGImageChromeClient;
 class SVGImageForContainer;
 
-class SVGImage : public Image {
+class SVGImage FINAL : public Image {
 public:
     static PassRefPtr<SVGImage> create(ImageObserver* observer)
     {
@@ -51,13 +51,13 @@ public:
     RenderBox* embeddedContentBox() const;
     FrameView* frameView() const;
 
-    virtual bool isSVGImage() const { return true; }
+    virtual bool isSVGImage() const OVERRIDE { return true; }
     virtual IntSize size() const OVERRIDE { return m_intrinsicSize; }
 
     virtual bool hasSingleSecurityOrigin() const OVERRIDE;
 
-    virtual bool hasRelativeWidth() const;
-    virtual bool hasRelativeHeight() const;
+    virtual bool hasRelativeWidth() const OVERRIDE;
+    virtual bool hasRelativeHeight() const OVERRIDE;
 
     virtual void startAnimation(bool /*catchUpIfNecessary*/ = true) OVERRIDE;
     virtual void stopAnimation() OVERRIDE;
@@ -73,25 +73,25 @@ private:
 
     virtual ~SVGImage();
 
-    virtual String filenameExtension() const;
+    virtual String filenameExtension() const OVERRIDE;
 
-    virtual void setContainerSize(const IntSize&);
+    virtual void setContainerSize(const IntSize&) OVERRIDE;
     IntSize containerSize() const;
-    virtual bool usesContainerSize() const { return true; }
-    virtual void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio);
+    virtual bool usesContainerSize() const OVERRIDE { return true; }
+    virtual void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intrinsicHeight, FloatSize& intrinsicRatio) OVERRIDE;
 
-    virtual bool dataChanged(bool allDataReceived);
+    virtual bool dataChanged(bool allDataReceived) OVERRIDE;
 
     // FIXME: SVGImages are underreporting decoded sizes and will be unable
     // to prune because these functions are not implemented yet.
-    virtual void destroyDecodedData(bool) { }
-    virtual unsigned decodedSize() const { return 0; }
+    virtual void destroyDecodedData(bool) OVERRIDE { }
+    virtual unsigned decodedSize() const OVERRIDE { return 0; }
 
     // FIXME: Implement this to be less conservative.
     virtual bool currentFrameKnownToBeOpaque() OVERRIDE { return false; }
 
     SVGImage(ImageObserver*);
-    virtual void draw(GraphicsContext*, const FloatRect& fromRect, const FloatRect& toRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode);
+    virtual void draw(GraphicsContext*, const FloatRect& fromRect, const FloatRect& toRect, ColorSpace styleColorSpace, CompositeOperator, BlendMode) OVERRIDE;
     void drawForContainer(GraphicsContext*, const FloatSize, float, const FloatRect&, const FloatRect&, ColorSpace, CompositeOperator, BlendMode);
     void drawPatternForContainer(GraphicsContext*, const FloatSize, float, const FloatRect&, const AffineTransform&, const FloatPoint&, ColorSpace,
         CompositeOperator, const FloatRect&);
index a2f15e4..c73d8c5 100644 (file)
@@ -36,7 +36,7 @@
 
 namespace WebCore {
 
-class SVGImageForContainer : public Image {
+class SVGImageForContainer FINAL : public Image {
 public:
     static PassRefPtr<SVGImageForContainer> create(SVGImage* image, const FloatSize& containerSize, float zoom)
     {
@@ -72,8 +72,8 @@ private:
     {
     }
 
-    virtual void destroyDecodedData(bool /*destroyAll*/ = true) { }
-    virtual unsigned decodedSize() const { return 0; }
+    virtual void destroyDecodedData(bool /*destroyAll*/ = true) OVERRIDE { }
+    virtual unsigned decodedSize() const OVERRIDE { return 0; }
 
     SVGImage* m_image;
     const FloatSize m_containerSize;