GCC: PlaybackImageProvider::Settings: explicitely set copy constructor.

GCC fails to resolve the default copy constructor of the flat_map, so
we add an explicit reference to use default copy constructor.

Bug: 819294

Change-Id: Ie2d69bdbe60742e9253251c965cbf0a936037871
Reviewed-on: https://chromium-review.googlesource.com/944403
Reviewed-by: David Reveman <reveman@chromium.org>
Commit-Queue: José Dapena Paz <jose.dapena@lge.com>
Cr-Commit-Position: refs/heads/master@{#541827}
diff --git a/cc/raster/playback_image_provider.cc b/cc/raster/playback_image_provider.cc
index 557b421..b2ace4d 100644
--- a/cc/raster/playback_image_provider.cc
+++ b/cc/raster/playback_image_provider.cc
@@ -20,7 +20,7 @@
 PlaybackImageProvider::PlaybackImageProvider(
     ImageDecodeCache* cache,
     const gfx::ColorSpace& target_color_space,
-    base::Optional<Settings> settings)
+    base::Optional<Settings>&& settings)
     : cache_(cache),
       target_color_space_(target_color_space),
       settings_(std::move(settings)) {
@@ -70,7 +70,10 @@
 }
 
 PlaybackImageProvider::Settings::Settings() = default;
-PlaybackImageProvider::Settings::Settings(const Settings& other) = default;
+PlaybackImageProvider::Settings::Settings(PlaybackImageProvider::Settings&&) =
+    default;
 PlaybackImageProvider::Settings::~Settings() = default;
+PlaybackImageProvider::Settings& PlaybackImageProvider::Settings::operator=(
+    PlaybackImageProvider::Settings&&) = default;
 
 }  // namespace cc
diff --git a/cc/raster/playback_image_provider.h b/cc/raster/playback_image_provider.h
index 67974f3..a33092d 100644
--- a/cc/raster/playback_image_provider.h
+++ b/cc/raster/playback_image_provider.h
@@ -20,8 +20,10 @@
  public:
   struct CC_EXPORT Settings {
     Settings();
-    Settings(const Settings& other);
+    Settings(const Settings&) = delete;
+    Settings(Settings&&);
     ~Settings();
+    Settings& operator=(Settings&&);
 
     // The set of image ids to skip during raster.
     PaintImageIdFlatSet images_to_skip;
@@ -34,7 +36,7 @@
   // If no settings are provided, all images are skipped during rasterization.
   PlaybackImageProvider(ImageDecodeCache* cache,
                         const gfx::ColorSpace& target_color_space,
-                        base::Optional<Settings> settings);
+                        base::Optional<Settings>&& settings);
   ~PlaybackImageProvider() override;
 
   PlaybackImageProvider(PlaybackImageProvider&& other);
diff --git a/cc/raster/playback_image_provider_unittest.cc b/cc/raster/playback_image_provider_unittest.cc
index 0206999d..40036e8 100644
--- a/cc/raster/playback_image_provider_unittest.cc
+++ b/cc/raster/playback_image_provider_unittest.cc
@@ -85,7 +85,8 @@
   settings.emplace();
   settings->images_to_skip = {skip_image.stable_id()};
 
-  PlaybackImageProvider provider(&cache, gfx::ColorSpace(), settings);
+  PlaybackImageProvider provider(&cache, gfx::ColorSpace(),
+                                 std::move(settings));
 
   SkIRect rect = SkIRect::MakeWH(10, 10);
   SkMatrix matrix = SkMatrix::I();
@@ -99,7 +100,8 @@
 
   base::Optional<PlaybackImageProvider::Settings> settings;
   settings.emplace();
-  PlaybackImageProvider provider(&cache, gfx::ColorSpace(), settings);
+  PlaybackImageProvider provider(&cache, gfx::ColorSpace(),
+                                 std::move(settings));
 
   {
     SkRect rect = SkRect::MakeWH(10, 10);
@@ -127,7 +129,8 @@
   settings.emplace();
   settings->image_to_current_frame_index = image_to_frame;
 
-  PlaybackImageProvider provider(&cache, gfx::ColorSpace(), settings);
+  PlaybackImageProvider provider(&cache, gfx::ColorSpace(),
+                                 std::move(settings));
 
   SkIRect rect = SkIRect::MakeWH(10, 10);
   SkMatrix matrix = SkMatrix::I();
@@ -143,7 +146,8 @@
 
   base::Optional<PlaybackImageProvider::Settings> settings;
   settings.emplace();
-  PlaybackImageProvider provider(&cache, gfx::ColorSpace(), settings);
+  PlaybackImageProvider provider(&cache, gfx::ColorSpace(),
+                                 std::move(settings));
 
   {
     SkIRect rect = SkIRect::MakeWH(10, 10);
@@ -174,7 +178,8 @@
   MockDecodeCache cache;
   base::Optional<PlaybackImageProvider::Settings> settings;
   settings.emplace();
-  PlaybackImageProvider provider(&cache, gfx::ColorSpace(), settings);
+  PlaybackImageProvider provider(&cache, gfx::ColorSpace(),
+                                 std::move(settings));
   {
     SkIRect rect = SkIRect::MakeWH(10, 10);
     SkMatrix matrix = SkMatrix::I();