Commits


Gil authored and GitHub committed 16447a5e2b5
Restrict use of Abseil types in public C++ accessible APIs (#4503) * Change string parameters from absl::string_view to std::string No abseil types can be used as parameters in this package. This fixes an issue where Unity builds fail due to missing symbols. The underlying issue is that Abseil in CocoaPods is an LTS release and LTS releases contain an inline namespace, making types like absl::string_view link as absl::lts_2019_08_08::string_view. When compiling Firestore in google3 it uses the abseil in //third_party/absl, which is not an LTS release and does not include the inline namespace. This disagreement causes issues for the public C++ API which is compiled in google3 and consumes code in the API package. * Avoid absl::any in interfaces shared with public C++ * Make resource-related methods class members This gives them access to private methods of friends of Serializer. * Access control FieldPath/ResourcePath construction * Access control Document construction * Access control FieldValue construction * Access control TransformOperation methods * Remove DocumentSnapshot constructor that takes metadata pieces individually * Restrict access to DocumentSnapshot from optional<Document> * Add comments indicating how Abseil types are restricted * Make DocumentKey::FromPathString take std::string