# Copyright (C) 2021 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//base/inputmethod/imf/inputmethod.gni")
import("//build/test.gni")

config("module_private_config") {
  visibility = [ ":*" ]

  include_dirs = [
    "${inputmethod_path}/frameworks/ndk/include",
    "${inputmethod_path}/interfaces/kits/c",
    "${inputmethod_path}/services/include",
    "${inputmethod_path}/test/common",
    "${inputmethod_path}/services/adapter/settings_data_provider/common/include",
  ]
}

module_output_path = "imf/imf/cpp"

ohos_unittest("InputMethodControllerTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_agent_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_core_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/keyevent_consumer_service_impl.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "${inputmethod_path}/services/src/input_type_manager.cpp",
    "src/ime_event_monitor_manager_test.cpp",
    "src/input_method_controller_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_client_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "window_manager:libwm",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "config_policy:configpolicy_util",
    "os_account:os_account_innerkits",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "graphic_2d:librender_service_base",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
    "window_manager:libdm",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }

  if (build_selinux) {
    external_deps += [ "selinux_adapter:librestorecon" ]
    cflags = [ "-DWITH_SELINUX" ]
  }
}

ohos_unittest("InputMethodAttachTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "${inputmethod_path}/test/common/src/keyboard_listener_test_impl.cpp",
    "src/input_method_attach_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_client_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gmock",
    "googletest:gtest_main",
    "hilog:libhilog",
    "os_account:os_account_innerkits",
    "input:libmmi-client",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}
ohos_unittest("InputMethodAbilityTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_agent_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_core_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/task_manager.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/tasks/task.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/system_cmd_channel_service_impl.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "src/input_method_ability_exception_test.cpp",
    "src/input_method_ability_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_client_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "window_manager:libwm",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gtest_main",
    "graphic_2d:librender_service_client",
    "graphic_2d:window_animation",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "memmgr:memmgrclient",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "os_account:os_account_innerkits",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
    "window_manager:libwsutils",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("InputMethodServiceTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "src/input_method_service_test.cpp"
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_stub",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "access_token:libaccesstoken_sdk",
    "cJSON:cjson",
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
    "window_manager:libwsutils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("InputMethodDfxTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_agent_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_core_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "src/input_method_dfx_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/common:inputmethod_common",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_client_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/extImfBundle:extImf",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "window_manager:libwm",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "graphic_2d:librender_service_base",
    "hilog:libhilog",
    "hisysevent:libhisysevent",
    "os_account:os_account_innerkits",
    "hisysevent:libhisyseventmanager",
    "input:libmmi-client",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("InputMethodPanelTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_agent_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_core_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "src/input_method_panel_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/extImfBundle:extImf",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "window_manager:libwm",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "common_event_service:cesfwk_innerkits",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "graphic_2d:librender_service_base",
    "graphic_2d:librender_service_client",
    "graphic_2d:window_animation",
    "hilog:libhilog",
    "input:libmmi-client",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "os_account:os_account_innerkits",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
    "window_manager:libwsutils",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("InputMethodPanelAdjustTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_agent_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_core_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "src/input_method_panel_adjust_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "window_manager:libwm",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "cJSON:cjson",
    "c_utils:utils",
    "os_account:os_account_innerkits",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gtest_main",
    "graphic_2d:librender_service_base",
    "graphic_2d:librender_service_client",
    "graphic_2d:window_animation",
    "hilog:libhilog",
    "input:libmmi-client",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
    "window_manager:libwsutils",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("InputMethodSwitchTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "src/input_method_switch_test.cpp",
  ]

  configs = [
    ":module_private_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_native_public_config",
  ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/extImfBundle:extImf",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/newTestIme:newTestIme",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "safwk:system_ability_fwk",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }

  if (build_selinux) {
    external_deps += [ "selinux_adapter:librestorecon" ]
    cflags = [ "-DWITH_SELINUX" ]
  }
}

ohos_unittest("InputMethodPrivateMemberTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_agent_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_core_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/task_manager.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/tasks/task.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/services/adapter/ime_connection_manager/src/ime_connection.cpp",
    "${inputmethod_path}/services/adapter/settings_data_provider/common/src/settings_data_observer.cpp",
    "${inputmethod_path}/services/adapter/settings_data_provider/common/src/settings_data_utils.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "mock/datashare_helper.cpp",
    "src/input_method_private_member_test.cpp",
  ]

  configs = [
    ":module_private_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config",
  ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/newTestIme:newTestIme",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "ability_runtime:ability_connect_callback_stub",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_core",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "os_account:os_account_innerkits",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
  ]
  defines = []
  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
    defines += [ "SCENE_BOARD_ENABLE" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }

  if (build_selinux) {
    external_deps += [ "selinux_adapter:librestorecon" ]
    cflags = [ "-DWITH_SELINUX" ]
  }
}

ohos_unittest("InputMethodEditorTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/keyevent_consumer_service_impl.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "src/input_method_editor_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_client_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "os_account:os_account_innerkits",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("NewImeSwitchTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "src/newIme_switch_test.cpp",
  ]

  configs = [
    ":module_private_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_native_public_config",
  ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/newTestIme:newTestIme",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "safwk:system_ability_fwk",
    "window_manager:libwm",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }

  if (build_selinux) {
    external_deps += [ "selinux_adapter:librestorecon" ]
    cflags = [ "-DWITH_SELINUX" ]
  }
}

ohos_unittest("NumKeyAppsManagerTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path
  include_dirs = [ "${inputmethod_path}/common/include" ]
  sources = [ "src/numkey_apps_manager_test.cpp" ]

  configs = [ ":module_private_config" ]
  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services/file:imf_file_static",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:dataobs_manager",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "config_policy:configpolicy_util",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gtest_main",
    "hilog:libhilog",
    "init:libbeget_proxy",
    "init:libbegetutil",
    "input:libmmi-client",
    "ipc:ipc_single",
    "resource_management:global_resmgr",
  ]
}

ohos_unittest("IdentityCheckerTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/services/adapter/ime_connection_manager/src/ime_connection.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "src/identity_checker_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/common:inputmethod_common",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gmock",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "os_account:os_account_innerkits",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("TextListenerInnerApiTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "src/text_listener_inner_api_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "c_utils:utils",
    "eventhandler:libeventhandler",
    "googletest:gmock",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "napi:ace_napi",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

  ohos_unittest("ImeMultiUserTest") {
    branch_protector_ret = "pac_ret"
    sanitize = {
      cfi = true
      cfi_cross_dso = true
      debug = false
    }
    module_out_path = module_output_path

    sources = [
      "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
      "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
      "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
      "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
      "src/ime_multiuser_test.cpp",
    ]

    configs = [
      ":module_private_config",
      "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_native_public_config",
    ]

    deps = [
      "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
      "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
      "${inputmethod_path}/services:inputmethod_service",
      "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
      "${inputmethod_path}/test/common:inputmethod_test_common",
      "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
      "${inputmethod_path}/test/unittest/resource/bundle_dependencies/newTestIme:newTestIme",
      "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
    ]

    external_deps = [
    "access_token:libaccesstoken_sdk",
    "ace_engine:ace_ndk",
    "ace_engine:ace_uicontent",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
      "cJSON:cjson",
      "c_utils:utils",
      "data_share:datashare_common",
      "data_share:datashare_consumer",
      "googletest:gtest_main",
      "hilog:libhilog",
      "input:libmmi-client",
      "ipc:ipc_single",
      "safwk:system_ability_fwk",
    ]

    if (window_manager_use_sceneboard) {
      external_deps += [ "window_manager:libwm_lite" ]
    } else {
      external_deps += [ "window_manager:libwm" ]
    }

    if (build_selinux) {
      external_deps += [ "selinux_adapter:librestorecon" ]
      cflags = [ "-DWITH_SELINUX" ]
    }
  }

ohos_unittest("ImeProxyAgentImeTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/services/src/sys_cfg_parser.cpp",
    "src/ime_proxy_agent_ime_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service",
    "${inputmethod_path}/services/file:imf_file_static",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/editorBox:editorBox",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/extImfBundle:extImf",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "window_manager:libwm",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "config_policy:configpolicy_util",
    "googletest:gtest_main",
    "graphic_2d:librender_service_client",
    "graphic_2d:window_animation",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "samgr:samgr_proxy",
    "window_manager:libdm",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }

  if (build_selinux) {
    external_deps += [ "selinux_adapter:librestorecon" ]
    cflags = [ "-DWITH_SELINUX" ]
  }
}

ohos_executable("ImeProxyDemo") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }

  sources = [
    "${inputmethod_path}/services/src/sys_cfg_parser.cpp",
    "src/ime_proxy_demo.cpp",
  ]
  include_dirs =
      [ "${inputmethod_path}/interfaces/inner_api/inputmethod_ability/include" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/services/file:imf_file_static",
    "${inputmethod_path}/services/json:imf_json_static",
  ]

  configs = [ ":module_private_config" ]

  external_deps = [
    "cJSON:cjson",
    "c_utils:utils",
    "config_policy:configpolicy_util",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
  ]

  install_enable = false
  subsystem_name = "inputmethod"
  part_name = "imf"
}

ohos_unittest("ImeProxyTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/test/common/src/keyboard_listener_test_impl.cpp",
    "src/ime_proxy_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_client_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/editorBox:editorBox",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/extImfBundle:extImf",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "window_manager:libwm",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "c_utils:utils",
    "cJSON:cjson",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gtest_main",
    "graphic_2d:librender_service_client",
    "graphic_2d:window_animation",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
  if (build_selinux) {
    external_deps += [ "selinux_adapter:librestorecon" ]
    cflags = [ "-DWITH_SELINUX" ]
  }
}

ohos_unittest("TaskManagerTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/task_manager.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/tasks/task.cpp",
    "src/task_manager_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "bundle_framework:appexecfwk_core",
    "c_utils:utils",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
  ]
}

ohos_unittest("ImeFreezeManagerTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_utils.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "src/ime_freeze_manager_test.cpp",
    "src/ime_lifecycle_manager_test.cpp",
    "src/ime_state_manager_factory_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/common:inputmethod_common",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "ability_runtime:ability_manager",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_core",
    "ipc:ipc_single",
    "napi:ace_napi",
    "os_account:os_account_innerkits",
    "safwk:system_ability_fwk",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("JsonOperateTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [ "src/json_operate_test.cpp" ]

  deps = [
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services/json:imf_json_static",
  ]

  external_deps = [
    "ability_runtime:dataobs_manager",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "resource_management:global_resmgr",
    "init:libbegetutil",
  ]
}

ohos_unittest("VirtualListenerTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [ "src/virtual_listener_test.cpp" ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service",
    "${inputmethod_path}/test/common:inputmethod_test_common",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "c_utils:utils",
    "eventhandler:libeventhandler",
    "googletest:gmock",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("ImeSystemChannelTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/system_cmd_channel_service_impl.cpp",
    "src/ime_system_channel_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "c_utils:utils",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

if (defined(build_seccomp) && build_seccomp) {
  ohos_unittest("InputMethodSeccompTest") {
    module_out_path = module_output_path
    sanitize = {
      cfi = true
      cfi_cross_dso = true
      debug = false
      blocklist = "./inputmethod_blocklist.txt"
    }
    sources = [ "src/input_method_ext_seccomp_test.cpp" ]
    external_deps = [ "init:seccomp" ]
  }
} else {
  group("InputMethodSeccompTest") {
  }
}

ohos_unittest("ImeControllerCpaiTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "src/inputmethod_controller_capi_test.cpp",
    "src/native_text_changed_listener_test.cpp",
    "mock/mock_input_method_system_ability_proxy.cpp",
  ]

  configs = [ "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_native_public_config" ]

  include_dirs = [
    "${inputmethod_path}/interfaces/kits/c",
    "${inputmethod_path}/frameworks/ndk/include",
    "${inputmethod_path}/test/unittest/cpp_test/mock",
  ]

  deps = [
    "${inputmethod_path}/frameworks/ndk:ohinputmethod_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
  ]

  external_deps = [
    "ability_base:want",
    "ace_engine:ace_ndk",
    "ace_engine:ace_uicontent",
    "googletest:gtest_main",
    "googletest:gmock",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "samgr:samgr_proxy",
  ]
}

ohos_unittest("FullImeInfoManagerTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/services/src/full_ime_info_manager.cpp",
    "mock/ime_enabled_info_manager.cpp",
    "mock/ime_info_inquirer.cpp",
    "mock/os_account_adapter.cpp",
    "src/full_ime_info_manager_test.cpp",
  ]
  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/include",
    "${inputmethod_path}/test/unittest/cpp_test/mock",
  ]

  deps = [ "${inputmethod_path}/common:inputmethod_common" ]

  external_deps = [
    "c_utils:utils",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "os_account:os_account_innerkits",
    "input:libmmi-client",
    "ipc:ipc_single",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
  ]
}

ohos_unittest("InputMethodMessageHandlerTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_agent_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_core_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "${inputmethod_path}/services/src/input_type_manager.cpp",
    "src/input_method_message_handler_test.cpp",
  ]

  configs = [
    ":module_private_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config",
  ]

  deps = [
    "${inputmethod_path}/frameworks/ndk:ohinputmethod_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "window_manager:libwm",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "ace_engine:ace_ndk",
    "ace_engine:ace_uicontent",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "config_policy:configpolicy_util",
    "os_account:os_account_innerkits",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "graphic_2d:librender_service_base",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
    "window_manager:libdm",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("OnDemandStartStopSaTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/common/src/on_demand_start_stop_sa.cpp",
    "src/on_demand_start_stop_sa_test.cpp",
  ]
  include_dirs = [
    "${inputmethod_path}/common/include",
    "mock/",
  ]

  external_deps = [
    "cJSON:cjson",
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "ipc:ipc_single",
    "samgr:samgr_proxy",
    "googletest:gmock",
  ]
}

ohos_unittest("ResSchedAdapterTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/services/adapter/res_sched_adapter/include",
    "mock/",
  ]
  sources = [
    "${inputmethod_path}/services/adapter/res_sched_adapter/src/res_sched_adapter.cpp",
    "mock/res_sched_client.cpp",
    "src/res_sched_adapter_test.cpp",
  ]
  configs = [ ":module_private_config" ]
  deps = [
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]
  external_deps = [
    "ability_base:configuration",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:abilitykit_utils",
    "ability_runtime:runtime",
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "ipc:ipc_single",
    "safwk:system_ability_fwk",
    "resource_management:global_resmgr",
  ]
}

ohos_unittest("ImfHisysEventReporterTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path
  include_dirs = [ "${inputmethod_path}/common/include" ]
  sources = [ "src/imf_hisysevent_report_test.cpp" ]

  configs = [
    ":module_private_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_native_public_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config",
  ]

  deps = [
    "${inputmethod_path}/common/imf_hisysevent:imf_hisysevent",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "ability_base:want",
    "cJSON:cjson",
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "hisysevent:libhisysevent",
    "hisysevent:libhisyseventmanager",
    "input:libmmi-client",
    "ipc:ipc_core",
  ]
}

ohos_unittest("WindowAdapterTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/services/adapter/os_account_adapter/include",
    "${inputmethod_path}/services/adapter/window_adapter/include",
  ]
  sources = [
    "${inputmethod_path}/services/adapter/os_account_adapter/src/os_account_adapter.cpp",
    "${inputmethod_path}/services/adapter/window_adapter/src/window_adapter.cpp",
    "${inputmethod_path}/services/adapter/window_adapter/src/window_monitors_manager.cpp",
    "src/window_adapter_test.cpp",
  ]
  configs = [ ":module_private_config" ]
  deps = [
    "${inputmethod_path}/common:inputmethod_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]
  external_deps = [
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "safwk:system_ability_fwk",
    "os_account:os_account_innerkits",
  ]
  defines = []
  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
    defines += [ "SCENE_BOARD_ENABLE" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("ImaTextEditTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/test/common/src/keyboard_listener_test_impl.cpp",
    "src/ima_text_edit_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_client_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/editorBox:editorBox",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "window_manager:libwm",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_core",
    "c_utils:utils",
    "googletest:gtest_main",
    "graphic_2d:librender_service_client",
    "graphic_2d:window_animation",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
  if (build_selinux) {
    external_deps += [ "selinux_adapter:librestorecon" ]
    cflags = [ "-DWITH_SELINUX" ]
  }
}

ohos_unittest("StringUtilsTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  include_dirs = [ "${inputmethod_path}/common/include" ]

  sources = [ "src/string_utils_test.cpp" ]

  configs = [ ":module_private_config" ]

  deps = [ "${inputmethod_path}/common:inputmethod_common" ]

  external_deps = [
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
  ]
}

ohos_unittest("InputMethodManagerCommandTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/tools/ime/src/input_method_manager_command.cpp",
    "src/input_method_manager_command_test.cpp",
  ]

  include_dirs = [
    "include",
    "${inputmethod_path}/tools/ime/include",
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller/include",
  ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/newTestIme:newTestIme",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "c_utils:utils",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_unittest("ImeEnabledInfoManagerTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path
  include_dirs = [ "${inputmethod_path}/common/include" ]
  sources = [ "src/ime_enabled_info_manager_test.cpp" ]

  configs = [ ":module_private_config" ]
  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services/file:imf_file_static",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
    "${inputmethod_path}/test/unittest/resource/bundle_dependencies/newTestIme:newTestIme",
    "${inputmethod_path}/test/unittest/resource/ohos_test:copy_ohos_test",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:dataobs_manager",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "config_policy:configpolicy_util",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gtest_main",
    "hilog:libhilog",
    "init:libbeget_proxy",
    "init:libbegetutil",
    "input:libmmi-client",
    "ipc:ipc_single",
    "resource_management:global_resmgr",
  ]
  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
  if (build_selinux) {
    external_deps += [ "selinux_adapter:librestorecon" ]
    cflags = [ "-DWITH_SELINUX" ]
  }
}

ohos_unittest("ImeMirrorTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/test/unittest/cpp_test/mock/mock_input_method_system_ability_proxy.cpp",
    "src/ime_mirror_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  configs += [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_native_public_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config",
  ]

  include_dirs = [
    "${inputmethod_path}/test/unittest/cpp_test/mock",
  ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/file:imf_file_static",
    "${inputmethod_path}/services/json:imf_json_static",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gmock",
    "googletest:gtest_main",
    "graphic_2d:librender_service_client",
    "graphic_2d:window_animation",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "memmgr:memmgrclient",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "os_account:os_account_innerkits",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
    "window_manager:libdm",
    "window_manager:libwsutils",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }

  if (build_selinux) {
    external_deps += [ "selinux_adapter:librestorecon" ]
    cflags = [ "-DWITH_SELINUX" ]
  }
}

ohos_executable("ImeMirrorDemo") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }

  sources = [
    "${inputmethod_path}/services/src/sys_cfg_parser.cpp",
    "src/ime_mirror_demo.cpp",
  ]
  include_dirs =
      [ "${inputmethod_path}/interfaces/inner_api/inputmethod_ability/include" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/services/file:imf_file_static",
    "${inputmethod_path}/services/json:imf_json_static",
  ]

  configs = [ ":module_private_config" ]

  external_deps = [
    "cJSON:cjson",
    "c_utils:utils",
    "config_policy:configpolicy_util",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
  ]

  install_enable = false
  subsystem_name = "inputmethod"
  part_name = "imf"
}

ohos_executable("ImcInnerTestDemo") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }

  sources = [ "src/imc_inner_test_demo.cpp" ]
  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller/include"
  ]

  deps = [ "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client" ]

  configs = [ ":module_private_config" ]

  external_deps = [
    "access_token:libaccesstoken_sdk",
    "access_token:libnativetoken",
    "access_token:libtoken_setproc",
    "c_utils:utils",
    "input:libmmi-client",
  ]

  install_enable = false
  subsystem_name = "inputmethod"
  part_name = "imf"
}

ohos_executable("ProxyImeTestDemo") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }

  sources = [
    "${inputmethod_path}/services/src/sys_cfg_parser.cpp",
    "src/proxy_ime_test_demo.cpp"
  ]
  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability/include"
  ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/services/file:imf_file_static",
    "${inputmethod_path}/services/json:imf_json_static",
  ]

  configs = [ ":module_private_config" ]

  external_deps = [
    "c_utils:utils",
    "config_policy:configpolicy_util",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
  ]

  install_enable = false
  subsystem_name = "inputmethod"
  part_name = "imf"
}

ohos_unittest("ImfExtMockTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/services/hook/src/imf_hook_manager.cpp",
    "${inputmethod_path}/services/module/src/imf_module_manager.cpp",
    "mock/ime_enabled_info_manager.cpp",
    "mock/ime_info_inquirer.cpp",
    "mock/imf_hook.cpp",
    "mock/hookmgr.cpp",
    "mock/modulemgr.cpp",
    "src/imf_ext_mock_test.cpp",
  ]
  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/include",
    "${inputmethod_path}/services/hook/include",
    "${inputmethod_path}/services/module/include",
    "${inputmethod_path}/test/unittest/cpp_test/mock",
  ]

  external_deps = [
    "c_utils:utils",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
  ]
}

ohos_unittest("InputMethodDisplayAttributeListenerTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/common/src/inputmethod_display_listener.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_ability.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_agent_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_core_service_impl.cpp",
    "src/inputmethod_display_listener_test.cpp",
  ]

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/include",
    "${inputmethod_path}/frameworks/common/include",
    "${inputmethod_path}/frameworks/common",
    "${inputmethod_path}/frameworks/kits/extension/include",
    "${inputmethod_path}/unittest/cpp_test/mock",
    "${inputmethod_path}/test/common",
  ]

  deps = [
    "${inputmethod_path}/common/imf_hisysevent:imf_hisysevent",
    "${inputmethod_path}/frameworks/kits/extension:inputmethod_extension",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_client_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "ability_base:configuration",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:abilitykit_utils",
    "ability_runtime:runtime",
    "cJSON:cjson",
    "c_utils:utils",
    "hilog:libhilog",
    "hisysevent:libhisysevent",
    "hisysevent:libhisyseventmanager",
    "input:libmmi-client",
    "ipc:ipc_napi",
    "libuv:uv",
    "napi:ace_napi",
    "node:node_header_notice",
    "safwk:system_ability_fwk",
    "window_manager:libdm",
  ]

  if (imf_hiviewdfx_api_metrics_ext_enable) {
    external_deps += [ "api_metrics:histogrammanager" ]
    if (defined(defines)) {
      defines += [ "HIVIEWDFX_API_METRICS_EXT_ENABLE" ]
    } else {
      defines = [ "HIVIEWDFX_API_METRICS_EXT_ENABLE" ]
    }
  }
}

ohos_unittest("ImeEventListenerManagerTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/services/src/ime_event_listener_manager.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "src/ime_event_listener_manager_test.cpp",
  ]
  include_dirs = [
    "${inputmethod_path}/services/include",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/include",
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/include",
    "${inputmethod_path}/frameworks/common",
    "${inputmethod_path}/services/adapter/settings_data_provider/include",
    "${inputmethod_path}/unittest/cpp_test/mock",
    "${inputmethod_path}/test/common",
  ]

  deps = [
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client",
    "${inputmethod_path}/services:inputmethod_service",
    "${inputmethod_path}/test/common:inputmethod_test_common",
  ]

  external_deps = [
    "ability_base:want",
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "samgr:samgr_proxy",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }
}

ohos_executable("PublishCommonEventDemo") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }

  sources = [ "src/publish_common_event_demo.cpp" ]

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller/include",
  ]

  deps = [ "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client" ]

  configs = [ ":module_private_config" ]

  external_deps = [
    "ability_runtime:app_manager",
    "access_token:libaccesstoken_sdk",
    "access_token:libnativetoken",
    "access_token:libtoken_setproc",
    "c_utils:utils",
    "common_event_service:cesfwk_innerkits",
    "input:libmmi-client",
  ]

  install_enable = false
  subsystem_name = "inputmethod"
  part_name = "imf"
}

ohos_unittest("SamgrAdapterTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/services/adapter/samgr/include",
  ]
  sources = [
    "${inputmethod_path}/services/adapter/samgr/src/samgr_adapter.cpp",
    "src/samgr_adapter_test.cpp",
  ]
  configs = [ ":module_private_config" ]
  deps = [ "${inputmethod_path}/common:inputmethod_common" ]
  external_deps = [
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "ipc:ipc_single",
    "samgr:samgr_proxy",
  ]

  cflags = [
    "-fno-access-control",
  ]
}

ohos_unittest("DisplayAdapterTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/services/adapter/display_adapter/include",
    "${inputmethod_path}/services/include",
  ]
  sources = [ "src/display_adapter_test.cpp" ]
  configs = [ ":module_private_config" ]
  deps = [
    "${inputmethod_path}/common:inputmethod_common",
    "${inputmethod_path}/services:inputmethod_service_static",
  ]
  external_deps = [
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "ipc:ipc_single",
    "window_manager:libdm_lite",
  ]

  cflags = [
    "-fno-access-control",
  ]
}

ohos_unittest("OsAccountListenerTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/services/adapter/os_account_adapter/include",
    "${inputmethod_path}/services/include",
  ]
  sources = [
    "${inputmethod_path}/services/adapter/os_account_adapter/src/os_account_listener.cpp",
    "src/os_account_listener_test.cpp",
  ]
  configs = [ ":module_private_config" ]
  configs += [ "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config" ]
  deps = [
    "${inputmethod_path}/common:inputmethod_common",
    "${inputmethod_path}/services:inputmethod_service_static",
  ]
  external_deps = [
    "ability_base:want",
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "os_account:os_account_innerkits",
  ]

  cflags = [
    "-fno-access-control",
  ]
}

ohos_unittest("ImeInfoInquirerTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "src/ime_info_inquirer_test.cpp",
  ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client",
    "${inputmethod_path}/services:inputmethod_service",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "common_event_service:cesfwk_innerkits",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "os_account:os_account_innerkits",
    "samgr:samgr_proxy",
    "window_manager:libwm",
    "window_manager:libdm",
  ]
}

ohos_unittest("InputMethodExtensionContextTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "src/inputmethod_extension_context_test.cpp",
  ]

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/frameworks/common/include",
    "${inputmethod_path}/frameworks/kits/extension/include",
    "${inputmethod_path}/frameworks/kits/extension_cj/include",
  ]

  deps = [
    "${inputmethod_path}/frameworks/kits/extension:inputmethod_extension",
    "${inputmethod_path}/common:inputmethod_common",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  cflags = [
    "-fno-access-control",
  ]

  external_deps = [
    "ability_base:configuration",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:ability_start_options",
    "ability_runtime:abilitykit_native",
    "ability_runtime:abilitykit_utils",
    "ability_runtime:app_context",
    "ability_runtime:extensionkit_native",
    "ability_runtime:napi_common",
    "ability_runtime:runtime",
    "bundle_framework:appexecfwk_base",
    "c_utils:utils",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "ipc:ipc_napi",
    "ipc:ipc_single",
    "napi:ace_napi",
    "napi:cj_bind_ffi",
    "node:node_header_notice",
    "window_manager:libdm",
  ]

  if (imf_hiviewdfx_api_metrics_ext_enable) {
    external_deps += [ "api_metrics:histogrammanager" ]
    if (defined(defines)) {
      defines += [ "HIVIEWDFX_API_METRICS_EXT_ENABLE" ]
    } else {
      defines = [ "HIVIEWDFX_API_METRICS_EXT_ENABLE" ]
    }
  }

  install_enable = false
  subsystem_name = "inputmethod"
  part_name = "imf"
}

ohos_unittest("InputMethodExtensionTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "src/inputmethod_extension_test.cpp",
  ]

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/frameworks/common/include",
    "${inputmethod_path}/frameworks/kits/extension/include",
    "${inputmethod_path}/frameworks/kits/extension_cj/include",
  ]

  deps = [
    "${inputmethod_path}/frameworks/kits/extension:inputmethod_extension",
    "${inputmethod_path}/common:inputmethod_common",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  cflags = [
    "-fno-access-control",
  ]

  external_deps = [
    "ability_base:configuration",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:ability_start_options",
    "ability_runtime:abilitykit_native",
    "ability_runtime:abilitykit_utils",
    "ability_runtime:app_context",
    "ability_runtime:extensionkit_native",
    "ability_runtime:napi_common",
    "ability_runtime:runtime",
    "bundle_framework:appexecfwk_base",
    "c_utils:utils",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "ipc:ipc_napi",
    "ipc:ipc_single",
    "napi:ace_napi",
    "napi:cj_bind_ffi",
    "node:node_header_notice",
    "window_manager:libdm",
  ]

  if (imf_hiviewdfx_api_metrics_ext_enable) {
    external_deps += [ "api_metrics:histogrammanager" ]
    if (defined(defines)) {
      defines += [ "HIVIEWDFX_API_METRICS_EXT_ENABLE" ]
    } else {
      defines = [ "HIVIEWDFX_API_METRICS_EXT_ENABLE" ]
    }
  }

  install_enable = false
  subsystem_name = "inputmethod"
  part_name = "imf"
}

ohos_unittest("InputMethodExtensionModuleLoaderTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/kits/extension/src/inputmethod_extension_module_loader.cpp",
    "src/inputmethod_extension_module_loader_test.cpp",
  ]

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/frameworks/common/include",
    "${inputmethod_path}/frameworks/kits/extension/include",
    "${inputmethod_path}/frameworks/kits/extension_cj/include",
  ]

  deps = [
    "${inputmethod_path}/frameworks/kits/extension:inputmethod_extension",
    "${inputmethod_path}/common:inputmethod_common",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  cflags = [
    "-fno-access-control",
  ]

  external_deps = [
    "ability_base:configuration",
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:ability_start_options",
    "ability_runtime:abilitykit_native",
    "ability_runtime:abilitykit_utils",
    "ability_runtime:app_context",
    "ability_runtime:extensionkit_native",
    "ability_runtime:napi_common",
    "ability_runtime:runtime",
    "bundle_framework:appexecfwk_base",
    "c_utils:utils",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "ipc:ipc_napi",
    "ipc:ipc_single",
    "napi:ace_napi",
    "napi:cj_bind_ffi",
    "node:node_header_notice",
    "window_manager:libdm",
  ]

  if (imf_hiviewdfx_api_metrics_ext_enable) {
    external_deps += [ "api_metrics:histogrammanager" ]
    if (defined(defines)) {
      defines += [ "HIVIEWDFX_API_METRICS_EXT_ENABLE" ]
    } else {
      defines = [ "HIVIEWDFX_API_METRICS_EXT_ENABLE" ]
    }
  }

  install_enable = false
  subsystem_name = "inputmethod"
  part_name = "imf"
}

ohos_unittest("WmsConnectionMonitorTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/services/adapter/wms_connection_monitor/include",
  ]
  sources = [
    "${inputmethod_path}/services/adapter/wms_connection_monitor/src/wms_connection_monitor_manager.cpp",
    "${inputmethod_path}/services/adapter/wms_connection_monitor/src/wms_connection_observer.cpp",
    "src/wms_connection_monitor_test.cpp",
  ]
  configs = [ ":module_private_config" ]
  configs += [ "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config" ]
  deps = [
    "${inputmethod_path}/common:inputmethod_common",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]
  external_deps = [
    "bundle_framework:appexecfwk_core",
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "window_manager:libdm",
    "window_manager:libwm",
  ]
  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }

  cflags = [
    "-fno-access-control",
  ]
}

ohos_unittest("KeyboardEventTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/services/adapter/keyboard/include",
  ]

  sources = [ "src/keyboard_event_test.cpp" ]

  configs = [
    ":module_private_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config",
  ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/adapter/keyboard:keboard_event_static",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "bundle_framework:appexecfwk_core",
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "hisysevent:libhisysevent",
    "input:libmmi-client",
    "ipc:ipc_single",
    "napi:ace_napi",
  ]

  cflags = [
    "-fno-access-control",
  ]
}

ohos_unittest("InputEventCallbackTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/services/adapter/keyboard/include",
  ]

  sources = [ "src/input_event_callback_test.cpp" ]

  configs = [
    ":module_private_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config",
  ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/adapter/keyboard:keboard_event_static",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "bundle_framework:appexecfwk_core",
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "hisysevent:libhisysevent",
    "input:libmmi-client",
    "ipc:ipc_single",
    "napi:ace_napi",
  ]

  cflags = [
    "-fno-access-control",
  ]
}

ohos_unittest("EnableUpgradeManagerTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  include_dirs = [
    "${inputmethod_path}/common/include",
    "${inputmethod_path}/services/include",
    "${inputmethod_path}/services/adapter/settings_data_provider/include",
    "${inputmethod_path}/services/adapter/settings_data_provider/common/include",
    "${inputmethod_path}/services/adapter/os_account_adapter/include",
    "${inputmethod_path}/services/json/include",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/include",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/include",
  ]

  sources = [ "src/enable_upgrade_manager_test.cpp" ]

  configs = [ ":module_private_config" ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services/file:imf_file_static",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "ability_base:want",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "config_policy:configpolicy_util",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "init:libbegetutil",
    "input:libmmi-client",
    "ipc:ipc_single",
    "os_account:os_account_innerkits",
    "resource_management:global_resmgr",
    "samgr:samgr_proxy",
  ]
  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }

  cflags = [
    "-fno-access-control",
  ]
}

ohos_unittest("PerUserSessionTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_agent_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_ability/src/input_method_core_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_info.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_client_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_data_channel_service_impl.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/keyevent_consumer_service_impl.cpp",
    "${inputmethod_path}/services/src/input_control_channel_service_impl.cpp",
    "${inputmethod_path}/services/src/input_type_manager.cpp",
    "src/peruser_session_test.cpp",
  ]

  configs = [
    ":module_private_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_native_public_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config",
  ]

  deps = [
    "${inputmethod_path}/common/imf_hisysevent",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_control_channel_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:input_method_core_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_client_stub",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:input_method_agent_proxy",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services/json:imf_json_static",
    "${inputmethod_path}/test/common:inputmethod_test_common",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "ability_base:want",
    "ability_runtime:ability_context_native",
    "ability_runtime:ability_manager",
    "ability_runtime:runtime",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "config_policy:configpolicy_util",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "napi:ace_napi",
    "os_account:os_account_innerkits",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
    "window_manager:libdm",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }

  cflags = [
    "-fno-access-control",
  ]
}

ohos_unittest("InputMethodToolsTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_utils.cpp",
    "src/input_method_tools_test.cpp",
  ]

  configs = [
    ":module_private_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_native_public_config",
  ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/services/json:imf_json_static",
  ]

  external_deps = [
    "cJSON:cjson",
    "c_utils:utils",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
  ]
}

ohos_unittest("NotifyServiceImplTest") {
  branch_protector_ret = "pac_ret"
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/services/src/notify_service_impl.cpp",
    "src/notify_service_impl_test.cpp",
  ]

  configs = [
    ":module_private_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config",
  ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
    "${inputmethod_path}/services:inputmethod_service_static",
    "${inputmethod_path}/services/adapter/settings_data_provider:settings_data_static",
    "${inputmethod_path}/test/unittest/cpp_test/common:inputmethod_tdd_util",
  ]

  external_deps = [
    "ability_runtime:ability_manager",
    "access_token:libaccesstoken_sdk",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "data_share:datashare_common",
    "data_share:datashare_consumer",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_core",
    "ipc:ipc_single",
    "napi:ace_napi",
    "os_account:os_account_innerkits",
    "safwk:system_ability_fwk",
  ]

  if (window_manager_use_sceneboard) {
    external_deps += [ "window_manager:libwm_lite" ]
  } else {
    external_deps += [ "window_manager:libwm" ]
  }

  cflags = [
    "-fno-access-control",
  ]
}

ohos_unittest("SystemCmdChannelServiceImplTest") {
  sanitize = {
    cfi = true
    cfi_cross_dso = true
    debug = false
    blocklist = "./inputmethod_blocklist.txt"
  }
  module_out_path = module_output_path

  sources = [
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_tools.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/input_method_utils.cpp",
    "${inputmethod_path}/frameworks/native/inputmethod_controller/src/system_cmd_channel_service_impl.cpp",
    "src/system_cmd_channel_service_impl_test.cpp",
  ]

  configs = [
    ":module_private_config",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_native_public_config",
  ]

  deps = [
    "${inputmethod_path}/interfaces/inner_api/inputmethod_ability:inputmethod_ability_static",
    "${inputmethod_path}/interfaces/inner_api/inputmethod_controller:inputmethod_client_static",
  ]

  external_deps = [
    "ability_base:want",
    "bundle_framework:appexecfwk_base",
    "bundle_framework:appexecfwk_core",
    "bundle_framework:appexecfwk_core",
    "cJSON:cjson",
    "c_utils:utils",
    "eventhandler:libeventhandler",
    "googletest:gtest_main",
    "hilog:libhilog",
    "input:libmmi-client",
    "ipc:ipc_single",
    "safwk:system_ability_fwk",
    "samgr:samgr_proxy",
  ]

  cflags = [
    "-fno-access-control",
  ]
}