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

assert(!is_android && !is_ios, "Desktop zoom is not used on mobile platforms.")

static_library("zoom") {
  sources = [
    "page_zoom.cc",
    "page_zoom.h",
    "page_zoom_constants.cc",
    "page_zoom_constants.h",
    "zoom_controller.cc",
    "zoom_controller.h",
    "zoom_event_manager.cc",
    "zoom_event_manager.h",
    "zoom_event_manager_observer.h",
    "zoom_observer.h",
  ]

  deps = [
    "//base",
    "//components/prefs",
    "//content/public/browser",
    "//content/public/common",
    "//ipc",
    "//net",
    "//third_party/blink/public/common",
    "//url",
  ]
}

static_library("test_support") {
  testonly = true
  sources = [
    "test/zoom_test_utils.cc",
    "test/zoom_test_utils.h",
  ]
  deps = [
    ":zoom",
    "//base:base",
    "//content/test:test_support",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "page_zoom_unittests.cc",
  ]
  deps = [
    ":zoom",
    "//components/prefs",
    "//content/public/common",
    "//testing/gtest",
  ]
}
