// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "cc/raster/paint_worklet_image_provider.h"

#include <utility>
#include "base/bind_helpers.h"

namespace cc {

PaintWorkletImageProvider::PaintWorkletImageProvider(
    PaintWorkletRecordMap records)
    : records_(std::move(records)) {}

PaintWorkletImageProvider::~PaintWorkletImageProvider() = default;

PaintWorkletImageProvider::PaintWorkletImageProvider(
    PaintWorkletImageProvider&& other) = default;

PaintWorkletImageProvider& PaintWorkletImageProvider::operator=(
    PaintWorkletImageProvider&& other) = default;

ImageProvider::ScopedResult PaintWorkletImageProvider::GetPaintRecordResult(
    scoped_refptr<PaintWorkletInput> input) {
  // The |records_| contains all known PaintWorkletInputs, whether they are
  // painted or not, so |input| should always exist in it.
  auto it = records_.find(input);
  DCHECK(it != records_.end());
  return ImageProvider::ScopedResult(it->second);
}

}  // namespace cc
