aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore
Commit message (Collapse)AuthorAge
* Start on ArraySortedMap in C++ (#721)Gravatar Gil2018-01-31
| | | | | | * Implement ArraySortedMap.remove * Implement ArraySortedMap.insert * Ensure ArraySortedMap.insert avoids copying on duplicates * Port more ArraySortedMapTests
* Move all Firestore Objective-C to Objective-C++ (#734)Gravatar Gil2018-01-31
| | | | | | | | | | | | | | * Move all Firestore files to Objective-C++ * Update project file references * Don't use module imports from Objective-C++ * Use extern "C" for C-accessible globals * Work around more stringent type checking in Objective-C++ * NSMutableDictionary ivars aren't implicitly casted to NSDictionary * FSTMaybeDocument callback can't be passed a function that accepts FSTDocument * NSComparisonResult can't be multiplied by -1 without casting * Add a #include <inttypes.h> where needed * Avoid using C++ keywords as variables * Remove #if __cplusplus guards
* Schema migrations for LevelDB (#728)Gravatar Greg Soltis2018-01-30
| | | | | | | | | | | | | | | | | | | | | | | | | | * Implement schema versions * Style fixes * newlines, copyrights, assumptions * Fix nullability * Raw ptr -> shared_ptr * kVersionTableGlobal -> kVersionGlobalTable * Drop utils, move into static methods * Drop extra include * Add a few more comments * Move version constant into migrations file * formatting? * Fix comment
* Firestore DatabaseId in C++ (#727)Gravatar zxu2018-01-29
| | | | | | | | | | | | * Implement DataBaseId in C++ * add database_id_test to project * fix project * address changes * fix style
* Add absl_strings to firebase_firestore_util_test dependencies (#725)Gravatar rsgowman2018-01-29
| | | Required to link the test on rodete.
* Add changelog entry for my last PR (oops) and also add a few that we missed ↵Gravatar Michael Lehenbauer2018-01-29
| | | | last release. (#724)
* Import iterator_adaptors from google3 (#718)Gravatar Gil2018-01-29
| | | | | | | | | | | | * Import iterator_adapters from google3 * Remove -Wconversion which is annoyingly hard to satisfy * Strip dependency on absl_container from iterator_adapters_test * Format and lint iterator_adaptors * More flexible copyright checking in Travis
* Use fixed-sized types (#719)Gravatar Gil2018-01-28
| | | Should have caught this during review, but cpplint caught it
* Version updates to 4.8.2 (#722)Gravatar Paul Beusterien2018-01-27
|
* Fix a number of c++ build errors (#715)Gravatar rsgowman2018-01-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Move -fvisibility-inlines-hidden from common_flags to cxx_flags This option isn't supported by C (and causes the build to fail under at least rodete). Manifested error was: ``` -- Looking for include file openssl/rand.h -- Looking for include file openssl/rand.h - not found CMake Error at core/src/firebase/firestore/util/CMakeLists.txt:94 (message): No implementation for SecureRandom available. -- Configuring incomplete, errors occurred! ``` which is completely misleading. :( * Fix exception include for std::logic_error Was causing compiler error on (at least) rodete. (http://en.cppreference.com/w/cpp/error/logic_error suggests that stdexcept is the correct header.) * Remove 'const' from vector contents. vectors cannot contain const objects as the contained objects are required to be assignable and copy constructable. (Not *quite* strictly true; since c++11, this requirement now depends on the operations performed on the container. But my compiler objects at any rate.) http://en.cppreference.com/w/cpp/container/vector https://stackoverflow.com/questions/8685257/why-cant-you-put-a-const-object-into-a-stl-container * Add brackets as suggested (required) by my compiler. * Add missing include For LLONG_MIN, etc. * Enable gnu extension to c++11 for firestore/util *test*. We disable them by default (in cmake/CompilerSetup.cmake) but our tests requires hexidecimal floating point, which is not supported in c++11 (though is supported in C++17, gnu++11, and others). http://en.cppreference.com/w/cpp/language/floating_literal https://bugzilla.redhat.com/show_bug.cgi?id=1321986 * Fix printf format for uint64_t http://en.cppreference.com/w/cpp/types/integer https://stackoverflow.com/questions/9225567/how-to-print-a-int64-t-type-in-c * Allow 0 length printf template strings in tests. * Get rid of a multi line comment. The backslash is apparently interpreted by the compiler cause the next line to be ignored too. In this case, the next line is (currently) a comment, and would be ignored anyways. (But that doesn't stop the compiler from yelling.) * Run ./scripts/style.sh
* travis: check for copyright in sources (#717)Gravatar Paul Beusterien2018-01-27
|
* Fix b/72502745: OnlineState changes cause limbo document crash. (#470) (#714)Gravatar Michael Lehenbauer2018-01-27
| | | | | | | | | | | | | | | | | | | | [PORT OF https://github.com/firebase/firebase-js-sdk/pull/470] Context: I made a previous change to raise isFromCache=true events when the client goes offline. As part of this change I added an assert for "OnlineState should not affect limbo documents", which it turns out was not valid because: * When we go offline, we set the view to non-current and call View.applyChanges(). * View.applyChanges() calls applyTargetChange() even though there's no target change and it recalculates limbo documents. * When the view is not current, we consider no documents to be in limbo. * Therefore all limbo documents are removed and so applyChanges() ends up returning unexpected LimboDocumentChanges. Fix: I've modified the View logic so that we don't recalculate limbo documents (and generate LimboDocumentChanges) when the View is not current, so now my assert holds and there should be less spurious removal / re-adding of limbo documents.
* normalize and port the rest of Firebase/Port code (#713)Gravatar zxu2018-01-27
| | | | * normalize bits * normalize ordered_code
* port TargetIdGenerator to iOS (#709)Gravatar zxu2018-01-25
| | | | | | | | | | * port TargetIdGenerator to iOS * fix style * move pointer property to instance variable * TriggerTravis
* implement `TargetIdGenerator` in C++ for Firestore (#701)Gravatar zxu2018-01-25
| | | | | | * implement `TargetIdGenerator` * address changes
* normalize string_util (#708)Gravatar zxu2018-01-25
| | | | * refactoring string_util * port string_util to iOS
* Implement the rest of FieldValue types for C++ (#687)Gravatar zxu2018-01-25
| | | | | | | | | | | | * implement FieldValue for null and boolean. * Implement number and string FieldValue. * Implement object FieldValue. * implement timestamp FieldValue. * Implement number and string FieldValue. * implement public type `Blob` and `GeoPoint` * implement Blob FieldValue * Implement GeoPoint FieldValue * refactoring `Blob`
* Cleanup imports and isEqual (#685)Gravatar Gil2018-01-21
| | | | | | | | | | * Fix headers * Fix isEqual verbosity * Fix isEqual for nullable properties * Fix nullability on FSTTestDocSnapshot
* Use Comparator in FieldValue. (#686)Gravatar Gil2018-01-19
|
* Port comparison to C++ (#678)Gravatar Gil2018-01-19
| | | | | | | | | | | | | | | This reimplements our comparison functions as C++ Comparators and then provides compatibility shims for interoperating with existing Objective-C usage. A few specialized comparators aren't suitable for porting but only have a single usage (e.g. CompareBytes for comparing NSData * instances). In these cases I've moved them into the caller. * Use int32_t for typeof(ID) in FSTDocumentReference * Migrate callers of FSTComparison.h to Objective-C++ * Port comparison to C++ * Migrate usages of FSTComparison.h to C++ equivalents * Remove FSTComparison
* Add platform detection logic for SecureRandom (#676)Gravatar Gil2018-01-19
| | | | | | | | | | | | | | | * Add CMake platform detection logic for SecureRandom Now only builds secure_random_arc4random.cc if available. Remove firebase/firestore/base/port.h. Nothing else was in that directory. * Add a SecureRandom implementation that uses OpenSSL This is usable on Linux, Windows, and Android * Properly check return from RAND_bytes
* Merge pull request #680 from firebase/release-4.8.1Gravatar Paul Beusterien2018-01-18
|\ | | | | Merge Release 4.8.1
* | Listen sequence numbers (#675)Gravatar Greg Soltis2018-01-17
| | | | | | | | | | | | | | | | | | | | | | | | * Generate and save sequence numbers for listens * Add documentation * Fix include path * Fix unavailable comment * Review feedback
* | Fix CMake build and lint warnings in field_value.cc (#677)Gravatar Gil2018-01-17
| | | | | | | | | | | | | | Fixes these cpplint warnings: Firestore/core/src/firebase/firestore/model/field_value.cc:162: Semicolon defining empty statement. Use {} instead. [whitespace/semicolon] [5] Firestore/core/src/firebase/firestore/model/field_value.cc:170: Semicolon defining empty statement. Use {} instead. [whitespace/semicolon] [5] Firestore/core/src/firebase/firestore/model/field_value.cc:126: Add #include <utility> for swap [build/include_what_you_use] [4]
* | Add a cc_library to the CMake build (#670)Gravatar Gil2018-01-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Rewrite cc_test to take named arguments Cut down on build file verbosity by having cc_test take SOURCES and DEPENDS. The separate invocation of target_link_libraries is no longer necessary. * Add a cc_library rule to parallel cc_test This cuts down on build file verbosity. * Automatically add OBJC_FLAGS to cc_libraries if applicable * Exclude platform-specific libraries from 'all' This is makes it possible to declare this kind of library unconditionally. Usage within a test or as a dependency will actually trigger building. * Restore secure_random_test.cc; clean-up comments
* | Simplify integration with googletest (#672)Gravatar Gil2018-01-17
| | | | | | | | This makes it possible to build the Firestore subproject with CLion because it no longer needs to be told where googletest is.
* | implement FieldValue for null, boolean, and array in C++. (#637)Gravatar zxu2018-01-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * implement FieldValue for null and boolean. * refactoring to use union type instead of poly * refactor using union design intead of poly * refactoring to use anonymous union and fix styles * small fix * add field_value_test to the project * fix warning of cmake and fix style
* | Fix C++ lint errors (#668)Gravatar Gil2018-01-17
| | | | | | | | | | | | | | | | | | | | | | | | | | * Misc style.sh fixes * Allow test-only to use a revision; to check your changes since master: ./scripts/style.sh test-only master * Avoid diffing deleted files * 80 columns * Fix C++ lint errors
* | Enable warnings in the CMake build (#669)Gravatar Gil2018-01-16
| | | | | | | | | | | | * Enable warnings when building with GCC or clang * Fix warnings
* | Add assert_test to the Xcode build (#671)Gravatar Gil2018-01-16
| | | | | | | | | | | | * Exclude stdio-backed assert from the Xcode build * Add assert_test to the Xcode build
| * Fix issue @morganchen12 discovered where we weren't properly creating ↵Gravatar Michael Lehenbauer2018-01-15
| | | | | | | | | | | | FIRQueryDocumentSnapshot instances. (#662)
* | Build gRPC for Firestore C++ (#652)Gravatar Gil2018-01-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Clean up quoting and other minor issues * Reorganize CMake build output Make it clearer which parts of the output pertain to external projects. * Use a consistent ordering of ExternalProject arguments * Prevent the top-level build from running in parallel This prevents spurious failures when running make -j. * Actually parse arguments in the xcodebuild function * Use ExternalProject features when available * submodule limits from CMake 3.0 * shallow clones from CMake 3.6 * git progress output from CMake 3.8 * Only build the parts of leveldb we need Skip building the tools and other libraries * Avoid installing ExternalProjects Consume build output directly so that we can build just the targets we need. Installing causes all targets to be built. This doesn't matter as much for these targets but the gRPC build includes a ton of stuff we don't need so it's worth adopting this as a general strategy. * Define an external build for grpc * Test that grpc can link successfully. * Add a FindGRPC CMake module * Actually comment ExternalProjext_GitSource
* | Fix issue @morganchen12 discovered where we weren't properly creating ↵Gravatar Michael Lehenbauer2018-01-12
| | | | | | | | | | | | FIRQueryDocumentSnapshot instances. (#662)
| * Merge remote-tracking branch 'origin/master' into release-4.8.1Gravatar Paul Beusterien2018-01-12
| |\ | |/ |/|
* | Fix import formatting (#660)Gravatar Paul Beusterien2018-01-12
| |
* | Remove over-aggressive closeWithFinalState: delegate assert. (#656)Gravatar Michael Lehenbauer2018-01-11
| | | | | | | | | | | | | | | | | | Fixes #596. closeWithFinalState: asserted delegate != nil, but that is not true if when startWithdelegate: was called we entered backoff (performBackoffWithDelegate:) and so self.delegate did not get assigned yet. We could rework the code to make the assertion hold, but per offline discussion this assert doesn't represent an invariant that we care about maintaining and so I'm just removing it.
| * Remove over-aggressive assert.Gravatar Michael Lehenbauer2018-01-11
| | | | | | | | | | | | | | | | | | | | closeWithFinalState: assumes delegate != nil, but that is not true if when startWithdelegate: was called we entered backoff (performBackoffWithDelegate:) and so self.delegate did not get assigned yet. We could rework the code to make the assertion hold, but per offline discussion this assert doesn't represent an invariant that we care about and so I'm just removing it.
| * Merge pull request #654 from firebase/masterGravatar Benoit St-Pierre2018-01-11
| |\ | |/ |/| Merge master into 4.8.1
* | Revert "Fully qualify protoc-generated outputs (#626)" (#653)Gravatar Gil2018-01-11
| | | | | | This reverts commit bc74670afec651c3f912cb6b7e54f5b68bd507f5.
| * Merge pull request #650 from firebase/bstpierre-version-bumpGravatar Benoit St-Pierre2018-01-11
| |\ | | | | | | Version bump for 4.8.1 Release
| * | Update from masterGravatar Benoit St-Pierre2018-01-11
| | | | | | | | | | | | | | | Picking up a few last-minute changes to CHANGELOGs and tests for 4.8.1 release.
| | * Version bump for 4.8.1 ReleaseGravatar Benoit St-Pierre2018-01-11
| |/ | | | | | | Updated the version numbers of pods which are being released in 4.8.1
* | Update CHANGELOG for Firestore v0.10.0 (#649)Gravatar Gil2018-01-11
| |
* | Fix FSTLocalDocumentsView to allow multiple mutations while offline (#644)Gravatar rsgowman2018-01-11
|/ | | | | * Fix FSTLocalDocumentsView to allow multiple mutations while offline. Previously, only the last mutation would actually be visible.
* Run style.sh (#636)Gravatar Michael Lehenbauer2018-01-10
| | | | Run style.sh (w/ clang-format version 6)
* Merge branch 'master' into mikelehen/merge-master-to-firestore-api-changesGravatar Michael Lehenbauer2018-01-09
|\
| * implement C++ assert (stdio, apple) (#612)Gravatar zxu2018-01-08
| | | | | | | | | | | | | | | | | | * implement C++ assert (stdio, apple) * Update tests for firebase_firestore_util renames * renaming `assert.h` to `firebase_assert.h` * refactoring to a common `WrapNSStringNoCopy()`
| * Port StringPrintf from //base (#624)Gravatar Gil2018-01-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Port StringPrintf from //base. Prefer this to approaches based on variadic templates. While the variadic template mechanisms are strictly safer, they result in binary bloat we can't afford. This is essentially the same StringPrintf previously open sourced as a part of protobuf, though updated for C++11 which saves a copy and a temporary buffer on the heap. * Add abseil as a subdirectory of Firestore This saves having to redefine all the libraries that abseil defines as imported libraries. * Rename firebase_firesture_util_log_* targets Cut the log out of the name to reflect that these will get more components besides just logging.
| * Fully qualify protoc-generated outputs (#626)Gravatar Gil2018-01-08
| | | | | | | | | | | | | | | | * Fully-qualify imports in the protocol compiler output * pbxproj updates from running pod update * New checked-in proto outputs
* | Fixing potential race in ServerTimestamp testsGravatar Sebastian Schmidt2018-01-05
| |