Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / dm / DMSerializeTask.cpp
index 62c45b3..86fbff3 100644 (file)
@@ -7,20 +7,27 @@
 #include "SkPixelRef.h"
 
 DEFINE_bool(serialize, true, "If true, run picture serialization tests.");
+DECLARE_bool(skr);  // in DMReplayTask.cpp
+
+static const char* kSuffixes[] = { "serialize", "serialize_skr" };
+static const bool* kEnabled[]  = { &FLAGS_serialize, &FLAGS_skr };
 
 namespace DM {
 
 SerializeTask::SerializeTask(const Task& parent,
                              skiagm::GM* gm,
-                             SkBitmap reference)
+                             SkBitmap reference,
+                             SerializeTask::Mode mode)
     : CpuTask(parent)
-    , fName(UnderJoin(parent.name().c_str(), "serialize"))
+    , fMode(mode)
+    , fName(UnderJoin(parent.name().c_str(), kSuffixes[mode]))
     , fGM(gm)
     , fReference(reference)
     {}
 
 void SerializeTask::draw() {
-    SkAutoTUnref<SkPicture> recorded(RecordPicture(fGM.get()));
+    SkAutoTUnref<SkPicture> recorded(
+        RecordPicture(fGM.get(), NULL/*no BBH*/, kSkRecord_Mode == fMode));
 
     SkDynamicMemoryWStream wStream;
     recorded->serialize(&wStream, NULL);
@@ -29,7 +36,7 @@ void SerializeTask::draw() {
 
     SkBitmap bitmap;
     AllocatePixels(fReference, &bitmap);
-    DrawPicture(reconstructed, &bitmap);
+    DrawPicture(*reconstructed, &bitmap);
     if (!BitmapsEqual(bitmap, fReference)) {
         this->fail();
         this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap)));
@@ -37,7 +44,10 @@ void SerializeTask::draw() {
 }
 
 bool SerializeTask::shouldSkip() const {
-    return !FLAGS_serialize || fGM->getFlags() & skiagm::GM::kSkipPicture_Flag;
+    if (fGM->getFlags() & skiagm::GM::kSkipPicture_Flag) {
+        return true;
+    }
+    return !*kEnabled[fMode];
 }
 
 }  // namespace DM