Chris Bracken 05d97932b3
Extract a TextRange class for selection (#21722)
Extracts a TextRange class with a base and extent, and start(), end(),
collapsed(), and length() getters.

The possibility of reversed base and extent in selections and composing
ranges makes reasoning about them complex and increases the chances of
errors in the code. This change migrates most uses of base and extent in
the text model to start()/end() or position(). The position() method is
intended purely as an aid to readability to indicate that a collapsed
selection is expected at the call site; it also enforces a debug-time
assertion that this is the case.
2020-10-12 17:50:11 -07:00

161 lines
4.0 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/common/config.gni")
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" ]
}
copy("publish_headers") {
sources = _public_headers
outputs = [ "$root_out_dir/{{source_file_part}}" ]
}
source_set("common_cpp_input") {
public = [
"text_input_model.h",
"text_range.h",
]
sources = [ "text_input_model.cc" ]
configs += [ ":desktop_library_implementation" ]
public_configs = [ "//flutter:config" ]
deps = [ "//flutter/fml:fml" ]
if (is_win) {
# For wstring_conversion. See issue #50053.
defines = [ "_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING" ]
}
}
source_set("common_cpp_switches") {
public = [ "engine_switches.h" ]
sources = [ "engine_switches.cc" ]
public_configs = [
"//flutter:config",
"//flutter/common:flutter_config",
]
}
source_set("common_cpp") {
public = [
"incoming_message_dispatcher.h",
"json_message_codec.h",
"json_method_codec.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",
]
configs += [ ":desktop_library_implementation" ]
public_configs = [ "//flutter:config" ]
deps = [
":common_cpp_library_headers",
"//flutter/shell/platform/common/cpp/client_wrapper:client_wrapper",
"//flutter/shell/platform/embedder:embedder_as_internal_library",
]
public_deps = [
":common_cpp_core",
"//third_party/rapidjson",
]
}
# 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" ]
public_configs = [ "//flutter:config" ]
}
if (enable_unittests) {
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 = [
"engine_switches_unittests.cc",
"json_message_codec_unittests.cc",
"json_method_codec_unittests.cc",
"text_input_model_unittests.cc",
"text_range_unittests.cc",
]
deps = [
":common_cpp",
":common_cpp_fixtures",
":common_cpp_input",
":common_cpp_switches",
"//flutter/shell/platform/common/cpp/client_wrapper:client_wrapper",
"//flutter/shell/platform/common/cpp/client_wrapper:client_wrapper_library_stubs",
"//flutter/testing",
]
public_configs = [ "//flutter:config" ]
}
}