Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / cc / test / pixel_test_utils.cc
index 99970b8..a0ddad3 100644 (file)
@@ -7,6 +7,7 @@
 #include <string>
 #include <vector>
 
+#include "base/base64.h"
 #include "base/file_util.h"
 #include "base/logging.h"
 #include "third_party/skia/include/core/SkBitmap.h"
@@ -28,6 +29,17 @@ bool WritePNGFile(const SkBitmap& bitmap, const base::FilePath& file_path,
   return false;
 }
 
+std::string GetPNGDataUrl(const SkBitmap& bitmap) {
+  std::vector<unsigned char> png_data;
+  gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &png_data);
+  std::string data_url;
+  data_url.insert(data_url.end(), png_data.begin(), png_data.end());
+  base::Base64Encode(data_url, &data_url);
+  data_url.insert(0, "data:image/png;base64,");
+
+  return data_url;
+}
+
 bool ReadPNGFile(const base::FilePath& file_path, SkBitmap* bitmap) {
   DCHECK(bitmap);
   std::string png_data;
@@ -60,7 +72,15 @@ bool MatchesPNGFile(const SkBitmap& gen_bmp, base::FilePath ref_img_path,
   if (gen_bmp.width() == 0 || gen_bmp.height() == 0)
     return true;
 
-  return comparator.Compare(gen_bmp, ref_bmp);
+  bool compare = comparator.Compare(gen_bmp, ref_bmp);
+  if (!compare) {
+    std::string gen_bmp_data_url = GetPNGDataUrl(gen_bmp);
+    std::string ref_bmp_data_url = GetPNGDataUrl(ref_bmp);
+    LOG(ERROR) << "Pixels do not match!";
+    LOG(ERROR) << "Actual: " << gen_bmp_data_url;
+    LOG(ERROR) << "Expected: " << ref_bmp_data_url;
+  }
+  return compare;
 }
 
 }  // namespace cc