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

source_set("metro_viewer_constants") {
  sources = [
    "viewer/metro_viewer_constants.cc",
    "viewer/metro_viewer_constants.h",
  ]
}

component("metro_viewer") {
  sources = [
    "viewer/metro_viewer_process_host.cc",
    "viewer/metro_viewer_process_host.h",
  ]

  defines = [ "METRO_VIEWER_IMPLEMENTATION" ]

  deps = [
    ":metro_viewer_constants",
    "//base",
    "//ipc",
    "//ui/aura",
    "//ui/gfx",
    "//ui/metro_viewer",
  ]
}

source_set("test_support_win8") {
  sources = [
    "test/open_with_dialog_async.cc",
    "test/open_with_dialog_async.h",
    "test/open_with_dialog_controller.cc",
    "test/open_with_dialog_controller.h",
    "test/ui_automation_client.cc",
    "test/ui_automation_client.h",
  ]

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

  deps = [
    ":test_registrar_constants",
    "//base",
  ]
}

source_set("test_registrar_constants") {
  sources = [
    "test/test_registrar_constants.cc",
    "test/test_registrar_constants.h",
  ]
}

executable("test_registrar") {
  sources = [
    "test/test_registrar.cc",
    "test/test_registrar.rc",
    "test/test_registrar.rgs",
    "test/test_registrar_resource.h",
  ]

  configs -= [ "//build/config/win:console" ]
  configs += [ "//build/config/win:windowed" ]

  deps = [
    ":test_registrar_constants",
    "//base",
    "//build/config/sanitizers:deps",

    # Chrome is the default viewer process currently used by the tests.
    # TODO(robertshield): Investigate building a standalone metro viewer
    # process.
    "//chrome",
  ]
}
