Fix bug testing SkCodec for ICO

Looking in Gold, I see some ICO images that only show the upper left
corner of the originals. It is happening because we use different ways
of deciding what the dimensions are:

In CodecSrc::size(), we use an SkScaledCodec to get the dimensions,
even when fMode is not kScaledCodec_Mode.

In CodecSrc::draw(), we only use SkScaledCodec in kScaledCodec_Mode.

My recent CL to combine SkScanlineDecoder with SkCodec revealed this
bug, because now SkScaledCodec::NewFromStream will succeed on ICO.
(Previously, it failed because we do not yet have a scanline decoder
for ICO (skbug.com/4404). Now that they are combined, we would need
to specially flag ICO to stop returning an SkScaledCodec.)

Switch size() to use the correct type of codec.

Review URL: https://codereview.chromium.org/1373253004
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
index 2e22556..d98a9ca 100644
--- a/dm/DMSrcSink.cpp
+++ b/dm/DMSrcSink.cpp
@@ -641,16 +641,18 @@
 
 SkISize CodecSrc::size() const {
     SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(fPath.c_str()));
-    SkAutoTDelete<SkCodec> codec(SkScaledCodec::NewFromData(encoded));
-    if (nullptr == codec) {
-        // scaledCodec not supported, try regular codec
+    SkAutoTDelete<SkCodec> codec(nullptr);
+
+    if (kScaledCodec_Mode == fMode) {
+        codec.reset(SkScaledCodec::NewFromData(encoded));
+    } else {
         codec.reset(SkCodec::NewFromData(encoded));
-        if (nullptr == codec) {
-            return SkISize::Make(0, 0);
-        }
     }
-    SkISize size = codec->getScaledDimensions(fScale);
-    return size;
+
+    if (nullptr == codec) {
+        return SkISize::Make(0, 0);
+    }
+    return codec->getScaledDimensions(fScale);
 }
 
 Name CodecSrc::name() const {