* Fix container instantiation timing, IID startup.
The container instantiation could happen at the wrong time, before all
components have been added to the container. This fixes it, and also
moves IID to use the proper instantiation timing instead of relying on
the `configureWithApp:` call. This is part continuation of #3147, where
I'll be fixing the rest of the SDKs in follow up PRs.
* Typo
* Further work on instantiation timing.
This moves the instantiation of components to after the FirebaseApp is
completely configured and assigned, as it should be. This also exposed
a recursive issue with IID calling the Messaging singleton, which in
turn called IID and instantiated multiple instances.
A change was made to break the cycle: the Messaging `isAutoInitEnabled`
call was changed to a static method vs an instance method, allowing IID
to call it during initialization without instantiating the Messaging
instance (since it doesn't have a direct dependency on it).
* Revert unintentional formatting of entire FIRMessaging file.
* Fix tests.
* Format InstanceID.m
* Remove unused import.
* Fix ComponentContainer test.
* Minor PR feedback.
* Update versions for Release 6.10.0
* Cherrypick #3983 and include Database in release. (#3986)
* Remove log argument that causes SocketRocket crash (#3983)
* Add FirebaseDatabase to release.
* Update CHANGELOG with version.
* Cherrypick for #3984 along with CHANGELOG update. (#3988)
* Fix race condition in FIRComponentContainer instance creation (#3984)
* Fix race condition in FIRComponentContainer instance creation
Reported in #3967. Users sometimes seeing a crash when multiple threads
concurrently try to create Firestore instances. By inspection I found
that there's a race here where two threads can check for presence in the
cache, see nothing, proceed to creation, both store a value in the cache,
and both return their copies. This would lead to two Firestores being
created for a single App.
This replaces `dispatch_sync` on a serial queue with good old
`@synchronized` blocks. `dispatch_sync` will self-deadlock if called
from a thread already on the queue while `@synchronized` allows
recursion.
No new tests are added because several tests like
`testDependencyDoesntBlock` already cover this case.
* format
* Update Core CHANGELOG
* Update Core CHANGELOG again
* Fix merge from CHANGELOG
* Fix race condition in FIRComponentContainer instance creation
Reported in #3967. Users sometimes seeing a crash when multiple threads
concurrently try to create Firestore instances. By inspection I found
that there's a race here where two threads can check for presence in the
cache, see nothing, proceed to creation, both store a value in the cache,
and both return their copies. This would lead to two Firestores being
created for a single App.
This replaces `dispatch_sync` on a serial queue with good old
`@synchronized` blocks. `dispatch_sync` will self-deadlock if called
from a thread already on the queue while `@synchronized` allows
recursion.
No new tests are added because several tests like
`testDependencyDoesntBlock` already cover this case.
* format
* Add UIScene lifecycle notifications alongside UIApplication ones
* Run styles.sh and update window helper to work on iOS 13
* Refactor foregrounded scene logic into its own method
* Conditional compilation for iOS 13 code
* Add notification parameter to notification selectors
* Fix placeholder
* Update versions for Release 6.9.0
* Fix unbalanced background task creation in GDTCCTUploader (#3838) (#3839)
* Add Manifest
* dependency version update
* Cherry picks for 6.9.0 (#3871)
* fixed "expiclitlySet" typo. (#3853)
* Mark unused variables (#3854)
* Mute FCM deprecated warnings with Xcode 11 and min iOS >= 10 (#3857)
* Add a third slash to make sure generated docs include these comments.b/13812238 (#3846)