mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
The JSON codec is awkward to use in the wrapper (since the client has to build and link one of the JSON libraries to do so). Since it would be very cumbersome to wrap in a C API, and there's essentially no reason to use it instead of the standard codec, this removes it from the wrapper entirely. Since some system channels (internal to the engine) still use it, it's moved into common/cpp instead of being eliminated entirely. Internally we always use RapidJSON though, so the jsoncpp implementation is removed. Also adds some unit test coverage, since there wasn't any. Fixes #30669
132 lines
3.1 KiB
Plaintext
132 lines
3.1 KiB
Plaintext
# Copyright 2013 The Flutter Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import("//flutter/testing/testing.gni")
|
|
|
|
config("desktop_library_implementation") {
|
|
defines = [ "FLUTTER_DESKTOP_LIBRARY" ]
|
|
}
|
|
|
|
_public_headers = [
|
|
"public/flutter_export.h",
|
|
"public/flutter_messenger.h",
|
|
"public/flutter_plugin_registrar.h",
|
|
]
|
|
|
|
# Any files that are built by clients (client_wrapper code, library headers for
|
|
# implementations using this shared code, etc.) include the public headers
|
|
# assuming they are in the include path. This configuration should be added to
|
|
# any such code that is also built by GN to make the includes work.
|
|
config("relative_flutter_library_headers") {
|
|
include_dirs = [ "public" ]
|
|
}
|
|
|
|
# The headers are a separate source set since the client wrapper is allowed
|
|
# to depend on the public headers, but none of the rest of the code.
|
|
source_set("common_cpp_library_headers") {
|
|
public = _public_headers
|
|
|
|
configs += [ ":desktop_library_implementation" ]
|
|
}
|
|
|
|
source_set("common_cpp") {
|
|
public = [
|
|
"incoming_message_dispatcher.h",
|
|
"json_message_codec.h",
|
|
"json_method_codec.h",
|
|
"text_input_model.h",
|
|
]
|
|
|
|
# TODO: Refactor flutter_glfw.cc to move the implementations corresponding
|
|
# to the _public_headers above into this target.
|
|
sources = [
|
|
"incoming_message_dispatcher.cc",
|
|
"json_message_codec.cc",
|
|
"json_method_codec.cc",
|
|
"text_input_model.cc",
|
|
]
|
|
|
|
configs += [ ":desktop_library_implementation" ]
|
|
|
|
deps = [
|
|
":common_cpp_library_headers",
|
|
"//flutter/shell/platform/common/cpp/client_wrapper:client_wrapper",
|
|
"//flutter/shell/platform/embedder:embedder_with_symbol_prefix",
|
|
]
|
|
|
|
public_deps = [
|
|
":common_cpp_core",
|
|
"//third_party/rapidjson",
|
|
]
|
|
|
|
if (is_win) {
|
|
# For wstring_conversion. See issue #50053.
|
|
defines = [ "_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING" ]
|
|
}
|
|
}
|
|
|
|
# The portion of common_cpp that has no dependencies on the public/
|
|
# headers. This division should be revisited once the Linux GTK
|
|
# embedding is futher along and it's clearer how much, if any, shared
|
|
# API surface there will be.
|
|
source_set("common_cpp_core") {
|
|
public = [
|
|
"path_utils.h",
|
|
]
|
|
|
|
sources = [
|
|
"path_utils.cc",
|
|
]
|
|
}
|
|
|
|
test_fixtures("common_cpp_core_fixtures") {
|
|
fixtures = []
|
|
}
|
|
|
|
executable("common_cpp_core_unittests") {
|
|
testonly = true
|
|
|
|
sources = [
|
|
"path_utils_unittests.cc",
|
|
]
|
|
|
|
deps = [
|
|
":common_cpp_core",
|
|
":common_cpp_core_fixtures",
|
|
"//flutter/testing",
|
|
"//third_party/dart/runtime:libdart_jit",
|
|
]
|
|
|
|
public_configs = [ "//flutter:config" ]
|
|
}
|
|
|
|
test_fixtures("common_cpp_fixtures") {
|
|
fixtures = []
|
|
}
|
|
|
|
executable("common_cpp_unittests") {
|
|
testonly = true
|
|
|
|
sources = [
|
|
"json_message_codec_unittests.cc",
|
|
"json_method_codec_unittests.cc",
|
|
]
|
|
|
|
deps = [
|
|
":common_cpp",
|
|
":common_cpp_fixtures",
|
|
"//flutter/shell/platform/common/cpp/client_wrapper:client_wrapper_library_stubs",
|
|
"//flutter/testing",
|
|
]
|
|
|
|
public_configs = [ "//flutter:config" ]
|
|
}
|
|
|
|
copy("publish_headers") {
|
|
sources = _public_headers
|
|
outputs = [
|
|
"$root_out_dir/{{source_file_part}}",
|
|
]
|
|
}
|