# Copyright 2022 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

copy("demos_testdata") {
  sources = [
    "animations-demo/index.html",
    "animations-demo/layer_fern.css",
    "animations-demo/layer_fern.js",
    "animations-demo/layer_intro.css",
    "animations-demo/layer_intro.js",
    "animations-demo/layer_sun.css",
    "animations-demo/layer_sun.js",
    "background-mode-demo/background-mode-demo.html",
    "background-mode-demo/background-mode-demo.js",
    "cobalt-oxide/cobalt-oxide.css",
    "cobalt-oxide/cobalt-oxide.html",
    "cobalt-oxide/cobalt-oxide.js",
    "color-transitions-demo/color-transitions-demo.html",
    "crash-demo/crash-demo.html",
    "deep-link-demo/deep-link-demo.html",
    "deviceorientation-demo/deviceorientation-demo.html",
    "disable-jit/index.html",
    "dom-gc-demo/dom-gc-demo.html",
    "dual-playback-demo/bear.mp4",
    "dual-playback-demo/dual-playback-demo.html",
    "eme-demo/eme-demo.html",
    "eme-demo/eme-demo.js",
    "focus-demo/focus-demo.html",
    "hybrid-navigation/hybrid-navigation-grid.html",
    "lottie-player-demo/lottie-player-demo.html",
    "lottie-player-demo/lottie-player-raw-json-demo.html",
    "lottie-player-demo/white_material_wave_loading.json",
    "material-design-spinner-demo/index.html",
    "media-capture/media-devices-test.html",
    "media-element-demo/.gitignore",
    "media-element-demo/README.md",
    "media-element-demo/legacy/key-systems.html",
    "media-element-demo/legacy/key-systems.js",
    "media-element-demo/package-lock.json",
    "media-element-demo/package.json",
    "media-element-demo/public/assets/vp9_720p.webm",
    "media-element-demo/public/index.html",
    "media-element-demo/public/styles/app.css",
    "media-element-demo/src/components/component.ts",
    "media-element-demo/src/components/download_buffer_info.ts",
    "media-element-demo/src/components/error_logger.ts",
    "media-element-demo/src/components/player.ts",
    "media-element-demo/src/components/router.ts",
    "media-element-demo/src/components/source_buffer_info.ts",
    "media-element-demo/src/components/video_info.ts",
    "media-element-demo/src/components/watch.ts",
    "media-element-demo/src/index.ts",
    "media-element-demo/src/utils/download_buffer.ts",
    "media-element-demo/src/utils/downloader.ts",
    "media-element-demo/src/utils/enums.ts",
    "media-element-demo/src/utils/limited_source_buffer.ts",
    "media-element-demo/src/utils/media.ts",
    "media-element-demo/src/utils/observable.ts",
    "media-element-demo/src/utils/shared_values.ts",
    "media-element-demo/tsconfig.json",
    "media-element-demo/webpack.config.js",
    "media-query/media-query-test.html",
    "mtm-demo/mtm.html",
    "mtm-demo/normal.html",
    "opacity-transitions-demo/opacity-transitions-demo.html",
    "page-visibility-demo/page-visibility-demo.html",
    "performance-api-demo/performance-lifecycle-timing-demo.html",
    "performance-api-demo/performance-resource-timing-demo.html",
    "performance-api-demo/resources/square.png",
    "pointer-events-demo/pointer-events-demo.html",
    "screen_diagonal/screen_diagonal.html",
    "script-debugger-test/script-debugger-test.html",
    "script-tag-demo/increment-and-print-i.js",
    "script-tag-demo/script-tag-demo.html",
    "selector-tester/selector-tester.html",
    "simple-xhr/simple-xhr.html",
    "simple-xhr/simple-xhr.js",
    "smooth-animations-demo/index.html",
    "smooth-key-scroll/index.html",
    "specificity-demo/specificity-demo.html",
    "speech-synthesis-demo/index.html",
    "splash_screen/beforeunload.html",
    "splash_screen/block_render_tree_html_display_none.html",
    "splash_screen/link_splash_screen.html",
    "splash_screen/link_splash_screen_network.html",
    "splash_screen/redirect_server.py",
    "splash_screen/redirected.html",
    "splash_screen/render_postponed.html",
    "system-caption-settings/index.html",
    "timer-demo/timer-demo.html",
    "transitions-demo/transitions-demo.html",
    "transparent-animated-webp-demo/bottleflip_loader.webp",
    "transparent-animated-webp-demo/index.html",
    "transparent-animated-webp-demo/loading-spinner-opaque.webp",
    "transparent-animated-webp-demo/webp-animated-semitransparent4.webp",
    "unload-demo/unload-demo.html",
    "user-agent-client-hints-demo/user-agent-client-hints-demo.html",
    "web-audio-demo/web-audio-demo.html",
  ]

  if (is_internal_build) {
    sources += [
      "media-element-demo/public/assets/ac3.mp4",
      "media-element-demo/public/assets/dash-audio.mp4",
      "media-element-demo/public/assets/dash-video-1080p.mp4",
      "media-element-demo/public/assets/dash-video-240p.mp4",
      "media-element-demo/public/assets/eac3.mp4",
      "media-element-demo/public/assets/hvc1_480p.mp4",
      "media-element-demo/public/assets/hvc1_480p_720p.mp4",
      "media-element-demo/public/assets/hvc1_720p.mp4",
      "media-element-demo/public/assets/hvc1_hdr_480p.mp4",
      "media-element-demo/public/assets/progressive.mp4",
      "mtm-demo/README.txt",
      "mtm-demo/progressive.mp4",
      "text-encoding-workaround/text-encoding-workaround.html",
    ]
  }

  outputs = [
    "$sb_static_contents_output_data_dir/test/demos/{{source_target_relative}}",
  ]
}
