media/gpu/test: Automatically save thumbnail image on validation failure.

This CL adapts the RenderThumbnails tests in the video_decode_accelerator_tests
binary to automatically save the thumbnail image to disk on test failure.

TEST=./video_decode_accelerator_tests --disable_validator on eve

BUG=964168

Change-Id: I36747ab273a909773fb0c4acf7fe8579157de9c0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1687510
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
Commit-Queue: David Staessens <dstaessens@chromium.org>
Cr-Commit-Position: refs/heads/master@{#675546}
diff --git a/media/gpu/test/video_player/frame_renderer_thumbnail.cc b/media/gpu/test/video_player/frame_renderer_thumbnail.cc
index 5588e0a..100be1fc 100644
--- a/media/gpu/test/video_player/frame_renderer_thumbnail.cc
+++ b/media/gpu/test/video_player/frame_renderer_thumbnail.cc
@@ -237,6 +237,8 @@
   std::string md5_string = base::MD5String(
       base::StringPiece(reinterpret_cast<char*>(&rgb[0]), rgb.size()));
   bool is_valid_thumbnail = base::Contains(thumbnail_checksums_, md5_string);
+  if (!is_valid_thumbnail)
+    SaveThumbnail();
 
   return is_valid_thumbnail;
 }
@@ -244,7 +246,6 @@
 void FrameRendererThumbnail::SaveThumbnail() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(client_sequence_checker_);
 
-  base::AutoLock auto_lock(renderer_lock_);
   const std::vector<uint8_t> rgba = ConvertThumbnailToRGBA();
 
   // Convert raw RGBA into PNG for export.
diff --git a/media/gpu/test/video_player/frame_renderer_thumbnail.h b/media/gpu/test/video_player/frame_renderer_thumbnail.h
index e08813a..fc70f9ea 100644
--- a/media/gpu/test/video_player/frame_renderer_thumbnail.h
+++ b/media/gpu/test/video_player/frame_renderer_thumbnail.h
@@ -64,8 +64,6 @@
 
   // Validate the thumbnail image by comparing it against known golden values.
   bool ValidateThumbnail();
-  // Save the thumbnail image to disk.
-  void SaveThumbnail();
 
  private:
   explicit FrameRendererThumbnail(
@@ -84,6 +82,8 @@
   // Convert the thumbnail image to RGBA.
   const std::vector<uint8_t> ConvertThumbnailToRGBA()
       EXCLUSIVE_LOCKS_REQUIRED(renderer_lock_);
+  // Save the thumbnail image to disk.
+  void SaveThumbnail() EXCLUSIVE_LOCKS_REQUIRED(renderer_lock_);
 
   // Destroy the texture associated with the |mailbox| on the renderer thread.
   void DeleteTexture(const gpu::Mailbox& mailbox, const gpu::SyncToken&);