* 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.
* Add Firestore_IntegrationTests_macOS to Xcode
* Change deployment target from 10.14 to 10.10
* Make standard target edits
* Force C99/C++11
* Use shared test info.plist
* Remove CODE_SIGN_IDENTITY
* Add Firestore_IntegrationTests_macOS to the Podfile
* Have sync_project handle macOS integration tests
* Pod install and sync_project
* Add header search paths and ldflags
* Build integration tests on macos
* Remove integration tests from unit tests
* Make Firestore_IntegrationTests_macOS buildable from the command-line
Previously, we checked for FSTFieldValue subtypes via:
`[value isKindOfClass:[FSTStringValue class]]`
Now, we check via a new type parameter on FSTFieldValue, i.e.:
`value.type == firebase::firestore::model::FieldValue::Type::String`
Or with the appropriate using declaration:
`value.type == FieldValue::Type::String`
This should enable easier transition to C++.
* Remove default app that writes to Firestore.
This ends up running during unit test execution and that doesn't work on
Travis.
* Remove gRPC death tests
These are expensive because they actually are catching abort().
* Rename Firestore/Example/App/macOS_example to macOS
* Update paths to macOS and names to Firestore_Example_macOS
* Add Firestore_Tests_macOS target
This uses a shared Tests Info.plist. This is important because it
configures NSPrincipalClass
* Teach sync_project about Firestore_Tests_macOS
* Add files to Firestore_Tests_macOS
* Add Firestore_Tests_macOS target to the Podfile
* Add HEADER_SEARCH_PATHS to match iOS
* Force C99/C++11 conformance
* pod install after adding Firestore_Tests_macOS
* Get macOS tests to link
* Add spec test json files to the macOS tests
* Remove development code signing
* Disable app sandboxing to allow GoogleTest death tests to succeed.