# 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.

import("//flutter/common/config.gni")
import("//flutter/testing/testing.gni")

source_set("external_view_embedder") {
  sources = [
    "external_view_embedder.cc",
    "external_view_embedder.h",
    "surface_pool.cc",
    "surface_pool.h",
  ]

  public_configs = [ "//flutter:config" ]

  deps = [
    "//flutter/common",
    "//flutter/flow",
    "//flutter/fml",
    "//flutter/shell/platform/android/context",
    "//flutter/shell/platform/android/jni",
    "//flutter/shell/platform/android/surface",
    "//third_party/skia",
  ]
}

test_fixtures("external_view_embedder_fixtures") {
  fixtures = []
}

executable("android_external_view_embedder_unittests") {
  testonly = true

  sources = [
    "external_view_embedder_unittests.cc",
    "surface_pool_unittests.cc",
  ]

  deps = [
    ":external_view_embedder",
    ":external_view_embedder_fixtures",
    "//flutter/flow",
    "//flutter/shell/gpu:gpu_surface_gl",
    "//flutter/shell/platform/android/jni:jni_mock",
    "//flutter/shell/platform/android/surface",
    "//flutter/shell/platform/android/surface:surface_mock",
    "//flutter/testing",
    "//flutter/testing:dart",
    "//flutter/testing:skia",
  ]
}
