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

blink_devtools_output_dir = "$root_gen_dir/blink/devtools/"

gypi_values = exec_script(
    "//build/gypi_to_gn.py",
    [ rebase_path("devtools.gypi") ],
    "scope",
    [ "devtools.gypi" ])

# Some of the files in the .gypi use GYP variable expansions, go through and
# fix them.
devtools_core_base_files = gypi_values.devtools_core_base_files - [
  "<@(devtools_main_js_files)",
  "<@(devtools_standalone_files)",
] + gypi_values.devtools_main_js_files + gypi_values.devtools_standalone_files

devtools_core_js_files =
  devtools_core_base_files +
  gypi_values.devtools_common_js_files +
  gypi_values.devtools_sdk_js_files +
  gypi_values.devtools_ui_js_files +
  gypi_values.devtools_components_js_files +
  gypi_values.devtools_host_js_files +
  gypi_values.devtools_screencast_js_files +
  gypi_values.devtools_toolbox_js_files

devtools_extensions_js_files = gypi_values.devtools_extensions_js_files -
  [ "<@(devtools_extension_api_files)" ] +
  gypi_values.devtools_extension_api_files

#-------------------------------------------------------------------------------

visibility = "//third_party/WebKit/*"

# Probably need to parameterize this. If we set it to true, there will be some
# further work in the scripts below.
debug_devtools = false

group("devtools_frontend_resources") {
  deps = [
    ":build_audits_module",
    ":build_console_module",
    ":build_core_module",
    ":build_devices_module",
    ":build_elements_module",
    ":build_extensions_module",
    ":build_heap_snapshot_worker_module",
    ":build_layers_module",
    ":build_network_module",
    ":build_profiler_module",
    ":build_resources_module",
    ":build_script_formatter_worker_module",
    ":build_settings_module",
    ":build_source_frame_module",
    ":build_sources_module",
    ":build_temp_storage_shared_worker_module",
    ":build_timeline_module",
    ":copy_inspector_images",
    ":devtools_html",
    ":frontend_protocol_sources",
    ":supported_css_properties",
  ]

  if (debug_devtools) {
    deps += [ ":concatenated_devtools_css" ]
  }
}

copy("copy_inspector_images") {
  sources = gypi_values.devtools_image_files
  outputs = [ "$root_out_dir/resources/inspector/Images/{{source_file_part}}" ]
}

# TODO(GYP) need debug_devtools support (this runs somewhat differently).
action("generate_devtools_grd") {
  script = "scripts/generate_devtools_grd.py"

  input_pages = [
    "$root_out_dir/resources/inspector/devtools.html",
    "$root_out_dir/resources/inspector/inspector.css",
    "$root_out_dir/resources/inspector/audits/_module.js",
    "$root_out_dir/resources/inspector/console/_module.js",
    "$root_out_dir/resources/inspector/devices/_module.js",
    "$root_out_dir/resources/inspector/elements/_module.js",
    "$root_out_dir/resources/inspector/extensions/_module.js",
    "$root_out_dir/resources/inspector/heap_snapshot_worker/_module.js",
    "$root_out_dir/resources/inspector/layers/_module.js",
    "$root_out_dir/resources/inspector/main/Main.js",
    "$root_out_dir/resources/inspector/network/_module.js",
    "$root_out_dir/resources/inspector/profiler/_module.js",
    "$root_out_dir/resources/inspector/resources/_module.js",
    "$root_out_dir/resources/inspector/script_formatter_worker/_module.js",
    "$root_out_dir/resources/inspector/source_frame/_module.js",
    "$root_out_dir/resources/inspector/sources/_module.js",
    "$root_out_dir/resources/inspector/temp_storage_shared_worker/_module.js",
    "$root_out_dir/resources/inspector/timeline/_module.js",
    "$root_out_dir/resources/inspector/devtools_extension_api.js",
  ] + gypi_values.devtools_standalone_files + gypi_values.devtools_cm_css_files

  images = gypi_values.devtools_image_files
  images_path = "front_end/Images"

  inputs = input_pages + images

  outfile = "$root_gen_dir/devtools/devtools_resources.grd"
  outputs = [ outfile ]

  relative_path_dirs = [
    "$root_out_dir/resources/inspector",
    "frontend",
  ]

  args = rebase_path(input_pages, root_build_dir) + [
    "--relative_path_dirs" ] +
    rebase_path(relative_path_dirs, root_build_dir) + [
    "--images", rebase_path(images_path, root_build_dir),
    "--output", rebase_path(outfile, root_build_dir),
  ]

  deps = [
    ":devtools_html",
    ":devtools_extension_api",
    ":devtools_frontend_resources",
  ]
}

action("devtools_html") {
  script = "scripts/generate_devtools_html.py"

  inputs = [ "front_end/inspector.html"]
  outputs = [ "$root_out_dir/resources/inspector/devtools.html"]

  args = rebase_path(inputs, root_build_dir) +
    rebase_path(outputs, root_build_dir)

  if (debug_devtools) {
    args += [ "1" ]
  } else {
    args += [ "0" ]
  }
}

action("devtools_extension_api") {
  script = "scripts/generate_devtools_extension_api.py"

  inputs = gypi_values.devtools_extension_api_files
  outputs = [ "$root_out_dir/resources/inspector/devtools_extension_api.js" ]

  args = rebase_path(outputs, root_build_dir) +
    rebase_path(gypi_values.devtools_extension_api_files, root_build_dir)
}

action("supported_css_properties") {
  script = "scripts/generate_supported_css.py"

  inputs = [
    "../core/css/CSSProperties.in",
  ]

  outputs = [
    blink_devtools_output_dir + "SupportedCSSProperties.js"
  ]

  args = rebase_path(inputs, root_build_dir) +
    rebase_path(outputs, root_build_dir)
}

action("frontend_protocol_sources") {
  script = "scripts/CodeGeneratorFrontend.py"

  inputs = [ "protocol.json" ]
  outputs = [ blink_devtools_output_dir + "InspectorBackendCommands.js" ]

  args = rebase_path(inputs, root_build_dir) + [
    "--output_js_dir", rebase_path(blink_devtools_output_dir, root_build_dir),
  ]
}

# Runs the inline_js_imports script.
#  module_name: (String) The JS module name to process.
#  imported_files: (List of strings) The list of files the input depends on.
template("inline_js_imports") {
  assert(defined(invoker.module_name), target_name)
  assert(defined(invoker.imported_files), target_name)

  action(target_name) {
    script = "scripts/inline_js_imports.py"
    module_name = invoker.module_name

    input = "front_end/" + module_name + "/_module.js"
    inputs = [ input ] + invoker.imported_files

    output = "$root_out_dir/resources/inspector/" + module_name + "/_module.js"
    outputs = [ output ]

    args = [
      rebase_path(input, root_build_dir),
      rebase_path(output, root_build_dir),
    ]
  }
}

inline_js_imports("build_audits_module") {
  module_name = "audits"
  imported_files = gypi_values.devtools_audits_js_files
}

inline_js_imports("build_console_module") {
  module_name = "console"
  imported_files = gypi_values.devtools_console_js_files
}

action("build_core_module") {
  script = "scripts/concatenate_js_files.py"
  input_page = "front_end/inspector.html"
  inputs = [
    input_page,
    blink_devtools_output_dir + "InspectorBackendCommands.js",
    blink_devtools_output_dir + "SupportedCSSProperties.js",
    blink_devtools_output_dir + "common/modules.js",
  ] + devtools_core_js_files

  search_path = [
    blink_devtools_output_dir,
    "front_end",
  ]
  outputs = [
    "$root_out_dir/resources/inspector/main/Main.js",
  ]

  args = [
    rebase_path(input_page, root_build_dir),
  ]
  args += rebase_path(search_path, root_build_dir)
  args += rebase_path(outputs, root_build_dir)

  deps = [
    ":devtools_html",
    ":supported_css_properties",
    ":frontend_protocol_sources",
    ":concatenated_module_descriptors",
  ]
}

inline_js_imports("build_devices_module") {
  module_name = "devices"
  imported_files = gypi_values.devtools_devices_js_files
}

inline_js_imports("build_documentation_module") {
  module_name = "documentation"
  imported_files = gypi_values.devtools_documentation_js_files
}

inline_js_imports("build_elements_module") {
  module_name = "elements"
  imported_files = gypi_values.devtools_elements_js_files
}

inline_js_imports("build_extensions_module") {
  module_name = "extensions"
  imported_files = devtools_extensions_js_files
}

inline_js_imports("build_heap_snapshot_worker_module") {
  module_name = "heap_snapshot_worker"
  imported_files = gypi_values.devtools_heap_snapshot_worker_js_files
}

inline_js_imports("build_layers_module") {
  module_name = "layers"
  imported_files = gypi_values.devtools_layers_js_files
}

inline_js_imports("build_network_module") {
  module_name = "network"
  imported_files = gypi_values.devtools_network_js_files
}

inline_js_imports("build_profiler_module") {
  module_name = "profiler"
  imported_files = gypi_values.devtools_profiler_js_files
}

inline_js_imports("build_resources_module") {
  module_name = "resources"
  imported_files = gypi_values.devtools_resources_js_files
}

inline_js_imports("build_script_formatter_worker_module") {
  module_name = "script_formatter_worker"
  imported_files = gypi_values.devtools_uglify_files
}

inline_js_imports("build_settings_module") {
  module_name = "settings"
  imported_files = gypi_values.devtools_settings_js_files
}

inline_js_imports("build_source_frame_module") {
  module_name = "source_frame"
  imported_files = gypi_values.devtools_source_frame_js_files +
    gypi_values.devtools_cm_js_files
}

inline_js_imports("build_sources_module") {
  module_name = "sources"
  imported_files = gypi_values.devtools_sources_js_files
}

inline_js_imports("build_temp_storage_shared_worker_module") {
  module_name = "temp_storage_shared_worker"
  imported_files = gypi_values.devtools_temp_storage_shared_worker_js_files
}

inline_js_imports("build_timeline_module") {
  module_name = "timeline"
  imported_files = gypi_values.devtools_timeline_js_files
}

action("concatenated_module_descriptors") {
  script = "scripts/concatenate_module_descriptors.py"

  input = "front_end/common/modules.js"
  inputs = [ input ] + gypi_values.devtools_module_json_files
  outputs = [ blink_devtools_output_dir + "common/modules.js" ]

  args = rebase_path([ input ] + outputs + gypi_values.devtools_module_json_files, root_build_dir)
}

action("concatenated_devtools_css") {
  script = "scripts/concatenate_css_files.py"

  input_stylesheet = "front_end/inspector.css"
  inputs = [ input_stylesheet ] + devtools_core_base_files

  outputs = [ "$root_out_dir/resources/inspector/inspector.css" ]

  args = [ rebase_path(input_stylesheet, root_build_dir) ] +
    rebase_path(outputs, root_build_dir)
}
