Revert "Roll minimum picture version up to 44."

This reverts commit e037d12625b1dbb7952ae8a6553d6830e8b3ebbf.

Reason for revert: Checking to see if this broke the Chrome DEPS roll

Original change's description:
> Roll minimum picture version up to 44.
> 
> This is the version produced by Chrome M54.  M56 is stable now.
> 
> I am most interested in deleting SkBitmapSourceDeserializer,
> because it awkwardly calls from core into effects (SkImageSource).
> 
> Change-Id: I58b8b990017ba43372ab3333a4ef8312e75abc61
> Reviewed-on: https://skia-review.googlesource.com/8286
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Klein <mtklein@chromium.org>
> 

TBR=mtklein@chromium.org,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I9202591c7945c9421f335e544bf12461e38acdc6
Reviewed-on: https://skia-review.googlesource.com/8305
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/gn/utils.gni b/gn/utils.gni
index 9c69c54..8d860f5 100644
--- a/gn/utils.gni
+++ b/gn/utils.gni
@@ -29,6 +29,8 @@
 
   "$_src/utils/SkBase64.cpp",
   "$_src/utils/SkBase64.h",
+  "$_src/utils/SkBitmapSourceDeserializer.cpp",
+  "$_src/utils/SkBitmapSourceDeserializer.h",
   "$_src/utils/SkBitSet.h",
   "$_src/utils/SkBoundaryPatch.cpp",
   "$_src/utils/SkFrontBufferedStream.cpp",
diff --git a/include/core/SkPicture.h b/include/core/SkPicture.h
index 2952595..8047858 100644
--- a/include/core/SkPicture.h
+++ b/include/core/SkPicture.h
@@ -201,9 +201,18 @@
     // V51: more SkXfermode -> SkBlendMode
 
     // Only SKPs within the min/current picture version range (inclusive) can be read.
-    static const uint32_t     MIN_PICTURE_VERSION = 44;     // Produced by Chrome M54
+    static const uint32_t     MIN_PICTURE_VERSION = 35;     // Produced by Chrome M39.
     static const uint32_t CURRENT_PICTURE_VERSION = 51;
 
+    static_assert(MIN_PICTURE_VERSION <= 41,
+                  "Remove kFontFileName and related code from SkFontDescriptor.cpp.");
+
+    static_assert(MIN_PICTURE_VERSION <= 42,
+                  "Remove COMMENT API handlers from SkPicturePlayback.cpp");
+
+    static_assert(MIN_PICTURE_VERSION <= 43,
+                  "Remove SkBitmapSourceDeserializer.");
+
     static_assert(MIN_PICTURE_VERSION <= 45,
                   "Remove decoding of old SkTypeface::Style from SkFontDescriptor.cpp.");
 
diff --git a/src/core/SkFontDescriptor.cpp b/src/core/SkFontDescriptor.cpp
index 94fe23d..73ea205 100644
--- a/src/core/SkFontDescriptor.cpp
+++ b/src/core/SkFontDescriptor.cpp
@@ -20,6 +20,7 @@
     // defines for names in its 'name' table.
     kFontAxes       = 0xFC,
     kFontIndex      = 0xFD,
+    kFontFileName   = 0xFE,  // Remove when MIN_PICTURE_VERSION > 41
     kSentinel       = 0xFF,
 };
 
@@ -33,6 +34,14 @@
     }
 }
 
+// Remove when MIN_PICTURE_VERSION > 41
+static void skip_string(SkStream* stream) {
+    const uint32_t length = SkToU32(stream->readPackedUInt());
+    if (length > 0) {
+        stream->skip(length);
+    }
+}
+
 static void write_string(SkWStream* stream, const SkString& string, uint32_t id) {
     if (!string.isEmpty()) {
         stream->writePackedUInt(id);
@@ -85,6 +94,9 @@
             case kFontIndex:
                 index = read_uint(stream);
                 break;
+            case kFontFileName:  // Remove when MIN_PICTURE_VERSION > 41
+                skip_string(stream);
+                break;
             default:
                 SkDEBUGFAIL("Unknown id used by a font descriptor");
                 return false;
diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp
index d030987..be2e5db 100644
--- a/src/core/SkPicturePlayback.cpp
+++ b/src/core/SkPicturePlayback.cpp
@@ -134,8 +134,8 @@
             reader->skip(size - 4);
         } break;
         case CLIP_PATH: {
-            const SkPath& path = fPictureData->getPath(reader);
-            uint32_t packed = reader->readInt();
+            const SkPath& path = fPictureData->getPath(reader); 
+            uint32_t packed = reader->readInt(); 
             SkClipOp clipOp = ClipParams_unpackRegionOp(reader, packed);
             bool doAA = ClipParams_unpackDoAA(packed);
             size_t offsetToRestore = reader->readInt();
@@ -329,6 +329,22 @@
                 canvas->drawDRRect(outer, inner, *paint);
             }
         } break;
+        case BEGIN_COMMENT_GROUP: {
+            SkString tmp;
+            reader->readString(&tmp);
+            // deprecated (M44)
+            break;
+        }
+        case COMMENT: {
+            SkString tmp;
+            reader->readString(&tmp);
+            reader->readString(&tmp);
+            // deprecated (M44)
+            break;
+        }
+        case END_COMMENT_GROUP:
+            // deprecated (M44)
+            break;
         case DRAW_IMAGE: {
             const SkPaint* paint = fPictureData->getPaint(reader);
             const SkImage* image = fPictureData->getImage(reader);
diff --git a/src/ports/SkGlobalInitialization_default.cpp b/src/ports/SkGlobalInitialization_default.cpp
index 2096993..dd6ef87 100644
--- a/src/ports/SkGlobalInitialization_default.cpp
+++ b/src/ports/SkGlobalInitialization_default.cpp
@@ -10,6 +10,7 @@
 #include "SkAlphaThresholdFilter.h"
 #include "../../src/effects/SkArithmeticModePriv.h"
 #include "SkArcToPathEffect.h"
+#include "SkBitmapSourceDeserializer.h"
 #include "SkBlurDrawLooper.h"
 #include "SkBlurImageFilter.h"
 #include "SkBlurMaskFilter.h"
@@ -64,6 +65,8 @@
  *  will automatically be called before any of skia's effects are asked to be deserialized.
  */
 void SkFlattenable::PrivateInitializer::InitEffects() {
+    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBitmapSourceDeserializer)
+
     // MaskFilter
     SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmbossMaskFilter)
     SkBlurMaskFilter::InitializeFlattenables();
diff --git a/src/utils/SkBitmapSourceDeserializer.cpp b/src/utils/SkBitmapSourceDeserializer.cpp
new file mode 100644
index 0000000..1f8cc1c
--- /dev/null
+++ b/src/utils/SkBitmapSourceDeserializer.cpp
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2015 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkBitmapSourceDeserializer.h"
+
+#include "SkBitmap.h"
+#include "SkFilterQuality.h"
+#include "SkImage.h"
+#include "SkImageSource.h"
+#include "SkReadBuffer.h"
+
+sk_sp<SkFlattenable> SkBitmapSourceDeserializer::CreateProc(SkReadBuffer& buffer) {
+    SkFilterQuality filterQuality;
+    if (buffer.isVersionLT(SkReadBuffer::kBitmapSourceFilterQuality_Version)) {
+        filterQuality = kHigh_SkFilterQuality;
+    } else {
+        filterQuality = (SkFilterQuality)buffer.readInt();
+    }
+    SkRect src, dst;
+    buffer.readRect(&src);
+    buffer.readRect(&dst);
+    sk_sp<SkImage> image = buffer.readBitmapAsImage();
+    if (image) {
+        return SkImageSource::Make(std::move(image), src, dst, filterQuality);
+    }
+    return nullptr;
+}
diff --git a/src/utils/SkBitmapSourceDeserializer.h b/src/utils/SkBitmapSourceDeserializer.h
new file mode 100644
index 0000000..e017599
--- /dev/null
+++ b/src/utils/SkBitmapSourceDeserializer.h
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2015 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkBitmapSourceDeserializer_DEFINED
+#define SkBitmapSourceDeserializer_DEFINED
+
+#include "SkFlattenable.h"
+
+// A temporary utility class to support deserializing legacy SkBitmapSource as SkImageSource.
+// Should be removed when SKP versions which may contain SkBitmapSource records are phased out.
+class SkBitmapSourceDeserializer : public SkFlattenable {
+public:
+    SK_DEFINE_FLATTENABLE_TYPE(SkImageFilter)
+    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapSource)
+};
+
+#endif