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

import("//build/config/ui.gni")
import("//testing/test.gni")

assert(use_aura)

component("presenter") {
  sources = [
    "app_list_presenter_delegate.cc",
    "app_list_presenter_delegate.h",
    "app_list_presenter_export.h",
    "app_list_presenter_impl.cc",
    "app_list_presenter_impl.h",
  ]

  defines = [ "APP_LIST_PRESENTER_IMPLEMENTATION" ]

  public_deps = [
    "//ash/app_list",
    "//base",
    "//mojo/public/cpp/bindings",
    "//ui/aura",
    "//ui/compositor",
    "//ui/gfx/geometry",
    "//ui/views",

    # Temporary dependency to fix compile flake in http://crbug.com/611898.
    # TODO(tapted): Remove once http://crbug.com/612382 is fixed.
    "//ui/accessibility:ax_enums_mojo",
  ]
}
