# Copyright 2017 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//services/shape_detection/features.gni") import("//testing/test.gni") import("//third_party/jni_zero/jni_zero.gni") source_set("api") { public = [ "chrome_shape_detection_api.h" ] } source_set("lib") { sources = [ "shape_detection_service.cc", "shape_detection_service.h", "text_detection_impl.h", ] deps = [ "//build:branding_buildflags", "//mojo/public/cpp/bindings", "//ui/gfx", "//ui/gfx/geometry", ] public_deps = [ "//base", "//media/capture", "//services/shape_detection/public/mojom", ] if (is_mac) { sources += [ "detection_utils_mac.h", "detection_utils_mac.mm", "face_detection_impl_mac.h", "face_detection_impl_mac.mm", "face_detection_impl_mac_vision.h", "face_detection_impl_mac_vision.mm", "face_detection_provider_mac.h", "face_detection_provider_mac.mm", "text_detection_impl_mac.h", "text_detection_impl_mac.mm", ] frameworks = [ "QuartzCore.framework", "Vision.framework", ] } else if (is_win) { sources += [ "detection_utils_win.cc", "detection_utils_win.h", "face_detection_impl_win.cc", "face_detection_impl_win.h", "face_detection_provider_win.cc", "face_detection_provider_win.h", "text_detection_impl_win.cc", "text_detection_impl_win.h", ] } else if (is_android) { # No C++ sources needed, face and text detection is provided by Java. } else { sources += [ "face_detection_provider_impl.cc", "face_detection_provider_impl.h", "text_detection_impl.cc", ] } if (is_mac) { # On macOS there is a barcode detection API available from the platform. sources += [ "barcode_detection_impl_mac_vision.h", "barcode_detection_impl_mac_vision.mm", "barcode_detection_impl_mac_vision_api.h", "barcode_detection_impl_mac_vision_api.mm", "barcode_detection_provider_mac.h", "barcode_detection_provider_mac.mm", ] } else if (is_android) { # No C++ sources needed, barcode detection is provided by Java. } else if (build_with_internal_shape_detection) { sources += [ "barcode_detection_impl_chrome.cc", "barcode_detection_impl_chrome.h", "barcode_detection_provider_chrome.cc", "barcode_detection_provider_chrome.h", "features.cc", "features.h", "shape_detection_library_holder.cc", "shape_detection_library_holder.h", ] public_deps += [ ":api" ] data_deps = [ "//services/shape_detection/internal:shape_detection_internal" ] } else { # Otherwise, use a stub implementation. sources += [ "barcode_detection_provider_impl.cc", "barcode_detection_provider_impl.h", ] } configs += [ "//build/config/compiler:wexit_time_destructors" ] if (is_android) { deps += [ ":shape_detection_jni_headers" ] } else if (is_chromeos || is_linux) { sources += [ "shape_detection_sandbox_hook.cc", "shape_detection_sandbox_hook.h", ] deps += [ "//sandbox/policy" ] } } if (is_android) { generate_jni("shape_detection_jni_headers") { sources = [ "android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java", ] } android_library("shape_detection_java") { sources = [ "android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java", "android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java", "android/java/src/org/chromium/shape_detection/BitmapUtils.java", "android/java/src/org/chromium/shape_detection/FaceDetectionImpl.java", "android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java", "android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java", "android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java", "android/java/src/org/chromium/shape_detection/TextDetectionImpl.java", ] deps = [ "$google_play_services_package:google_play_services_base_java", "$google_play_services_package:google_play_services_basement_java", "$google_play_services_package:google_play_services_vision_common_java", "$google_play_services_package:google_play_services_vision_java", "//base:base_java", "//mojo/public/java:base_java", "//mojo/public/java:bindings_java", "//mojo/public/java:system_java", "//mojo/public/java/system:system_impl_java", "//mojo/public/mojom/base:base_java", "//services/shape_detection/public/mojom:mojom_java", "//skia/public/mojom:mojom_java", "//third_party/android_deps:chromium_play_services_availability_java", "//third_party/jni_zero:jni_zero_java", "//ui/gfx/geometry/mojom:mojom_java", ] } } source_set("tests") { testonly = true sources = [] if (is_mac) { sources += [ "barcode_detection_impl_mac_unittest.mm", "barcode_detection_provider_mac_unittest.mm", "face_detection_impl_mac_unittest.mm", "text_detection_impl_mac_unittest.mm", ] frameworks = [ "CoreFoundation.framework", "CoreGraphics.framework", "QuartzCore.framework", ] # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and # enable the diagnostic by removing this line. configs += [ "//build/config/compiler:no_exit_time_destructors" ] } if (is_win) { sources += [ "face_detection_impl_win_unittest.cc", "text_detection_impl_win_unittest.cc", ] } if (build_with_internal_shape_detection) { sources += [ "barcode_detection_impl_chrome_unittest.cc" ] } deps = [ ":lib", "//base", "//base/test:test_support", "//mojo/public/cpp/test_support:test_utils", "//skia", "//testing/gmock", "//testing/gtest", "//ui/gfx", "//ui/gl", ] data = [ "//services/test/data/codabar.png", "//services/test/data/code_39.png", "//services/test/data/code_93.png", "//services/test/data/code_128.png", "//services/test/data/data_matrix.png", "//services/test/data/ean_8.png", "//services/test/data/ean_13.png", "//services/test/data/itf.png", "//services/test/data/mona_lisa.jpg", "//services/test/data/pdf417.png", "//services/test/data/qr_code.png", "//services/test/data/text_detection.png", "//services/test/data/the_beatles.jpg", "//services/test/data/upc_a.png", "//services/test/data/upc_e.png", ] }