# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//extensions/features/features.gni")
import("//testing/test.gni")
import("//tools/grit/grit_rule.gni")
import("//tools/grit/repack.gni")

assert(enable_extensions)

group("extensions_resources") {
  public_deps = [
    ":extensions_browser_resources",
    ":extensions_renderer_resources",
    ":extensions_resources_grd",
  ]
}

grit("extensions_resources_grd") {
  source = "extensions_resources.grd"
  outputs = [
    "grit/extensions_resources.h",
    "extensions_resources.pak",
  ]
}

grit("extensions_browser_resources") {
  source = "browser/resources/extensions_browser_resources.grd"
  outputs = [
    "grit/extensions_browser_resources.h",
    "grit/extensions_browser_resources_map.cc",
    "grit/extensions_browser_resources_map.h",
    "extensions_browser_resources_100_percent.pak",
    "extensions_browser_resources_200_percent.pak",
  ]
  grit_flags = [
    "-E",
    "mojom_root=" + rebase_path(root_gen_dir),
  ]
}

grit("extensions_renderer_resources") {
  source = "renderer/resources/extensions_renderer_resources.grd"
  outputs = [
    "grit/extensions_renderer_resources.h",
    "extensions_renderer_resources.pak",
  ]
  grit_flags = [
    "-E",
    "mojom_root=" + rebase_path(root_gen_dir),
  ]

  deps = [
    "//chrome/browser/media/router:mojo_bindings__generator",
    "//device/serial:serial_mojo__generator",
    "//extensions/common:mojo__generator",
    "//extensions/common/api:mojom__generator",
    "//mojo/common:common_custom_types__generator",
  ]
}

static_library("test_support") {
  testonly = true
  sources = [
    "browser/api/cast_channel/cast_test_util.cc",
    "browser/api/cast_channel/cast_test_util.h",
    "browser/api/dns/mock_host_resolver_creator.cc",
    "browser/api/dns/mock_host_resolver_creator.h",
    "browser/api/storage/settings_test_util.cc",
    "browser/api/storage/settings_test_util.h",
    "browser/api_test_utils.cc",
    "browser/api_test_utils.h",
    "browser/api_unittest.cc",
    "browser/api_unittest.h",
    "browser/app_window/test_app_window_contents.cc",
    "browser/app_window/test_app_window_contents.h",
    "browser/extension_error_test_util.cc",
    "browser/extension_error_test_util.h",
    "browser/extensions_test.cc",
    "browser/extensions_test.h",
    "browser/guest_view/mime_handler_view/test_mime_handler_view_guest.cc",
    "browser/guest_view/mime_handler_view/test_mime_handler_view_guest.h",
    "browser/mock_extension_system.cc",
    "browser/mock_extension_system.h",
    "browser/scoped_ignore_content_verifier_for_test.cc",
    "browser/scoped_ignore_content_verifier_for_test.h",
    "browser/test_extension_registry_observer.cc",
    "browser/test_extension_registry_observer.h",
    "browser/test_extensions_browser_client.cc",
    "browser/test_extensions_browser_client.h",
    "browser/test_image_loader.cc",
    "browser/test_image_loader.h",
    "browser/test_management_policy.cc",
    "browser/test_management_policy.h",
    "browser/test_runtime_api_delegate.cc",
    "browser/test_runtime_api_delegate.h",
    "common/extension_builder.cc",
    "common/extension_builder.h",
    "common/manifest_test.cc",
    "common/manifest_test.h",
    "common/permissions/permission_message_test_util.cc",
    "common/permissions/permission_message_test_util.h",
    "common/test_util.cc",
    "common/test_util.h",
    "renderer/test_extensions_renderer_client.cc",
    "renderer/test_extensions_renderer_client.h",
    "test/background_page_watcher.cc",
    "test/background_page_watcher.h",
    "test/extension_test_message_listener.cc",
    "test/extension_test_message_listener.h",
    "test/extension_test_notification_observer.cc",
    "test/extension_test_notification_observer.h",
    "test/result_catcher.cc",
    "test/result_catcher.h",
    "test/test_content_utility_client.cc",
    "test/test_content_utility_client.h",
    "test/test_extensions_client.cc",
    "test/test_extensions_client.h",
    "test/test_permission_message_provider.cc",
    "test/test_permission_message_provider.h",
  ]

  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  deps = [
    ":extensions_resources",
    "//base",
    "//components/cast_certificate:test_support",
    "//components/guest_view/browser:test_support",
    "//components/pref_registry:test_support",
    "//components/prefs:test_support",
    "//content/public/common",
    "//content/test:test_support",
    "//extensions/browser",
    "//extensions/browser/api:api_registration",
    "//extensions/common",
    "//extensions/common/api",
    "//extensions/test:extensions_features",
    "//net:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/cld",
  ]

  public_deps = [
    "//content/public/browser",
    "//extensions/common/api/cast_channel:cast_channel_proto",
  ]
}

repack("shell_and_test_pak") {
  sources = [
    "$root_gen_dir/blink/devtools_resources.pak",
    "$root_gen_dir/blink/public/resources/blink_image_resources_100_percent.pak",
    "$root_gen_dir/blink/public/resources/blink_resources.pak",
    "$root_gen_dir/content/app/strings/content_strings_en-US.pak",
    "$root_gen_dir/content/content_resources.pak",
    "$root_gen_dir/content/shell/shell_resources.pak",
    "$root_gen_dir/extensions/extensions_browser_resources_100_percent.pak",
    "$root_gen_dir/extensions/extensions_renderer_resources.pak",
    "$root_gen_dir/extensions/extensions_resources.pak",
    "$root_gen_dir/extensions/shell/app_shell_resources.pak",
    "$root_gen_dir/extensions/strings/extensions_strings_en-US.pak",
    "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
    "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak",
    "$root_gen_dir/ui/strings/ui_strings_en-US.pak",
  ]

  output = "$root_out_dir/extensions_shell_and_test.pak"

  deps = [
    ":extensions_resources",
    "//content:resources",
    "//content/app/strings",
    "//content/browser/devtools:devtools_resources",
    "//content/shell:resources",
    "//extensions/shell:resources",
    "//extensions/strings",
    "//third_party/WebKit/public:image_resources",
    "//third_party/WebKit/public:resources",
    "//ui/resources",
    "//ui/strings",
  ]
}

test("extensions_unittests") {
  sources = [
    "test/extensions_unittests_main.cc",
  ]

  data = [
    "test/data/",
    "//chrome/test/data/extensions/",
    "//components/test/data/cast_certificate/",
    "$root_out_dir/content_shell.pak",
    "$root_out_dir/extensions_shell_and_test.pak",
  ]

  deps = [
    ":extensions_resources",
    ":shell_and_test_pak",
    ":test_support",
    "//base/test:test_support",
    "//content/public/common",
    "//content/test:test_support",
    "//extensions/browser:unit_tests",
    "//extensions/common",
    "//extensions/common:unit_tests",
    "//extensions/renderer:unit_tests",
    "//extensions/shell:unit_tests",
    "//extensions/utility:unit_tests",
    "//mojo/edk/test:test_support",
    "//ui/gl:test_support",
  ]

  data_deps = [
    "//third_party/mesa:osmesa",
  ]
}

test("extensions_browsertests") {
  data = [
    "//extensions/test/data/",
    "//net/tools/testserver/",
    "//third_party/pyftpdlib/",
    "//third_party/pywebsocket/",
    "//third_party/tlslite/",
    "$root_out_dir/extensions_shell_and_test.pak",
  ]

  deps = [
    "//extensions/browser:browser_tests",
    "//extensions/shell:browser_tests",
  ]

  data_deps = [
    "//third_party/mesa:osmesa",
  ]
}

# TODO(rockot) bug 505926: These should be moved to extensions_browsertests but have
# old dependencies on chrome files. The chrome dependencies should be removed
# and these moved to the extensions_browsertests target. Currently, we solve
# the problem by making this a source set and linking it into
# //chrome/test:browser_tests.
source_set("chrome_extensions_browsertests") {
  testonly = true
  sources = [
    "browser/api/app_window/app_window_apitest.cc",
    "browser/api/bluetooth/bluetooth_apitest.cc",
    "browser/api/bluetooth/bluetooth_private_apitest.cc",
    "browser/api/cast_channel/cast_channel_apitest.cc",
    "browser/api/runtime/runtime_apitest.cc",
    "browser/api/serial/serial_apitest.cc",
    "browser/api/usb/usb_manual_apitest.cc",
    "browser/app_window/app_window_browsertest.cc",
    "browser/guest_view/extension_options/extension_options_apitest.cc",
    "browser/guest_view/mime_handler_view/mime_handler_view_browsertest.cc",
    "renderer/console_apitest.cc",
    "renderer/script_context_browsertest.cc",
  ]

  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]

  # These are the deps from browser_tests minus some internal Chrome ones that
  # aren't allowed to be included here and that aren't needed.
  deps = [
    "//base",
    "//base:i18n",
    "//base/test:test_support",
    "//chrome/browser",
    "//chrome/browser/resources:extension_resource_demo",
    "//chrome/common/extensions/api",
    "//chrome/renderer",
    "//components/autofill/content/browser:risk_proto",
    "//components/autofill/content/renderer:test_support",
    "//components/captive_portal:test_support",
    "//components/dom_distiller/content/browser",
    "//components/dom_distiller/core:test_support",
    "//components/guest_view/browser:test_support",
    "//components/resources",
    "//components/strings",
    "//components/sync",
    "//components/sync:test_support_model",
    "//components/translate/core/common",
    "//crypto:platform",
    "//crypto:test_support",
    "//device/bluetooth:mocks",
    "//device/serial:test_support",
    "//extensions/common/api",
    "//google_apis:test_support",
    "//media",
    "//media/base:test_support",
    "//media/cast:test_support",
    "//net",
    "//net:test_support",
    "//sdch",
    "//skia",
    "//testing/gmock",
    "//testing/gtest",
    "//testing/perf",
    "//third_party/WebKit/public:blink",
    "//third_party/cacheinvalidation",
    "//third_party/icu",
    "//third_party/leveldatabase",
    "//third_party/libaddressinput",
    "//third_party/libjingle",
    "//third_party/webrtc/modules/desktop_capture",
    "//third_party/widevine/cdm:headers",
    "//ui/accessibility:test_support",
    "//ui/base:test_support",
    "//ui/compositor:test_support",
    "//ui/resources",
    "//ui/web_dialogs:test_support",
    "//v8",
  ]

  if (is_chromeos) {
    deps += [ "//components/user_manager:test_support" ]
  }
}

# TODO(rockot) bug 505926: This should be deleted for the same reason as
# chrome_extensions_browsertests.
source_set("chrome_extensions_interactive_uitests") {
  testonly = true
  sources = [
    "browser/app_window/app_window_interactive_uitest.cc",
  ]

  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]

  # These are the deps from interactive_uitests minus some internal Chrome
  # ones that aren't allowed to be included here and that aren't needed.
  deps = [
    "//chrome/browser",
    "//chrome/browser/devtools",
    "//chrome/renderer",
    "//chrome/test:test_support",
    "//components/sync",
    "//content/app/resources",
    "//crypto:platform",
    "//crypto:test_support",
    "//google_apis:test_support",
    "//net",
    "//net:net_resources",
    "//net:test_support",
    "//skia",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/hunspell",
    "//third_party/icu",
    "//third_party/libpng",
    "//third_party/zlib",
    "//ui/base:test_support",
    "//ui/resources:ui_test_pak",
    "//ui/web_dialogs:test_support",
  ]
  if (use_qt) {
    deps -= [
      "//chrome/test:test_support",
    ]
  }
}
