// Copyright 2013 The Flutter 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 "flutter/flow/layers/child_scene_layer.h"

#include "flutter/flow/view_holder.h"

namespace flutter {

ChildSceneLayer::ChildSceneLayer(zx_koid_t layer_id,
                                 const SkPoint& offset,
                                 const SkSize& size,
                                 bool hit_testable)
    : layer_id_(layer_id),
      offset_(offset),
      size_(size),
      hit_testable_(hit_testable) {}

void ChildSceneLayer::Preroll(PrerollContext* context, const SkMatrix& matrix) {
  set_needs_system_composite(true);
}

void ChildSceneLayer::Paint(PaintContext& context) const {
  FML_NOTREACHED() << "This layer never needs painting.";
}

void ChildSceneLayer::UpdateScene(SceneUpdateContext& context) {
  FML_DCHECK(needs_system_composite());

  auto* view_holder = ViewHolder::FromId(layer_id_);
  FML_DCHECK(view_holder);

  view_holder->UpdateScene(context, offset_, size_, hit_testable_);
}

}  // namespace flutter