* Rename nanopb::String to nanopb::ByteString
... and flesh it out.
* Remove const pb_bytes_array* constructor
* Use std:: prefixes
* Pull forward CopyVector
* Simplify nanopb::Reader/Writer construction
* Reuse ByteString construction in serializer
* Add nanopb_testing.h
* Make QueryData.resume_token a ByteString
* Use ByteString as FieldValue::blob_value
* Migrate FSTBlobValue to FSTDelegateValue
* Rework the ByteString API
* Make data(), begin(), and end() never return nullptr
* Make copies of pb_bytes_array_t* more obvious (also avoids ambiguity
with the private constructor).
* Remove constructors that duplicate absl::string_view
* Make ByteString::Copy just a constructor
* Remove EncodeBytes/DecodeBytes
These duplicate ByteString constructors
* Overhaul ByteString and users
* Remove most conversions from ByteString
* Put remaining conversions in nanopb_util as free functions
* Make ByteStringWriter accumulate in a pb_bytes_array_t*
* Have ProtobufSerialize use ByteStringWriter
* Avoid reserving/writing if we're not asked to append data
* Ensure ByteStringWriter initializes/frees
* Make copies explicit
* Make Reserve match std::vector::reserve
* Add comments, assertions, and tests
* Remove _Nullable in plain C++
* Avoid adding -framework Foundation multiplatform targets on
non-Apple platforms
* Fix ordered_code_benchmark to be in a .cc file
* Migrate FSTNullValue to FSTDelegateValue
* Migrate FSTIntegerValue to FSTDelegateValue
* Migrate FSTDoubleValue to FSTDelegateValue
* Migrate FSTGeoPointValue to FSTDelegateValue
* Add FieldValue operator==
* Normalize NaN values to a single canonical value
This preserves existing Objective-C behavior.
* Add EqualsTester
* Port equality test from Android
* Remove stale references to DatabaseId
* Have Firestore take the DatabaseId directly
* Allow tests to default the database implicitly
* Have FSTSerializerBeta take DatabaseId by value
* Have FSTUserDataConverter take DatabaseId by value
* Make FIRFirestore.databaseID a const reference
* Make FSTFirestoreClient.databaseID a const reference
* Have FSTReferenceValue take DatabaseId by value
* Have DatabaseInfo take DatabaseId by value
* Have Serializer take DatabaseId by value
* Fix C++ ReferenceValue
* Take DatabaseId by value
* Reverse order to match Android
* Rename `reference` to `key`
* Split data conversion tests into FSTUserDataConverterTests
* Add TestUtil Value/Object to match Java
* Port Java FieldValue tests
* FieldValue::Map -> ObjectValue (#3047)
* Update versions for Release 6.1.0
* Release 6.1.0 - cherry pick of #3007 (#3011)
* 6.1.0 manifest updated. FirebaseInAppMessaging bumped to 0.14.1
* Early return from sending analytics events in instance ID is nil (#3007)
* Fix endianness detection in OrderedCode
(and prevent further regression.)
* Use static_assert for constant checks
* Add a benchmark for SkipToNextSpecialByte
* Move string_apple_benchmark next to string_apple_test
* Accept non-const references in benchmark functions
This is a port of cl/132348268.
* Adjust Xcode project
* Add GoogleBenchmark as a dependency
* Update versions for Release 6.0.0
* Update FirebaseSDKs.textproto with new fields. (#2818) (#2834)
* Update FirebaseSDKs.textproto with new fields.
* Update message about strip_32bits flag.
* GULAppDelegateSwizzler - proxy APNS methods separately (#2835) (#2858)
* Cherry-picks for M47 RC5 (#2882)
* fix race condition checkin is deleted before writing during app start (#2860)
* GoogleUtilities min ios version from 6 to 8 (#2876)
* Put secret and oauth credentials into the private headers for now. (#2916) (#2919)
* Add missing Messaging weak_framework dep (#2921) (#2930)
* Make GrpcConnection safe to use with thread sanitizer
One additional lock acquisition per connection attempt isn't going to
kill us.
* Make tests pass with tsan and ubsan
* Run Firestore integration tests against the emulator
* Ignore emulator-related files
* Add a script to run the Firestore emulator
* Blacklist all transformation-related tests
* Make DocumentSet and DocumentMap C++ compatible
* Make api::DocumentSnapshot C++ compatible
* Make api::DocumentReference C++ compatible
* Make api::ListenerRegistration C++ compatible
* Make core::ViewSnapshot C++ compatible
* Make core::QueryListener C++ compatible
* Show api::DocumentChange is C++ compatible
* Show api::Settings is C++ compatible
* Make api::QuerySnapshot C++ compatible
* Make core::Transaction C++ compatible
* Make api::WriteBatch C++ compatible
* Make api::Firestore C++ compatible
* Move the util::objc namespace to just objc
This removes all the namespace objc = firebase::firestore::util::objc
gunk to make it seem as if this was really the arrangement.
This is motivated by wanting to put additional things in this namespace
and use them in headers without having to use util::objc::Foo
* Add CMake support for header-only cc_library targets
* Have the linter allow #include <objc/objc.h>, a C header
This is safer and better matches our design (and the other platforms), since
classes like api::DocumentReference will have references to api::Firsetore but
the lifetime is controlled by the developer, not us.
use namespace aliases instead.
This makes the Objective-C code much more like what it's going to end up
being like when translated to C++: headers will include classes declared
in a namespace relative to firebase::firestore so everything else will
be named relative to firebase::firestore.
Meanwhile the using statements in the headers were causing us to miss
adding using statements in source files which was moving us away from
where we wanted to be.
* Tunnel underlying NSErrors through Status
* Make FIRFirestoreErrorDomain available to CMake builds
The prior state was actually semi-broken. The
firebase_credentials_provider_apple definition wasn't extern "C" so it
was defining the value in addition to whatever FIRFirestore was doing.
FIRFirestore's value isn't available to straight C++ though, so this
change pushes the definition down into error_apple.mm so that it can be
shared by the Objective-C API and MakeNSError.
Pushing MakeNSError up into the API layer isn't practical yet so this
change is a compromise that makes things work
Note:
* This includes a partial port of array-contains for Filters because
this silenced a warning about an unhandled case
* There's some sensitivity to the order of the cases that I didn't
bother to figure out; instead I just made it match what came before.
* Fix a couple small issues I tripped over today.
1. Fix primeBackend so it uses an isolated FIRFirestore* instance. I ran into
an issue where tests that try to change .settings would fail if they were the
very first test run, since primeBackend had already configured the client and
so settings could no longer be changed.
2. Remove FIRFirestore.client and make api::Firestore.client() assert client is configured.
* Fix FSTFieldValue instanceof check to use FSTFieldValue.type
Missed in the previous PR because this gets the class via [value class]
rather than [value isKindOfClass].
* Add FSTDelegateValue which delegates to model::FieldValue
Also migrates FSTBooleanValue to FSTDelegateValue as a proof-of-concept.
Other FSTXValues still TODO.
* Create C++ api::DocumentChange class.
* Make FIRDocumentChange a wrapper over api::DocumentChange.
* Moved documentChangesForSnapshot helper from FIRDocumentChange to
where it's used in QuerySnapshot. I think this is cleaner.