Przeglądaj źródła

Rename the Auth package to Credentials

Sebastian Schmidt 4 lat temu
rodzic
commit
e67272dfd4
65 zmienionych plików z 409 dodań i 388 usunięć
  1. 78 70
      Firestore/Example/Firestore.xcodeproj/project.pbxproj
  2. 3 3
      Firestore/Example/Tests/Integration/FSTDatastoreTests.mm
  3. 2 2
      Firestore/Example/Tests/SpecTests/FSTMockDatastore.h
  4. 5 5
      Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm
  5. 2 2
      Firestore/Example/Tests/SpecTests/FSTSpecTests.mm
  6. 8 7
      Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.h
  7. 5 5
      Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.mm
  8. 7 7
      Firestore/Example/Tests/Util/FSTIntegrationTestCase.mm
  9. 11 11
      Firestore/Source/API/FIRFirestore+Internal.h
  10. 2 2
      Firestore/Source/API/FIRFirestore.mm
  11. 4 4
      Firestore/Source/API/FSTFirestoreComponent.mm
  12. 4 4
      Firestore/core/CMakeLists.txt
  13. 1 1
      Firestore/core/src/api/firestore.cc
  14. 11 10
      Firestore/core/src/api/firestore.h
  15. 3 3
      Firestore/core/src/core/firestore_client.cc
  16. 6 6
      Firestore/core/src/core/firestore_client.h
  17. 3 3
      Firestore/core/src/core/sync_engine.cc
  18. 5 5
      Firestore/core/src/core/sync_engine.h
  19. 8 8
      Firestore/core/src/credentials/auth_token.cc
  20. 9 9
      Firestore/core/src/credentials/auth_token.h
  21. 3 3
      Firestore/core/src/credentials/credentials_provider.cc
  22. 8 8
      Firestore/core/src/credentials/credentials_provider.h
  23. 4 4
      Firestore/core/src/credentials/empty_credentials_provider.cc
  24. 6 6
      Firestore/core/src/credentials/empty_credentials_provider.h
  25. 7 7
      Firestore/core/src/credentials/firebase_credentials_provider_apple.h
  26. 33 32
      Firestore/core/src/credentials/firebase_credentials_provider_apple.mm
  27. 3 3
      Firestore/core/src/credentials/user.cc
  28. 5 5
      Firestore/core/src/credentials/user.h
  29. 1 1
      Firestore/core/src/local/leveldb_mutation_queue.cc
  30. 3 3
      Firestore/core/src/local/leveldb_mutation_queue.h
  31. 3 3
      Firestore/core/src/local/leveldb_persistence.cc
  32. 2 2
      Firestore/core/src/local/leveldb_persistence.h
  33. 1 1
      Firestore/core/src/local/local_store.cc
  34. 4 4
      Firestore/core/src/local/local_store.h
  35. 2 2
      Firestore/core/src/local/memory_persistence.cc
  36. 5 4
      Firestore/core/src/local/memory_persistence.h
  37. 4 3
      Firestore/core/src/local/persistence.h
  38. 10 9
      Firestore/core/src/remote/datastore.cc
  39. 8 7
      Firestore/core/src/remote/datastore.h
  40. 6 6
      Firestore/core/src/remote/grpc_connection.cc
  41. 5 5
      Firestore/core/src/remote/grpc_connection.h
  42. 5 4
      Firestore/core/src/remote/stream.cc
  43. 6 6
      Firestore/core/src/remote/stream.h
  44. 3 3
      Firestore/core/src/remote/watch_stream.cc
  45. 8 6
      Firestore/core/src/remote/watch_stream.h
  46. 3 3
      Firestore/core/src/remote/write_stream.cc
  47. 8 6
      Firestore/core/src/remote/write_stream.h
  48. 4 4
      Firestore/core/test/unit/credentials/CMakeLists.txt
  49. 4 4
      Firestore/core/test/unit/credentials/credentials_provider_test.cc
  50. 6 6
      Firestore/core/test/unit/credentials/empty_credentials_provider_test.cc
  51. 22 21
      Firestore/core/test/unit/credentials/firebase_credentials_provider_test.mm
  52. 5 5
      Firestore/core/test/unit/credentials/token_test.cc
  53. 3 3
      Firestore/core/test/unit/credentials/user_test.cc
  54. 2 2
      Firestore/core/test/unit/local/leveldb_mutation_queue_test.cc
  55. 2 2
      Firestore/core/test/unit/local/local_store_test.cc
  56. 2 2
      Firestore/core/test/unit/local/lru_garbage_collector_test.cc
  57. 2 2
      Firestore/core/test/unit/local/lru_garbage_collector_test.h
  58. 2 2
      Firestore/core/test/unit/local/mutation_queue_test.cc
  59. 2 2
      Firestore/core/test/unit/local/query_engine_test.cc
  60. 1 1
      Firestore/core/test/unit/remote/datastore_test.cc
  61. 4 4
      Firestore/core/test/unit/remote/fake_credentials_provider.cc
  62. 4 4
      Firestore/core/test/unit/remote/fake_credentials_provider.h
  63. 3 3
      Firestore/core/test/unit/remote/grpc_connection_test.cc
  64. 5 5
      Firestore/core/test/unit/remote/grpc_stream_tester.cc
  65. 3 3
      Firestore/core/test/unit/remote/stream_test.cc

+ 78 - 70
Firestore/Example/Firestore.xcodeproj/project.pbxproj

@@ -25,6 +25,7 @@
 		02EB33CC2590E1484D462912 /* annotations.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE9520B89AAC00B5BCE7 /* annotations.pb.cc */; };
 		041CF73F67F6A22BF317625A /* FIRTimestampTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B65D34A7203C99090076A5E1 /* FIRTimestampTest.m */; };
 		0455FC6E2A281BD755FD933A /* precondition_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA5520A36E1F00BCEB75 /* precondition_test.cc */; };
+		0466093697EBFF5F71E9342C /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 39A44C2A20D781322D286408 /* firebase_credentials_provider_test.mm */; };
 		047F5209AB055A884D795B8A /* field_filter_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = E8551D6C6FB0B1BACE9E5BAD /* field_filter_test.cc */; };
 		04887E378B39FB86A8A5B52B /* leveldb_local_store_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5FF903AEFA7A3284660FA4C5 /* leveldb_local_store_test.cc */; };
 		048A55EED3241ABC28752F86 /* memory_mutation_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 74FBEFA4FE4B12C435011763 /* memory_mutation_queue_test.cc */; };
@@ -52,7 +53,6 @@
 		08FA4102AD14452E9587A1F2 /* leveldb_util_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 332485C4DCC6BA0DBB5E31B7 /* leveldb_util_test.cc */; };
 		0963F6D7B0F9AE1E24B82866 /* path_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 403DBF6EFB541DFD01582AA3 /* path_test.cc */; };
 		098191405BA24F9A7E4F80C6 /* append_only_list_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5477CDE922EE71C8000FCC1E /* append_only_list_test.cc */; };
-		0A1B97E51BDE36DE4F6E3787 /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93620239689000A432D /* empty_credentials_provider_test.cc */; };
 		0A4E1B5E3E853763AE6ED7AE /* grpc_stream_tester.cc in Sources */ = {isa = PBXBuildFile; fileRef = 87553338E42B8ECA05BA987E /* grpc_stream_tester.cc */; };
 		0A52B47C43B7602EE64F53A7 /* cc_compilation_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1B342370EAE3AA02393E33EB /* cc_compilation_test.cc */; };
 		0A6FBE65A7FE048BAD562A15 /* FSTGoogleTestTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 54764FAE1FAA21B90085E60A /* FSTGoogleTestTests.mm */; };
@@ -92,6 +92,7 @@
 		11F8EE69182C9699E90A9E3D /* database_info_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D92E20235D22000A432D /* database_info_test.cc */; };
 		12158DFCEE09D24B7988A340 /* maybe_document.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE7E20B89AAC00B5BCE7 /* maybe_document.pb.cc */; };
 		121F0FB9DCCBFB7573C7AF48 /* bundle_serializer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B5C2A94EE24E60543F62CC35 /* bundle_serializer_test.cc */; };
+		124AAEE987451820F24EEA8E /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = CCC9BD953F121B9E29F9AA42 /* user_test.cc */; };
 		125B1048ECB755C2106802EB /* executor_std_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4687208F9B9100554BA2 /* executor_std_test.cc */; };
 		1290FA77A922B76503AE407C /* lru_garbage_collector_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 277EAACC4DD7C21332E8496A /* lru_garbage_collector_test.cc */; };
 		1291D9F5300AFACD1FBD262D /* array_sorted_map_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54EB764C202277B30088B8F3 /* array_sorted_map_test.cc */; };
@@ -110,7 +111,6 @@
 		15BF63DFF3A7E9A5376C4233 /* transform_operation_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 33607A3AE91548BD219EC9C6 /* transform_operation_test.cc */; };
 		15F54E9538839D56A40C5565 /* watch_change_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2D7472BC70C024D736FF74D9 /* watch_change_test.cc */; };
 		16791B16601204220623916C /* status_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54A0352C20A3B3D7003E0143 /* status_test.cc */; };
-		16F52ECC6FA8A0587CD779EB /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93220239654000A432D /* user_test.cc */; };
 		16FE432587C1B40AF08613D2 /* objc_type_traits_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2A0CF41BA5AED6049B0BEB2C /* objc_type_traits_apple_test.mm */; };
 		1733601ECCEA33E730DEAF45 /* autoid_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54740A521FC913E500713A1A /* autoid_test.cc */; };
 		17473086EBACB98CDC3CC65C /* view_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = C7429071B33BDF80A7FA2F8A /* view_test.cc */; };
@@ -119,7 +119,6 @@
 		17DFF30CF61D87883986E8B6 /* executor_std_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4687208F9B9100554BA2 /* executor_std_test.cc */; };
 		1817DEF8FF479D218381C541 /* FSTGoogleTestTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 54764FAE1FAA21B90085E60A /* FSTGoogleTestTests.mm */; };
 		18638EAED9E126FC5D895B14 /* common.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 544129D221C2DDC800EFB9CC /* common.pb.cc */; };
-		18688026A6F1E9404F63B243 /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93620239689000A432D /* empty_credentials_provider_test.cc */; };
 		18CF41A17EA3292329E1119D /* FIRGeoPointTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E048202154AA00B64F25 /* FIRGeoPointTests.mm */; };
 		18F644E6AA98E6D6F3F1F809 /* executor_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4688208F9B9100554BA2 /* executor_test.cc */; };
 		1989623826923A9D5A7EFA40 /* create_noop_connectivity_monitor.cc in Sources */ = {isa = PBXBuildFile; fileRef = CF39535F2C41AB0006FA6C0E /* create_noop_connectivity_monitor.cc */; };
@@ -127,13 +126,15 @@
 		199B778D5820495797E0BE02 /* filesystem_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = F51859B394D01C0C507282F1 /* filesystem_test.cc */; };
 		1B4794A51F4266556CD0976B /* view_snapshot_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = CC572A9168BBEF7B83E4BBC5 /* view_snapshot_test.cc */; };
 		1B6E74BA33B010D76DB1E2F9 /* FIRGeoPointTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E048202154AA00B64F25 /* FIRGeoPointTests.mm */; };
+		1B816F48012524939CA57CB3 /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = CCC9BD953F121B9E29F9AA42 /* user_test.cc */; };
 		1B9653C51491FAA4BCDE1E11 /* byte_stream_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7628664347B9C96462D4BF17 /* byte_stream_apple_test.mm */; };
+		1B9E54F4C4280A713B825981 /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = A082AFDD981B07B5AD78FDE8 /* token_test.cc */; };
 		1BF1F9A0CBB6B01654D3C2BE /* field_transform_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7515B47C92ABEEC66864B55C /* field_transform_test.cc */; };
 		1C19D796DB6715368407387A /* annotations.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE9520B89AAC00B5BCE7 /* annotations.pb.cc */; };
-		1C4D8915AE94323AD1024D74 /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7DF2023A3EF00BA84F0 /* token_test.cc */; };
 		1C4F88DDEFA6FA23E9E4DB4B /* mutation_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3068AA9DFBBA86C1FE2A946E /* mutation_queue_test.cc */; };
 		1C7254742A9F6F7042C9D78E /* FSTEventAccumulator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E0392021401F00B64F25 /* FSTEventAccumulator.mm */; };
 		1C79AE3FBFC91800E30D092C /* CodableIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 124C932B22C1642C00CA8C2D /* CodableIntegrationTests.swift */; };
+		1C7F8733582BAF99EDAA851E /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8FA60B08D59FEA0D6751E87F /* empty_credentials_provider_test.cc */; };
 		1CAA9012B25F975D445D5978 /* strerror_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 358C3B5FE573B1D60A4F7592 /* strerror_test.cc */; };
 		1CB8AEFBF3E9565FF9955B50 /* async_queue_libdispatch_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4680208EA0BE00554BA2 /* async_queue_libdispatch_test.mm */; };
 		1CC56DCA513B98CE39A6ED45 /* memory_local_store_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = F6CA0C5638AB6627CB5B4CF4 /* memory_local_store_test.cc */; };
@@ -203,7 +204,6 @@
 		2AAEABFD550255271E3BAC91 /* to_string_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = B68B1E002213A764008977EF /* to_string_apple_test.mm */; };
 		2ABA80088D70E7A58F95F7D8 /* delayed_constructor_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0A6E9136804A41CEC9D55D4 /* delayed_constructor_test.cc */; };
 		2AD8EE91928AE68DF268BEDA /* limbo_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA129E1F315EE100DD57A1 /* limbo_spec_test.json */; };
-		2B1E95FAFD350C191B525F3B /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93620239689000A432D /* empty_credentials_provider_test.cc */; };
 		2B4021C3E663DDDDD512E961 /* objc_type_traits_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2A0CF41BA5AED6049B0BEB2C /* objc_type_traits_apple_test.mm */; };
 		2B4234B962625F9EE68B31AC /* index_manager_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AE4A9E38D65688EE000EE2A1 /* index_manager_test.cc */; };
 		2B4D0509577E5CE0B0B8CEDF /* message_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = CE37875365497FFA8687B745 /* message_test.cc */; };
@@ -222,10 +222,10 @@
 		2EB2EE24076A4E4621E38E45 /* nanopb_util_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6F5B6C1399F92FD60F2C582B /* nanopb_util_test.cc */; };
 		2EC1C4D202A01A632339A161 /* field_transform_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7515B47C92ABEEC66864B55C /* field_transform_test.cc */; };
 		2F3740131CC8F8230351B91D /* byte_stream_cpp_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 01D10113ECC5B446DB35E96D /* byte_stream_cpp_test.cc */; };
-		2F6E23D7888FC82475C63010 /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7DF2023A3EF00BA84F0 /* token_test.cc */; };
 		2F8FDF35BBB549A6F4D2118E /* FSTMemorySpecTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E02F20213FFC00B64F25 /* FSTMemorySpecTests.mm */; };
 		2FA0BAE32D587DF2EA5EEB97 /* async_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB467B208E9A8200554BA2 /* async_queue_test.cc */; };
 		3040FD156E1B7C92B0F2A70C /* ordered_code_benchmark.cc in Sources */ = {isa = PBXBuildFile; fileRef = 0473AFFF5567E667A125347B /* ordered_code_benchmark.cc */; };
+		3056418E81BC7584FBE8AD6C /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = CCC9BD953F121B9E29F9AA42 /* user_test.cc */; };
 		306E762DC6B829CED4FD995D /* target_id_generator_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB380CF82019382300D97691 /* target_id_generator_test.cc */; };
 		3095316962A00DD6A4A2A441 /* counting_query_engine.cc in Sources */ = {isa = PBXBuildFile; fileRef = 99434327614FEFF7F7DC88EC /* counting_query_engine.cc */; };
 		314D231A9F33E0502611DD20 /* sorted_set_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA4C20A36DBB00BCEB75 /* sorted_set_test.cc */; };
@@ -271,7 +271,6 @@
 		39CDC9EC5FD2E891D6D49151 /* secure_random_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54740A531FC913E500713A1A /* secure_random_test.cc */; };
 		3A307F319553A977258BB3D6 /* view_snapshot_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = CC572A9168BBEF7B83E4BBC5 /* view_snapshot_test.cc */; };
 		3A7CB01751697ED599F2D9A1 /* executor_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4688208F9B9100554BA2 /* executor_test.cc */; };
-		3A8C29BF47A62B7BADCBA6F5 /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93620239689000A432D /* empty_credentials_provider_test.cc */; };
 		3ABF84FC618016CA6E1D3C03 /* leveldb_util_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 332485C4DCC6BA0DBB5E31B7 /* leveldb_util_test.cc */; };
 		3AC147E153D4A535B71C519E /* sorted_set_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA4C20A36DBB00BCEB75 /* sorted_set_test.cc */; };
 		3AFBEF94A35034719477C066 /* random_access_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 014C60628830D95031574D15 /* random_access_queue_test.cc */; };
@@ -283,14 +282,12 @@
 		3B843E4C1F3A182900548890 /* remote_store_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 3B843E4A1F3930A400548890 /* remote_store_spec_test.json */; };
 		3BA4EEA6153B3833F86B8104 /* writer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = BC3C788D290A935C353CEAA1 /* writer_test.cc */; };
 		3BAFCABA851AE1865D904323 /* to_string_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B696858D2214B53900271095 /* to_string_test.cc */; };
-		3BCEBA50E9678123245C0272 /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93620239689000A432D /* empty_credentials_provider_test.cc */; };
 		3CFFA6F016231446367E3A69 /* listen_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA12A01F315EE100DD57A1 /* listen_spec_test.json */; };
 		3D22F56C0DE7C7256C75DC06 /* tree_sorted_map_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA4D20A36DBB00BCEB75 /* tree_sorted_map_test.cc */; };
 		3D9619906F09108E34FF0C95 /* FSTSmokeTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E07C202154EB00B64F25 /* FSTSmokeTests.mm */; };
 		3DBB48F077C97200F32B51A0 /* value_util_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 40F9D09063A07F710811A84F /* value_util_test.cc */; };
 		3DBBC644BE08B140BCC23BD5 /* string_apple_benchmark.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4C73C0CC6F62A90D8573F383 /* string_apple_benchmark.mm */; };
 		3DDC57212ADBA9AD498EAA4C /* bundle.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = A366F6AE1A5A77548485C091 /* bundle.pb.cc */; };
-		3DF1AB74036BD8AEF4430FA6 /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7E22023CDC500BA84F0 /* firebase_credentials_provider_test.mm */; };
 		3DFBA7413965F3E6F366E923 /* grpc_unary_call_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6D964942163E63900EB9CFB /* grpc_unary_call_test.cc */; };
 		3E38E4B33855DD6CF7526225 /* bundle_serializer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B5C2A94EE24E60543F62CC35 /* bundle_serializer_test.cc */; };
 		3F3C2DAD9F9326BF789B1C96 /* serializer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 61F72C5520BC48FD001A68CB /* serializer_test.cc */; };
@@ -298,7 +295,6 @@
 		3F6C9F8A993CF4B0CD51E7F0 /* lru_garbage_collector_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 277EAACC4DD7C21332E8496A /* lru_garbage_collector_test.cc */; };
 		3FF88C11276449F00F79AF48 /* status_testing.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3CAA33F964042646FDDAF9F9 /* status_testing.cc */; };
 		3FFFC1FE083D8BE9C4D9A148 /* string_util_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB380CFC201A2EE200D97691 /* string_util_test.cc */; };
-		4008AF7585844F12207FC2F5 /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D9342023966E000A432D /* credentials_provider_test.cc */; };
 		401BBE4D4572EEBAA80E0B89 /* field_filter_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = E8551D6C6FB0B1BACE9E5BAD /* field_filter_test.cc */; };
 		40431BF2A368D0C891229F6E /* FSTMemorySpecTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E02F20213FFC00B64F25 /* FSTMemorySpecTests.mm */; };
 		409C0F2BFC2E1BECFFAC4D32 /* testutil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54A0352820A3B3BD003E0143 /* testutil.cc */; };
@@ -309,7 +305,6 @@
 		42208EDA18C500BC271B6E95 /* FSTSyncEngineTestDriver.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E02E20213FFC00B64F25 /* FSTSyncEngineTestDriver.mm */; };
 		432056C4D1259F76C80FC2A8 /* FSTUserDataReaderTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8D9892F204959C50613F16C8 /* FSTUserDataReaderTests.mm */; };
 		433474A3416B76645FFD17BB /* hashing_test_apple.mm in Sources */ = {isa = PBXBuildFile; fileRef = B69CF3F02227386500B281C8 /* hashing_test_apple.mm */; };
-		43EDB01D1641D96C40DA1889 /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D9342023966E000A432D /* credentials_provider_test.cc */; };
 		444298A613D027AC67F7E977 /* memory_lru_garbage_collector_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9765D47FA12FA283F4EFAD02 /* memory_lru_garbage_collector_test.cc */; };
 		44A8B51C05538A8DACB85578 /* byte_stream_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 432C71959255C5DBDF522F52 /* byte_stream_test.cc */; };
 		44C4244E42FFFB6E9D7F28BA /* byte_stream_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 432C71959255C5DBDF522F52 /* byte_stream_test.cc */; };
@@ -328,6 +323,7 @@
 		470A37727BBF516B05ED276A /* executor_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4688208F9B9100554BA2 /* executor_test.cc */; };
 		4747A986288114C2B7CD179E /* statusor_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54A0352D20A3B3D7003E0143 /* statusor_test.cc */; };
 		474DF520B9859479845C8A4D /* bundle_builder.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4F5B96F3ABCD2CA901DB1CD4 /* bundle_builder.cc */; };
+		475FE2D34C6555A54D77A054 /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8FA60B08D59FEA0D6751E87F /* empty_credentials_provider_test.cc */; };
 		4781186C01D33E67E07F0D0D /* orderby_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA12A21F315EE100DD57A1 /* orderby_spec_test.json */; };
 		479A392EAB42453D49435D28 /* memory_bundle_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB4AB1388538CD3CB19EB028 /* memory_bundle_cache_test.cc */; };
 		4809D7ACAA9414E3192F04FF /* FIRGeoPointTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E048202154AA00B64F25 /* FIRGeoPointTests.mm */; };
@@ -350,7 +346,6 @@
 		4B54FA587C7107973FD76044 /* FIRBundlesTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 776530F066E788C355B78457 /* FIRBundlesTests.mm */; };
 		4B5FA86D9568ECE20C6D3AD1 /* bundle_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 79EAA9F7B1B9592B5F053923 /* bundle_spec_test.json */; };
 		4BFEEB7FDD7CD5A693B5B5C1 /* index_manager_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AE4A9E38D65688EE000EE2A1 /* index_manager_test.cc */; };
-		4C0669A22F62E085674A7643 /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7DF2023A3EF00BA84F0 /* token_test.cc */; };
 		4C4D780CA9367DBA324D97FF /* load_bundle_task_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8F1A7B4158D9DD76EE4836BF /* load_bundle_task_test.cc */; };
 		4C66806697D7BCA730FA3697 /* common.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 544129D221C2DDC800EFB9CC /* common.pb.cc */; };
 		4CC78CA0E9E03F5DCF13FEBD /* Pods_Firestore_Tests_tvOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D7DF4A6F740086A2D8C0E28E /* Pods_Firestore_Tests_tvOS.framework */; };
@@ -372,7 +367,6 @@
 		4EE1ABA574FBFDC95165624C /* delayed_constructor_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0A6E9136804A41CEC9D55D4 /* delayed_constructor_test.cc */; };
 		4F5714D37B6D119CB07ED8AE /* orderby_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA12A21F315EE100DD57A1 /* orderby_spec_test.json */; };
 		4F65FD71B7960944C708A962 /* leveldb_lru_garbage_collector_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B629525F7A1AAC1AB765C74F /* leveldb_lru_garbage_collector_test.cc */; };
-		4F67086B5CC1787F612AE503 /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7DF2023A3EF00BA84F0 /* token_test.cc */; };
 		4F857404731D45F02C5EE4C3 /* async_queue_libdispatch_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4680208EA0BE00554BA2 /* async_queue_libdispatch_test.mm */; };
 		4FAB27F13EA5D3D79E770EA2 /* ordered_code_benchmark.cc in Sources */ = {isa = PBXBuildFile; fileRef = 0473AFFF5567E667A125347B /* ordered_code_benchmark.cc */; };
 		4FAD8823DC37B9CA24379E85 /* leveldb_mutation_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5C7942B6244F4C416B11B86C /* leveldb_mutation_queue_test.cc */; };
@@ -512,14 +506,14 @@
 		555161D6DB2DDC8B57F72A70 /* comparison_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 548DB928200D59F600E00ABC /* comparison_test.cc */; };
 		5556B648B9B1C2F79A706B4F /* common.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 544129D221C2DDC800EFB9CC /* common.pb.cc */; };
 		55E84644D385A70E607A0F91 /* leveldb_local_store_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5FF903AEFA7A3284660FA4C5 /* leveldb_local_store_test.cc */; };
-		5686B35D611C1CFF6BFE7215 /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D9342023966E000A432D /* credentials_provider_test.cc */; };
 		568EC1C0F68A7B95E57C8C6C /* leveldb_key_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54995F6E205B6E12004EFFA0 /* leveldb_key_test.cc */; };
 		56D85436D3C864B804851B15 /* string_format_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9CFD366B783AE27B9E79EE7A /* string_format_apple_test.mm */; };
+		573EC25F9957A7C0F5416D06 /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 39A44C2A20D781322D286408 /* firebase_credentials_provider_test.mm */; };
+		5775357B8B13DC4D30D2F349 /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 39A44C2A20D781322D286408 /* firebase_credentials_provider_test.mm */; };
 		57BDB8DBEDEC4C61DB497CB4 /* append_only_list_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5477CDE922EE71C8000FCC1E /* append_only_list_test.cc */; };
 		583DF65751B7BBD0A222CAB4 /* byte_stream_cpp_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 01D10113ECC5B446DB35E96D /* byte_stream_cpp_test.cc */; };
 		58E377DCCC64FE7D2C6B59A1 /* database_id_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB71064B201FA60300344F18 /* database_id_test.cc */; };
 		5958E3E3A0446A88B815CB70 /* grpc_connection_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6D9649021544D4F00EB9CFB /* grpc_connection_test.cc */; };
-		596C782EFB68131380F8EEF8 /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93220239654000A432D /* user_test.cc */; };
 		59880AE766F7FBFF0C41A94E /* remote_event_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 584AE2C37A55B408541A6FF3 /* remote_event_test.cc */; };
 		59E6941008253D4B0F77C2BA /* writer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = BC3C788D290A935C353CEAA1 /* writer_test.cc */; };
 		59E89A97A476790E89AFC7E7 /* view_snapshot_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = CC572A9168BBEF7B83E4BBC5 /* view_snapshot_test.cc */; };
@@ -534,6 +528,7 @@
 		5B89B1BA0AD400D9BF581420 /* listen_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA12A01F315EE100DD57A1 /* listen_spec_test.json */; };
 		5BC8406FD842B2FC2C200B2F /* stream_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5B5414D28802BC76FDADABD6 /* stream_test.cc */; };
 		5BE49546D57C43DDFCDB6FBD /* to_string_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = B68B1E002213A764008977EF /* to_string_apple_test.mm */; };
+		5C9B5696644675636A052018 /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = A082AFDD981B07B5AD78FDE8 /* token_test.cc */; };
 		5CADE71A1CA6358E1599F0F9 /* hashing_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54511E8D209805F8005BD28F /* hashing_test.cc */; };
 		5D405BE298CE4692CB00790A /* Pods_Firestore_Tests_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B50B3A0DF77100EEE887891 /* Pods_Firestore_Tests_iOS.framework */; };
 		5D45CC300ED037358EF33A8F /* snapshot_version_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABA495B9202B7E79008A7851 /* snapshot_version_test.cc */; };
@@ -636,6 +631,7 @@
 		6E10507432E1D7AE658D16BD /* FSTSpecTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E03020213FFC00B64F25 /* FSTSpecTests.mm */; };
 		6E4854B19B120C6F0F8192CC /* FSTAPIHelpers.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E04E202154AA00B64F25 /* FSTAPIHelpers.mm */; };
 		6E59498D20F55BA800ECD9A5 /* FuzzingResources in Resources */ = {isa = PBXBuildFile; fileRef = 6ED6DEA120F5502700FC6076 /* FuzzingResources */; };
+		6E7603BC1D8011A5D6F62072 /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2F4FA4576525144C5069A7A5 /* credentials_provider_test.cc */; };
 		6E8302E021022309003E1EA3 /* FSTFuzzTestFieldPath.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6E8302DF21022309003E1EA3 /* FSTFuzzTestFieldPath.mm */; };
 		6EA39FDE20FE820E008D461F /* FSTFuzzTestSerializer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6EA39FDD20FE820E008D461F /* FSTFuzzTestSerializer.mm */; };
 		6EC28BB8C38E3FD126F68211 /* delayed_constructor_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0A6E9136804A41CEC9D55D4 /* delayed_constructor_test.cc */; };
@@ -709,6 +705,7 @@
 		7DB0915EF7C22C700A423F7C /* target_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B5C37696557C81A6C2B7271A /* target_cache_test.cc */; };
 		7DBE7DB90CF83B589A94980F /* reference_set_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 132E32997D781B896672D30A /* reference_set_test.cc */; };
 		7DD67E9621C52B790E844B16 /* FIRDatabaseTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E06C202154D500B64F25 /* FIRDatabaseTests.mm */; };
+		7DE2560C3B4EF0512F0D538C /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2F4FA4576525144C5069A7A5 /* credentials_provider_test.cc */; };
 		7DED491019248CE9B9E9EB50 /* FSTLevelDBSpecTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E02C20213FFB00B64F25 /* FSTLevelDBSpecTests.mm */; };
 		7E82D412BB56728BEBB7EF46 /* bundle_serializer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B5C2A94EE24E60543F62CC35 /* bundle_serializer_test.cc */; };
 		7E97B0F04E25610FF37E9259 /* memory_target_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2286F308EFB0534B1BDE05B9 /* memory_target_cache_test.cc */; };
@@ -760,6 +757,7 @@
 		88FD82A1FC5FEC5D56B481D8 /* maybe_document.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE7E20B89AAC00B5BCE7 /* maybe_document.pb.cc */; };
 		897F3C1936612ACB018CA1DD /* http.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE9720B89AAC00B5BCE7 /* http.pb.cc */; };
 		89C71AEAA5316836BB1D5A01 /* view_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = C7429071B33BDF80A7FA2F8A /* view_test.cc */; };
+		89EB0C7B1241E6F1800A3C7E /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8FA60B08D59FEA0D6751E87F /* empty_credentials_provider_test.cc */; };
 		8A6C809B9F81C30B7333FCAA /* FIRFirestoreSourceTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6161B5012047140400A99DBB /* FIRFirestoreSourceTests.mm */; };
 		8A76A3A8345B984C91B0843E /* schedule_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9B0B005A79E765AF02793DCE /* schedule_test.cc */; };
 		8A79DDB4379A063C30A76329 /* iterator_adaptors_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54A0353420A3D8CB003E0143 /* iterator_adaptors_test.cc */; };
@@ -771,7 +769,6 @@
 		8C602DAD4E8296AB5EFB962A /* firestore.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 544129D421C2DDC800EFB9CC /* firestore.pb.cc */; };
 		8C82D4D3F9AB63E79CC52DC8 /* Pods_Firestore_IntegrationTests_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECEBABC7E7B693BE808A1052 /* Pods_Firestore_IntegrationTests_iOS.framework */; };
 		8D0EF43F1B7B156550E65C20 /* FSTGoogleTestTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 54764FAE1FAA21B90085E60A /* FSTGoogleTestTests.mm */; };
-		8D5A9E6E43B6F47431841FE2 /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93220239654000A432D /* user_test.cc */; };
 		8ECDF2AFCF1BCA1A2CDAAD8A /* document_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB6B908320322E4D00CC290A /* document_test.cc */; };
 		8F3AE423677A4C50F7E0E5C0 /* database_info_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D92E20235D22000A432D /* database_info_test.cc */; };
 		8F4F40E9BC7ED588F67734D5 /* app_testing.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5467FB07203E6A44009C9584 /* app_testing.mm */; };
@@ -787,7 +784,6 @@
 		911931696309D2EABB325F17 /* strerror_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 358C3B5FE573B1D60A4F7592 /* strerror_test.cc */; };
 		913F6E57AF18F84C5ECFD414 /* lru_garbage_collector_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 277EAACC4DD7C21332E8496A /* lru_garbage_collector_test.cc */; };
 		915A9B8DB280DB4787D83FFE /* byte_stream_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 432C71959255C5DBDF522F52 /* byte_stream_test.cc */; };
-		918E3D35942CE493690C45CE /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93220239654000A432D /* user_test.cc */; };
 		91AEFFEE35FBE15FEC42A1F4 /* memory_local_store_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = F6CA0C5638AB6627CB5B4CF4 /* memory_local_store_test.cc */; };
 		920B6ABF76FDB3547F1CCD84 /* firestore.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 544129D421C2DDC800EFB9CC /* firestore.pb.cc */; };
 		925BE64990449E93242A00A2 /* memory_mutation_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 74FBEFA4FE4B12C435011763 /* memory_mutation_queue_test.cc */; };
@@ -808,11 +804,13 @@
 		9617B75E9E27E7BA46D87EF3 /* query_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B9C261C26C5D311E1E3C0CB9 /* query_test.cc */; };
 		96552D8E218F68DDCFE210A0 /* status_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5493A423225F9990006DE7BA /* status_apple_test.mm */; };
 		96898170B456EAF092F73BBC /* defer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8ABAC2E0402213D837F73DC3 /* defer_test.cc */; };
+		96D95E144C383459D4E26E47 /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = A082AFDD981B07B5AD78FDE8 /* token_test.cc */; };
 		96E54377873FCECB687A459B /* value_util_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 40F9D09063A07F710811A84F /* value_util_test.cc */; };
 		974FF09E6AFD24D5A39B898B /* local_serializer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = F8043813A5D16963EC02B182 /* local_serializer_test.cc */; };
 		97729B53698C0E52EB165003 /* field_filter_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = E8551D6C6FB0B1BACE9E5BAD /* field_filter_test.cc */; };
 		9774A6C2AA02A12D80B34C3C /* database_id_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB71064B201FA60300344F18 /* database_id_test.cc */; };
 		9783FAEA4CF758E8C4C2D76E /* hashing_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54511E8D209805F8005BD28F /* hashing_test.cc */; };
+		9860F493EBF43AF5AC0A88BD /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8FA60B08D59FEA0D6751E87F /* empty_credentials_provider_test.cc */; };
 		98708140787A9465D883EEC9 /* leveldb_mutation_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5C7942B6244F4C416B11B86C /* leveldb_mutation_queue_test.cc */; };
 		98FE82875A899A40A98AAC22 /* leveldb_opener_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 75860CD13AF47EB1EA39EC2F /* leveldb_opener_test.cc */; };
 		990EC10E92DADB7D86A4BEE3 /* string_format_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54131E9620ADE678001DF3FF /* string_format_test.cc */; };
@@ -822,6 +820,7 @@
 		9AC28D928902C6767A11F5FC /* objc_type_traits_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2A0CF41BA5AED6049B0BEB2C /* objc_type_traits_apple_test.mm */; };
 		9AC604BF7A76CABDF26F8C8E /* cc_compilation_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1B342370EAE3AA02393E33EB /* cc_compilation_test.cc */; };
 		9B2CD4CBB1DFE8BC3C81A335 /* async_queue_libdispatch_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4680208EA0BE00554BA2 /* async_queue_libdispatch_test.mm */; };
+		9BEC62D59EB2C68342F493CD /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2F4FA4576525144C5069A7A5 /* credentials_provider_test.cc */; };
 		9C1F25177DC5753B075DCF65 /* existence_filter_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA129D1F315EE100DD57A1 /* existence_filter_spec_test.json */; };
 		9C366448F9BA7A4AC0821AF7 /* bundle_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 79EAA9F7B1B9592B5F053923 /* bundle_spec_test.json */; };
 		9C86EEDEA131BFD50255EEF1 /* comparison_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 548DB928200D59F600E00ABC /* comparison_test.cc */; };
@@ -858,7 +857,6 @@
 		A5AB1815C45FFC762981E481 /* write.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 544129D921C2DDC800EFB9CC /* write.pb.cc */; };
 		A5B8C273593D1BB6E8AE4CBA /* view_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = C7429071B33BDF80A7FA2F8A /* view_test.cc */; };
 		A602E6C7C8B243BB767D251C /* leveldb_index_manager_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 166CE73C03AB4366AAC5201C /* leveldb_index_manager_test.cc */; };
-		A61AE3D94C975A87EFA82ADA /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7E22023CDC500BA84F0 /* firebase_credentials_provider_test.mm */; };
 		A61BB461F3E5822175F81719 /* memory_remote_document_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1CA9800A53669EFBFFB824E3 /* memory_remote_document_cache_test.cc */; };
 		A62CDCEBE56E37FBB085CFF9 /* fake_credentials_provider.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC17AF218430D8BB28DD197 /* fake_credentials_provider.cc */; };
 		A6A916A7DEA41EE29FD13508 /* watch_change_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2D7472BC70C024D736FF74D9 /* watch_change_test.cc */; };
@@ -867,6 +865,7 @@
 		A6E236CE8B3A47BE32254436 /* array_sorted_map_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54EB764C202277B30088B8F3 /* array_sorted_map_test.cc */; };
 		A7309DAD4A3B5334536ECA46 /* remote_event_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 584AE2C37A55B408541A6FF3 /* remote_event_test.cc */; };
 		A7399FB3BEC50BBFF08EC9BA /* mutation_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3068AA9DFBBA86C1FE2A946E /* mutation_queue_test.cc */; };
+		A80D38096052F928B17E1504 /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = CCC9BD953F121B9E29F9AA42 /* user_test.cc */; };
 		A8AF92A35DFA30EEF9C27FB7 /* database_info_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D92E20235D22000A432D /* database_info_test.cc */; };
 		A8C9FF6D13E6C83D4AB54EA7 /* secure_random_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54740A531FC913E500713A1A /* secure_random_test.cc */; };
 		A907244EE37BC32C8D82948E /* FSTSpecTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E03020213FFC00B64F25 /* FSTSpecTests.mm */; };
@@ -875,6 +874,7 @@
 		AA13B6E1EF0AD9E9857AAE1C /* byte_stream_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 432C71959255C5DBDF522F52 /* byte_stream_test.cc */; };
 		AAC15E7CCAE79619B2ABB972 /* XCTestCase+Await.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E0372021401E00B64F25 /* XCTestCase+Await.mm */; };
 		AAF2F02E77A80C9CDE2C0C7A /* filesystem_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = F51859B394D01C0C507282F1 /* filesystem_test.cc */; };
+		AAFA9D7A0A067F2D3D8D5487 /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = A082AFDD981B07B5AD78FDE8 /* token_test.cc */; };
 		AB2BAB0BD77FF05CC26FCF75 /* async_queue_std_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4681208EA0BE00554BA2 /* async_queue_std_test.cc */; };
 		AB380CFB2019388600D97691 /* target_id_generator_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB380CF82019382300D97691 /* target_id_generator_test.cc */; };
 		AB380CFE201A2F4500D97691 /* string_util_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB380CFC201A2EE200D97691 /* string_util_test.cc */; };
@@ -887,11 +887,6 @@
 		AB8209455BAA17850D5E196D /* http.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE9720B89AAC00B5BCE7 /* http.pb.cc */; };
 		AB9FF792C60FC581909EF381 /* recovery_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 9C1AFCC9E616EC33D6E169CF /* recovery_spec_test.json */; };
 		ABA495BB202B7E80008A7851 /* snapshot_version_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABA495B9202B7E79008A7851 /* snapshot_version_test.cc */; };
-		ABC1D7DC2023A04B00BA84F0 /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D9342023966E000A432D /* credentials_provider_test.cc */; };
-		ABC1D7DD2023A04F00BA84F0 /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93620239689000A432D /* empty_credentials_provider_test.cc */; };
-		ABC1D7DE2023A05300BA84F0 /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93220239654000A432D /* user_test.cc */; };
-		ABC1D7E12023A40C00BA84F0 /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7DF2023A3EF00BA84F0 /* token_test.cc */; };
-		ABC1D7E42024AFDE00BA84F0 /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7E22023CDC500BA84F0 /* firebase_credentials_provider_test.mm */; };
 		ABE6637A201FA81900ED349A /* database_id_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB71064B201FA60300344F18 /* database_id_test.cc */; };
 		ABF6506C201131F8005F2C74 /* timestamp_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABF6506B201131F8005F2C74 /* timestamp_test.cc */; };
 		ABFD599019CF312CFF96B3EC /* perf_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = D5B2593BCB52957D62F1C9D3 /* perf_spec_test.json */; };
@@ -906,6 +901,7 @@
 		AD74843082C6465A676F16A7 /* async_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB467B208E9A8200554BA2 /* async_queue_test.cc */; };
 		AD89E95440264713557FB38E /* leveldb_migrations_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = EF83ACD5E1E9F25845A9ACED /* leveldb_migrations_test.cc */; };
 		AD8F0393B276B2934D251AAC /* view_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = C7429071B33BDF80A7FA2F8A /* view_test.cc */; };
+		ADF181E9FB1FC228D1255EE8 /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 39A44C2A20D781322D286408 /* firebase_credentials_provider_test.mm */; };
 		AE068EDBC74AF27679CCB6DA /* FIRBundlesTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 776530F066E788C355B78457 /* FIRBundlesTests.mm */; };
 		AE0CFFC34A423E1B80D07418 /* resource_path_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B686F2B02024FFD70028D6BE /* resource_path_test.cc */; };
 		AE5E5E4A7BF12C2337AFA13B /* bundle_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = F7FC06E0A47D393DE1759AE1 /* bundle_cache_test.cc */; };
@@ -938,7 +934,6 @@
 		B40EDE2B1B228ED59CF62788 /* byte_stream_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7628664347B9C96462D4BF17 /* byte_stream_apple_test.mm */; };
 		B43014A0517F31246419E08A /* resume_token_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA12A41F315EE100DD57A1 /* resume_token_spec_test.json */; };
 		B46E778F9E40864B5D2B2F1C /* leveldb_transaction_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 88CF09277CFA45EE1273E3BA /* leveldb_transaction_test.cc */; };
-		B49311BDE5EB6DF811E03C1B /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D9342023966E000A432D /* credentials_provider_test.cc */; };
 		B4C675BE9030D5C7D19C4D19 /* ordered_code_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB380D03201BC6E400D97691 /* ordered_code_test.cc */; };
 		B513F723728E923DFF34F60F /* leveldb_key_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54995F6E205B6E12004EFFA0 /* leveldb_key_test.cc */; };
 		B576823475FBCA5EFA583F9C /* leveldb_migrations_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = EF83ACD5E1E9F25845A9ACED /* leveldb_migrations_test.cc */; };
@@ -955,6 +950,7 @@
 		B69CF3F12227386500B281C8 /* hashing_test_apple.mm in Sources */ = {isa = PBXBuildFile; fileRef = B69CF3F02227386500B281C8 /* hashing_test_apple.mm */; };
 		B6BBE43121262CF400C6A53E /* grpc_stream_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6BBE42F21262CF400C6A53E /* grpc_stream_test.cc */; };
 		B6BF6EFEF887B072068BA658 /* executor_libdispatch_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4689208F9B9100554BA2 /* executor_libdispatch_test.mm */; };
+		B6BF87E3C9A72DCB8C5DB754 /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2F4FA4576525144C5069A7A5 /* credentials_provider_test.cc */; };
 		B6D1B68520E2AB1B00B35856 /* exponential_backoff_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6D1B68420E2AB1A00B35856 /* exponential_backoff_test.cc */; };
 		B6D9649121544D4F00EB9CFB /* grpc_connection_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6D9649021544D4F00EB9CFB /* grpc_connection_test.cc */; };
 		B6D964932154AB8F00EB9CFB /* grpc_streaming_reader_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6D964922154AB8F00EB9CFB /* grpc_streaming_reader_test.cc */; };
@@ -1011,6 +1007,7 @@
 		C15F5F1E7427738F20C2D789 /* offline_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA12A11F315EE100DD57A1 /* offline_spec_test.json */; };
 		C19214F5B43AA745A7FC2FC1 /* maybe_document.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 618BBE7E20B89AAC00B5BCE7 /* maybe_document.pb.cc */; };
 		C1B4621C0820EEB0AC9CCD22 /* bits_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB380D01201BC69F00D97691 /* bits_test.cc */; };
+		C1CD78F1FDE0918B4F87BC6F /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8FA60B08D59FEA0D6751E87F /* empty_credentials_provider_test.cc */; };
 		C1E35BCE2CFF9B56C28545A2 /* Pods_Firestore_Example_tvOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62E103B28B48A81D682A0DE9 /* Pods_Firestore_Example_tvOS.framework */; };
 		C1F196EC5A7C112D2F7C7724 /* view_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = C7429071B33BDF80A7FA2F8A /* view_test.cc */; };
 		C1F8991BD11FFD705D74244F /* random_access_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 014C60628830D95031574D15 /* random_access_queue_test.cc */; };
@@ -1054,6 +1051,7 @@
 		CD1E2F356FC71D7E74FCD26C /* leveldb_remote_document_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 0840319686A223CC4AD3FAB1 /* leveldb_remote_document_cache_test.cc */; };
 		CD226D868CEFA9D557EF33A1 /* query_listener_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F995E040E9E9C5E8514BB /* query_listener_test.cc */; };
 		CD78EEAA1CD36BE691CA3427 /* hashing_test_apple.mm in Sources */ = {isa = PBXBuildFile; fileRef = B69CF3F02227386500B281C8 /* hashing_test_apple.mm */; };
+		CDB5816537AB1B209C2B72A4 /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = CCC9BD953F121B9E29F9AA42 /* user_test.cc */; };
 		CE2962775B42BDEEE8108567 /* leveldb_lru_garbage_collector_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B629525F7A1AAC1AB765C74F /* leveldb_lru_garbage_collector_test.cc */; };
 		CE411D4B70353823DE63C0D5 /* bundle_loader_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = A853C81A6A5A51C9D0389EDA /* bundle_loader_test.cc */; };
 		CEA91CE103B42533C54DBAD6 /* memory_remote_document_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1CA9800A53669EFBFFB824E3 /* memory_remote_document_cache_test.cc */; };
@@ -1063,9 +1061,7 @@
 		CFF1EBC60A00BA5109893C6E /* memory_index_manager_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = DB5A1E760451189DA36028B3 /* memory_index_manager_test.cc */; };
 		D00E69F7FDF2BE674115AD3F /* field_path_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B686F2AD2023DDB20028D6BE /* field_path_test.cc */; };
 		D04CBBEDB8DC16D8C201AC49 /* leveldb_target_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = E76F0CDF28E5FA62D21DE648 /* leveldb_target_cache_test.cc */; };
-		D085EA576C763E4146C9988E /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7E22023CDC500BA84F0 /* firebase_credentials_provider_test.mm */; };
 		D143FBD057481C1A59B27E5E /* persistence_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA12A31F315EE100DD57A1 /* persistence_spec_test.json */; };
-		D148475D7F26BFEE6E05CCDA /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7E22023CDC500BA84F0 /* firebase_credentials_provider_test.mm */; };
 		D1690214781198276492442D /* event_manager_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6F57521E161450FAF89075ED /* event_manager_test.cc */; };
 		D18DBCE3FE34BF5F14CF8ABD /* mutation_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = C8522DE226C467C54E6788D8 /* mutation_test.cc */; };
 		D21060F8115A5F48FC3BF335 /* local_store_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 307FF03D0297024D59348EBD /* local_store_test.cc */; };
@@ -1074,10 +1070,11 @@
 		D39F0216BF1EA8CD54C76CF8 /* FIRQueryUnitTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = FF73B39D04D1760190E6B84A /* FIRQueryUnitTests.mm */; };
 		D3B470C98ACFAB7307FB3800 /* datastore_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3167BD972EFF8EC636530E59 /* datastore_test.cc */; };
 		D3CB03747E34D7C0365638F1 /* transform_operation_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 33607A3AE91548BD219EC9C6 /* transform_operation_test.cc */; };
-		D43F7601F3F3DE3125346D42 /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D93220239654000A432D /* user_test.cc */; };
 		D4572060A0FD4D448470D329 /* leveldb_transaction_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 88CF09277CFA45EE1273E3BA /* leveldb_transaction_test.cc */; };
 		D4D8BA32ACC5C2B1B29711C0 /* memory_lru_garbage_collector_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9765D47FA12FA283F4EFAD02 /* memory_lru_garbage_collector_test.cc */; };
+		D50232D696F19C2881AC01CE /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = A082AFDD981B07B5AD78FDE8 /* token_test.cc */; };
 		D550446303227FB1B381133C /* FSTAPIHelpers.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E04E202154AA00B64F25 /* FSTAPIHelpers.mm */; };
+		D560F39EA365CDE1E8C5DE33 /* empty_credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8FA60B08D59FEA0D6751E87F /* empty_credentials_provider_test.cc */; };
 		D57F4CB3C92CE3D4DF329B78 /* serializer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 61F72C5520BC48FD001A68CB /* serializer_test.cc */; };
 		D59FAEE934987D4C4B2A67B2 /* FIRFirestoreTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5467FAFF203E56F8009C9584 /* FIRFirestoreTests.mm */; };
 		D5B252EE3F4037405DB1ECE3 /* FIRNumericTransformTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = D5B25E7E7D6873CBA4571841 /* FIRNumericTransformTests.mm */; };
@@ -1103,7 +1100,6 @@
 		DA1D665B12AA1062DCDEA6BD /* async_queue_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB467B208E9A8200554BA2 /* async_queue_test.cc */; };
 		DA4303684707606318E1914D /* target_id_generator_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB380CF82019382300D97691 /* target_id_generator_test.cc */; };
 		DABB9FB61B1733F985CBF713 /* executor_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4688208F9B9100554BA2 /* executor_test.cc */; };
-		DAC43DD1FDFBAB1FE1AD6BE5 /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7E22023CDC500BA84F0 /* firebase_credentials_provider_test.mm */; };
 		DAFF0CF921E64AC30062958F /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DAFF0CF821E64AC30062958F /* AppDelegate.m */; };
 		DAFF0CFB21E64AC40062958F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DAFF0CFA21E64AC40062958F /* Assets.xcassets */; };
 		DAFF0CFE21E64AC40062958F /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = DAFF0CFC21E64AC40062958F /* MainMenu.xib */; };
@@ -1122,6 +1118,7 @@
 		DD213F68A6F79E1D4924BD95 /* Pods_Firestore_Example_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E42355285B9EF55ABD785792 /* Pods_Firestore_Example_macOS.framework */; };
 		DD5976A45071455FF3FE74B8 /* string_win_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 79507DF8378D3C42F5B36268 /* string_win_test.cc */; };
 		DD6C480629B3F87933FAF440 /* filesystem_testing.cc in Sources */ = {isa = PBXBuildFile; fileRef = BA02DA2FCD0001CFC6EB08DA /* filesystem_testing.cc */; };
+		DD935E243A64A4EB688E4C1C /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2F4FA4576525144C5069A7A5 /* credentials_provider_test.cc */; };
 		DDD219222EEE13E3F9F2C703 /* leveldb_transaction_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 88CF09277CFA45EE1273E3BA /* leveldb_transaction_test.cc */; };
 		DDDE74C752E65DE7D39A7166 /* view_testing.cc in Sources */ = {isa = PBXBuildFile; fileRef = A5466E7809AD2871FFDE6C76 /* view_testing.cc */; };
 		DE03B2D41F2149D600A30B9C /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F5AF195388D20070C39A /* XCTest.framework */; };
@@ -1131,13 +1128,13 @@
 		DE435F33CE563E238868D318 /* query_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B9C261C26C5D311E1E3C0CB9 /* query_test.cc */; };
 		DE45CD044B431DB0525595A5 /* bundle_reader_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6ECAF7DE28A19C69DF386D88 /* bundle_reader_test.cc */; };
 		DE50F1D39D34F867BC750957 /* grpc_stream_tester.cc in Sources */ = {isa = PBXBuildFile; fileRef = 87553338E42B8ECA05BA987E /* grpc_stream_tester.cc */; };
-		DE8C47B973526A20D88F785D /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABC1D7DF2023A3EF00BA84F0 /* token_test.cc */; };
 		DEF4BF5FAA83C37100408F89 /* bundle_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 79EAA9F7B1B9592B5F053923 /* bundle_spec_test.json */; };
 		DF27137C8EA7D095D68851B4 /* field_filter_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = E8551D6C6FB0B1BACE9E5BAD /* field_filter_test.cc */; };
 		DF4B3835C5AA4835C01CD255 /* local_store_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 307FF03D0297024D59348EBD /* local_store_test.cc */; };
 		DF7ABEB48A650117CBEBCD26 /* object_value_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 214877F52A705012D6720CA0 /* object_value_test.cc */; };
 		E08297B35E12106105F448EB /* ordered_code_benchmark.cc in Sources */ = {isa = PBXBuildFile; fileRef = 0473AFFF5567E667A125347B /* ordered_code_benchmark.cc */; };
 		E084921EFB7CF8CB1E950D6C /* iterator_adaptors_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54A0353420A3D8CB003E0143 /* iterator_adaptors_test.cc */; };
+		E0A7941C01EE98FAE40EE3AB /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 39A44C2A20D781322D286408 /* firebase_credentials_provider_test.mm */; };
 		E0E640226A1439C59BBBA9C1 /* hard_assert_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 444B7AB3F5A2929070CB1363 /* hard_assert_test.cc */; };
 		E1016ECF143B732E7821358E /* byte_stream_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7628664347B9C96462D4BF17 /* byte_stream_apple_test.mm */; };
 		E11DDA3DD75705F26245E295 /* FIRCollectionReferenceTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E045202154AA00B64F25 /* FIRCollectionReferenceTests.mm */; };
@@ -1171,6 +1168,7 @@
 		E7D415B8717701B952C344E5 /* executor_std_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6FB4687208F9B9100554BA2 /* executor_std_test.cc */; };
 		E82F8EBBC8CC37299A459E73 /* hashing_test_apple.mm in Sources */ = {isa = PBXBuildFile; fileRef = B69CF3F02227386500B281C8 /* hashing_test_apple.mm */; };
 		E8495A8D1E11C0844339CCA3 /* database_info_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D92E20235D22000A432D /* database_info_test.cc */; };
+		E8608D40B683938C6D785627 /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 2F4FA4576525144C5069A7A5 /* credentials_provider_test.cc */; };
 		E884336B43BBD1194C17E3C4 /* status_testing.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3CAA33F964042646FDDAF9F9 /* status_testing.cc */; };
 		E8BA7055EDB8B03CC99A528F /* recovery_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 9C1AFCC9E616EC33D6E169CF /* recovery_spec_test.json */; };
 		EA38690795FBAA182A9AA63E /* FIRDatabaseTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E06C202154D500B64F25 /* FIRDatabaseTests.mm */; };
@@ -1199,16 +1197,17 @@
 		EF3518F84255BAF3EBD317F6 /* exponential_backoff_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B6D1B68420E2AB1A00B35856 /* exponential_backoff_test.cc */; };
 		EF43FF491B9282E0330E4CA2 /* remote_event_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 584AE2C37A55B408541A6FF3 /* remote_event_test.cc */; };
 		EF79998EBE4C72B97AB1880E /* value_util_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 40F9D09063A07F710811A84F /* value_util_test.cc */; };
+		EF8C005DC4BEA6256D1DBC6F /* user_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = CCC9BD953F121B9E29F9AA42 /* user_test.cc */; };
 		F05B277F16BDE6A47FE0F943 /* local_serializer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = F8043813A5D16963EC02B182 /* local_serializer_test.cc */; };
 		F08DA55D31E44CB5B9170CCE /* limbo_spec_test.json in Resources */ = {isa = PBXBuildFile; fileRef = 54DA129E1F315EE100DD57A1 /* limbo_spec_test.json */; };
 		F091532DEE529255FB008E25 /* snapshot_version_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = ABA495B9202B7E79008A7851 /* snapshot_version_test.cc */; };
 		F0C8EB1F4FB56401CFA4F374 /* object_value_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 214877F52A705012D6720CA0 /* object_value_test.cc */; };
+		F0EA84FB66813F2BC164EF7C /* token_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = A082AFDD981B07B5AD78FDE8 /* token_test.cc */; };
 		F10A3E4E164A5458DFF7EDE6 /* leveldb_remote_document_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 0840319686A223CC4AD3FAB1 /* leveldb_remote_document_cache_test.cc */; };
 		F19B749671F2552E964422F7 /* FIRListenerRegistrationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E06B202154D500B64F25 /* FIRListenerRegistrationTests.mm */; };
 		F272A8C41D2353700A11D1FB /* field_mask_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA5320A36E1F00BCEB75 /* field_mask_test.cc */; };
 		F2AB7EACA1B9B1A7046D3995 /* FSTSyncEngineTestDriver.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E02E20213FFC00B64F25 /* FSTSyncEngineTestDriver.mm */; };
 		F3261CBFC169DB375A0D9492 /* FSTMockDatastore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E02D20213FFC00B64F25 /* FSTMockDatastore.mm */; };
-		F386012CAB7F0C0A5564016A /* credentials_provider_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB38D9342023966E000A432D /* credentials_provider_test.cc */; };
 		F3DEF2DB11FADAABDAA4C8BB /* bundle_builder.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4F5B96F3ABCD2CA901DB1CD4 /* bundle_builder.cc */; };
 		F3F09BC931A717CEFF4E14B9 /* FIRFieldValueTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E04A202154AA00B64F25 /* FIRFieldValueTests.mm */; };
 		F481368DB694B3B4D0C8E4A2 /* query_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = B9C261C26C5D311E1E3C0CB9 /* query_test.cc */; };
@@ -1231,6 +1230,7 @@
 		F8126CD7308A4B8AEC0F30A8 /* bundle.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = A366F6AE1A5A77548485C091 /* bundle.pb.cc */; };
 		F950A371FADCA2F0B73683E0 /* remote_document_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7EB299CF85034F09CFD6F3FD /* remote_document_cache_test.cc */; };
 		F9705E595FC3818F13F6375A /* to_string_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = B68B1E002213A764008977EF /* to_string_apple_test.mm */; };
+		F9C3FA6B239C5F843CCDE1EA /* firebase_credentials_provider_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 39A44C2A20D781322D286408 /* firebase_credentials_provider_test.mm */; };
 		F9DC01FCBE76CD4F0453A67C /* strerror_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 358C3B5FE573B1D60A4F7592 /* strerror_test.cc */; };
 		FA334ADC73CFDB703A7C17CD /* iterator_adaptors_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 54A0353420A3D8CB003E0143 /* iterator_adaptors_test.cc */; };
 		FA43BA0195DA90CE29B29D36 /* memory_bundle_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = AB4AB1388538CD3CB19EB028 /* memory_bundle_cache_test.cc */; };
@@ -1340,6 +1340,7 @@
 		2D7472BC70C024D736FF74D9 /* watch_change_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = watch_change_test.cc; sourceTree = "<group>"; };
 		2DAA26538D1A93A39F8AC373 /* nanopb_testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = nanopb_testing.h; path = nanopb/nanopb_testing.h; sourceTree = "<group>"; };
 		2E48431B0EDA400BEA91D4AB /* Pods-Firestore_Tests_tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Firestore_Tests_tvOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Firestore_Tests_tvOS/Pods-Firestore_Tests_tvOS.debug.xcconfig"; sourceTree = "<group>"; };
+		2F4FA4576525144C5069A7A5 /* credentials_provider_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = credentials_provider_test.cc; path = credentials/credentials_provider_test.cc; sourceTree = "<group>"; };
 		2F901F31BC62444A476B779F /* Pods-Firestore_IntegrationTests_macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Firestore_IntegrationTests_macOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Firestore_IntegrationTests_macOS/Pods-Firestore_IntegrationTests_macOS.debug.xcconfig"; sourceTree = "<group>"; };
 		3068AA9DFBBA86C1FE2A946E /* mutation_queue_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = mutation_queue_test.cc; sourceTree = "<group>"; };
 		307FF03D0297024D59348EBD /* local_store_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = local_store_test.cc; sourceTree = "<group>"; };
@@ -1351,6 +1352,7 @@
 		358C3B5FE573B1D60A4F7592 /* strerror_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = strerror_test.cc; sourceTree = "<group>"; };
 		36D235D9F1240D5195CDB670 /* Pods-Firestore_IntegrationTests_tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Firestore_IntegrationTests_tvOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-Firestore_IntegrationTests_tvOS/Pods-Firestore_IntegrationTests_tvOS.release.xcconfig"; sourceTree = "<group>"; };
 		397FB002E298B780F1E223E2 /* Pods-Firestore_Tests_macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Firestore_Tests_macOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-Firestore_Tests_macOS/Pods-Firestore_Tests_macOS.release.xcconfig"; sourceTree = "<group>"; };
+		39A44C2A20D781322D286408 /* firebase_credentials_provider_test.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = firebase_credentials_provider_test.mm; path = credentials/firebase_credentials_provider_test.mm; sourceTree = "<group>"; };
 		39B832380209CC5BAF93BC52 /* Pods_Firestore_IntegrationTests_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Firestore_IntegrationTests_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		3B843E4A1F3930A400548890 /* remote_store_spec_test.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = remote_store_spec_test.json; sourceTree = "<group>"; };
 		3C81DE3772628FE297055662 /* Pods-Firestore_Example_iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Firestore_Example_iOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Firestore_Example_iOS/Pods-Firestore_Example_iOS.debug.xcconfig"; sourceTree = "<group>"; };
@@ -1557,6 +1559,7 @@
 		8E002F4AD5D9B6197C940847 /* Firestore.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Firestore.podspec; path = ../Firestore.podspec; sourceTree = "<group>"; };
 		8E9CD82E60893DDD7757B798 /* leveldb_bundle_cache_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; path = leveldb_bundle_cache_test.cc; sourceTree = "<group>"; };
 		8F1A7B4158D9DD76EE4836BF /* load_bundle_task_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = load_bundle_task_test.cc; path = api/load_bundle_task_test.cc; sourceTree = "<group>"; };
+		8FA60B08D59FEA0D6751E87F /* empty_credentials_provider_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = empty_credentials_provider_test.cc; path = credentials/empty_credentials_provider_test.cc; sourceTree = "<group>"; };
 		9098A0C535096F2EE9C35DE0 /* create_noop_connectivity_monitor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = create_noop_connectivity_monitor.h; sourceTree = "<group>"; };
 		9113B6F513D0473AEABBAF1F /* persistence_testing.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = persistence_testing.cc; sourceTree = "<group>"; };
 		9765D47FA12FA283F4EFAD02 /* memory_lru_garbage_collector_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = memory_lru_garbage_collector_test.cc; sourceTree = "<group>"; };
@@ -1566,6 +1569,7 @@
 		9B0B005A79E765AF02793DCE /* schedule_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = schedule_test.cc; sourceTree = "<group>"; };
 		9C1AFCC9E616EC33D6E169CF /* recovery_spec_test.json */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.json; path = recovery_spec_test.json; sourceTree = "<group>"; };
 		9CFD366B783AE27B9E79EE7A /* string_format_apple_test.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; path = string_format_apple_test.mm; sourceTree = "<group>"; };
+		A082AFDD981B07B5AD78FDE8 /* token_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = token_test.cc; path = credentials/token_test.cc; sourceTree = "<group>"; };
 		A366F6AE1A5A77548485C091 /* bundle.pb.cc */ = {isa = PBXFileReference; includeInIndex = 1; path = bundle.pb.cc; sourceTree = "<group>"; };
 		A5466E7809AD2871FFDE6C76 /* view_testing.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = view_testing.cc; sourceTree = "<group>"; };
 		A5FA86650A18F3B7A8162287 /* Pods-Firestore_Benchmarks_iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Firestore_Benchmarks_iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-Firestore_Benchmarks_iOS/Pods-Firestore_Benchmarks_iOS.release.xcconfig"; sourceTree = "<group>"; };
@@ -1577,16 +1581,11 @@
 		AB380D01201BC69F00D97691 /* bits_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bits_test.cc; sourceTree = "<group>"; };
 		AB380D03201BC6E400D97691 /* ordered_code_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ordered_code_test.cc; sourceTree = "<group>"; };
 		AB38D92E20235D22000A432D /* database_info_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = database_info_test.cc; sourceTree = "<group>"; };
-		AB38D93220239654000A432D /* user_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = user_test.cc; sourceTree = "<group>"; };
-		AB38D9342023966E000A432D /* credentials_provider_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = credentials_provider_test.cc; sourceTree = "<group>"; };
-		AB38D93620239689000A432D /* empty_credentials_provider_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = empty_credentials_provider_test.cc; sourceTree = "<group>"; };
 		AB4AB1388538CD3CB19EB028 /* memory_bundle_cache_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; path = memory_bundle_cache_test.cc; sourceTree = "<group>"; };
 		AB6B908320322E4D00CC290A /* document_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = document_test.cc; sourceTree = "<group>"; };
 		AB71064B201FA60300344F18 /* database_id_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = database_id_test.cc; sourceTree = "<group>"; };
 		AB7BAB332012B519001E0872 /* geo_point_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = geo_point_test.cc; sourceTree = "<group>"; };
 		ABA495B9202B7E79008A7851 /* snapshot_version_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = snapshot_version_test.cc; sourceTree = "<group>"; };
-		ABC1D7DF2023A3EF00BA84F0 /* token_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = token_test.cc; sourceTree = "<group>"; };
-		ABC1D7E22023CDC500BA84F0 /* firebase_credentials_provider_test.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = firebase_credentials_provider_test.mm; sourceTree = "<group>"; };
 		ABF6506B201131F8005F2C74 /* timestamp_test.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = timestamp_test.cc; sourceTree = "<group>"; };
 		AE4A9E38D65688EE000EE2A1 /* index_manager_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = index_manager_test.cc; sourceTree = "<group>"; };
 		B3F5B3AAE791A5911B9EAA82 /* Pods-Firestore_Tests_iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Firestore_Tests_iOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-Firestore_Tests_iOS/Pods-Firestore_Tests_iOS.release.xcconfig"; sourceTree = "<group>"; };
@@ -1627,6 +1626,7 @@
 		C8522DE226C467C54E6788D8 /* mutation_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = mutation_test.cc; sourceTree = "<group>"; };
 		CB7B2D4691C380DE3EB59038 /* lru_garbage_collector_test.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = lru_garbage_collector_test.h; sourceTree = "<group>"; };
 		CC572A9168BBEF7B83E4BBC5 /* view_snapshot_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = view_snapshot_test.cc; sourceTree = "<group>"; };
+		CCC9BD953F121B9E29F9AA42 /* user_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = user_test.cc; path = credentials/user_test.cc; sourceTree = "<group>"; };
 		CD422AF3E4515FB8E9BE67A0 /* equals_tester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = equals_tester.h; sourceTree = "<group>"; };
 		CE37875365497FFA8687B745 /* message_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = message_test.cc; path = nanopb/message_test.cc; sourceTree = "<group>"; };
 		CF39535F2C41AB0006FA6C0E /* create_noop_connectivity_monitor.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = create_noop_connectivity_monitor.cc; sourceTree = "<group>"; };
@@ -1776,6 +1776,18 @@
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+		11BB7A1B7F6F482EFDBC5303 /* credentials */ = {
+			isa = PBXGroup;
+			children = (
+				2F4FA4576525144C5069A7A5 /* credentials_provider_test.cc */,
+				8FA60B08D59FEA0D6751E87F /* empty_credentials_provider_test.cc */,
+				39A44C2A20D781322D286408 /* firebase_credentials_provider_test.mm */,
+				A082AFDD981B07B5AD78FDE8 /* token_test.cc */,
+				CCC9BD953F121B9E29F9AA42 /* user_test.cc */,
+			);
+			name = credentials;
+			sourceTree = "<group>";
+		};
 		124C932A22C1635300CA8C2D /* Integration */ = {
 			isa = PBXGroup;
 			children = (
@@ -1925,6 +1937,7 @@
 				AB38D9312023962A000A432D /* auth */,
 				F7BA529161F1713BDF685C65 /* bundle */,
 				AB380CF7201937B800D97691 /* core */,
+				11BB7A1B7F6F482EFDBC5303 /* credentials */,
 				54EB764B202277970088B8F3 /* immutable */,
 				54995F70205B6E1A004EFFA0 /* local */,
 				AB356EF5200E9D1A0089B766 /* model */,
@@ -2361,11 +2374,6 @@
 		AB38D9312023962A000A432D /* auth */ = {
 			isa = PBXGroup;
 			children = (
-				AB38D9342023966E000A432D /* credentials_provider_test.cc */,
-				AB38D93620239689000A432D /* empty_credentials_provider_test.cc */,
-				ABC1D7E22023CDC500BA84F0 /* firebase_credentials_provider_test.mm */,
-				ABC1D7DF2023A3EF00BA84F0 /* token_test.cc */,
-				AB38D93220239654000A432D /* user_test.cc */,
 			);
 			path = auth;
 			sourceTree = "<group>";
@@ -3461,7 +3469,7 @@
 				08D853C9D3A4DC919C55671A /* comparison_test.cc in Sources */,
 				3095316962A00DD6A4A2A441 /* counting_query_engine.cc in Sources */,
 				4D903ED7B7E4D38F988CD3F8 /* create_noop_connectivity_monitor.cc in Sources */,
-				B49311BDE5EB6DF811E03C1B /* credentials_provider_test.cc in Sources */,
+				9BEC62D59EB2C68342F493CD /* credentials_provider_test.cc in Sources */,
 				9774A6C2AA02A12D80B34C3C /* database_id_test.cc in Sources */,
 				11F8EE69182C9699E90A9E3D /* database_info_test.cc in Sources */,
 				E2B7AEDCAAC5AD74C12E85C1 /* datastore_test.cc in Sources */,
@@ -3471,7 +3479,7 @@
 				5B62003FEA9A3818FDF4E2DD /* document_key_test.cc in Sources */,
 				547E9A4422F9EA7300A275E0 /* document_set_test.cc in Sources */,
 				355A9171EF3F7AD44A9C60CB /* document_test.cc in Sources */,
-				3BCEBA50E9678123245C0272 /* empty_credentials_provider_test.cc in Sources */,
+				D560F39EA365CDE1E8C5DE33 /* empty_credentials_provider_test.cc in Sources */,
 				BE767D2312D2BE84484309A0 /* event_manager_test.cc in Sources */,
 				AC6C1E57B18730428CB15E03 /* executor_libdispatch_test.mm in Sources */,
 				E7D415B8717701B952C344E5 /* executor_std_test.cc in Sources */,
@@ -3485,7 +3493,7 @@
 				C961FA581F87000DF674BBC8 /* field_transform_test.cc in Sources */,
 				60C72F86D2231B1B6592A5E6 /* filesystem_test.cc in Sources */,
 				907DF0E63248DBF0912CC56D /* filesystem_testing.cc in Sources */,
-				A61AE3D94C975A87EFA82ADA /* firebase_credentials_provider_test.mm in Sources */,
+				ADF181E9FB1FC228D1255EE8 /* firebase_credentials_provider_test.mm in Sources */,
 				C5655568EC2A9F6B5E6F9141 /* firestore.pb.cc in Sources */,
 				B8062EBDB8E5B680E46A6DD1 /* geo_point_test.cc in Sources */,
 				056542AD1D0F78E29E22EFA9 /* grpc_connection_test.cc in Sources */,
@@ -3575,10 +3583,10 @@
 				ACC9369843F5ED3BD2284078 /* timestamp_test.cc in Sources */,
 				2AAEABFD550255271E3BAC91 /* to_string_apple_test.mm in Sources */,
 				1E2AE064CF32A604DC7BFD4D /* to_string_test.cc in Sources */,
-				4F67086B5CC1787F612AE503 /* token_test.cc in Sources */,
+				AAFA9D7A0A067F2D3D8D5487 /* token_test.cc in Sources */,
 				5D51D8B166D24EFEF73D85A2 /* transform_operation_test.cc in Sources */,
 				5F19F66D8B01BA2B97579017 /* tree_sorted_map_test.cc in Sources */,
-				16F52ECC6FA8A0587CD779EB /* user_test.cc in Sources */,
+				124AAEE987451820F24EEA8E /* user_test.cc in Sources */,
 				11EBD28DBD24063332433947 /* value_util_test.cc in Sources */,
 				A9A9994FB8042838671E8506 /* view_snapshot_test.cc in Sources */,
 				AD8F0393B276B2934D251AAC /* view_test.cc in Sources */,
@@ -3651,7 +3659,7 @@
 				1115DB1F1DCE93B63E03BA8C /* comparison_test.cc in Sources */,
 				2A0925323776AD50C1105BC0 /* counting_query_engine.cc in Sources */,
 				AEE9105543013C9C89FAB2B5 /* create_noop_connectivity_monitor.cc in Sources */,
-				5686B35D611C1CFF6BFE7215 /* credentials_provider_test.cc in Sources */,
+				B6BF87E3C9A72DCB8C5DB754 /* credentials_provider_test.cc in Sources */,
 				58E377DCCC64FE7D2C6B59A1 /* database_id_test.cc in Sources */,
 				8F3AE423677A4C50F7E0E5C0 /* database_info_test.cc in Sources */,
 				9A7CF567C6FF0623EB4CFF64 /* datastore_test.cc in Sources */,
@@ -3661,7 +3669,7 @@
 				D6E0E54CD1640E726900828A /* document_key_test.cc in Sources */,
 				547E9A4622F9EA7300A275E0 /* document_set_test.cc in Sources */,
 				07A64E6C4EB700E3AF3FD496 /* document_test.cc in Sources */,
-				2B1E95FAFD350C191B525F3B /* empty_credentials_provider_test.cc in Sources */,
+				89EB0C7B1241E6F1800A3C7E /* empty_credentials_provider_test.cc in Sources */,
 				0F99BB63CE5B3CFE35F9027E /* event_manager_test.cc in Sources */,
 				B220E091D8F4E6DE1EA44F57 /* executor_libdispatch_test.mm in Sources */,
 				BAB43C839445782040657239 /* executor_std_test.cc in Sources */,
@@ -3675,7 +3683,7 @@
 				A192648233110B7B8BD65528 /* field_transform_test.cc in Sources */,
 				AAF2F02E77A80C9CDE2C0C7A /* filesystem_test.cc in Sources */,
 				C4C7A8D11DC394EF81B7B1FA /* filesystem_testing.cc in Sources */,
-				DAC43DD1FDFBAB1FE1AD6BE5 /* firebase_credentials_provider_test.mm in Sources */,
+				5775357B8B13DC4D30D2F349 /* firebase_credentials_provider_test.mm in Sources */,
 				8683BBC3AC7B01937606A83B /* firestore.pb.cc in Sources */,
 				F7718C43D3A8FCCDB4BB0071 /* geo_point_test.cc in Sources */,
 				BA9A65BD6D993B2801A3C768 /* grpc_connection_test.cc in Sources */,
@@ -3765,10 +3773,10 @@
 				26CB3D7C871BC56456C6021E /* timestamp_test.cc in Sources */,
 				5BE49546D57C43DDFCDB6FBD /* to_string_apple_test.mm in Sources */,
 				E500AB82DF2E7F3AFDB1AB3F /* to_string_test.cc in Sources */,
-				2F6E23D7888FC82475C63010 /* token_test.cc in Sources */,
+				5C9B5696644675636A052018 /* token_test.cc in Sources */,
 				5EE21E86159A1911E9503BC1 /* transform_operation_test.cc in Sources */,
 				627253FDEC6BB5549FE77F4E /* tree_sorted_map_test.cc in Sources */,
-				596C782EFB68131380F8EEF8 /* user_test.cc in Sources */,
+				3056418E81BC7584FBE8AD6C /* user_test.cc in Sources */,
 				0794FACCB1C0C4881A76C28D /* value_util_test.cc in Sources */,
 				1B4794A51F4266556CD0976B /* view_snapshot_test.cc in Sources */,
 				C1F196EC5A7C112D2F7C7724 /* view_test.cc in Sources */,
@@ -3854,7 +3862,7 @@
 				555161D6DB2DDC8B57F72A70 /* comparison_test.cc in Sources */,
 				7394B5C29C6E524C2AF964E6 /* counting_query_engine.cc in Sources */,
 				C02A969BF4BB63ABCB531B4B /* create_noop_connectivity_monitor.cc in Sources */,
-				F386012CAB7F0C0A5564016A /* credentials_provider_test.cc in Sources */,
+				DD935E243A64A4EB688E4C1C /* credentials_provider_test.cc in Sources */,
 				1465E362F7BA7A3D063E61C7 /* database_id_test.cc in Sources */,
 				A8AF92A35DFA30EEF9C27FB7 /* database_info_test.cc in Sources */,
 				B99452AB7E16B72D1C01FBBC /* datastore_test.cc in Sources */,
@@ -3864,7 +3872,7 @@
 				BB1A6F7D8F06E74FB6E525C5 /* document_key_test.cc in Sources */,
 				547E9A4722F9EA7300A275E0 /* document_set_test.cc in Sources */,
 				13E264F840239C8C99865921 /* document_test.cc in Sources */,
-				3A8C29BF47A62B7BADCBA6F5 /* empty_credentials_provider_test.cc in Sources */,
+				475FE2D34C6555A54D77A054 /* empty_credentials_provider_test.cc in Sources */,
 				54A1093731D40F1D143D390C /* event_manager_test.cc in Sources */,
 				5F6CE37B34C542704C5605A4 /* executor_libdispatch_test.mm in Sources */,
 				AECCD9663BB3DC52199F954A /* executor_std_test.cc in Sources */,
@@ -3878,7 +3886,7 @@
 				B667366CB06893DFF472902E /* field_transform_test.cc in Sources */,
 				D6486C7FFA8BE6F9C7D2F4C4 /* filesystem_test.cc in Sources */,
 				C3E4EE9615367213A71FEECF /* filesystem_testing.cc in Sources */,
-				3DF1AB74036BD8AEF4430FA6 /* firebase_credentials_provider_test.mm in Sources */,
+				E0A7941C01EE98FAE40EE3AB /* firebase_credentials_provider_test.mm in Sources */,
 				8C602DAD4E8296AB5EFB962A /* firestore.pb.cc in Sources */,
 				6ABB82D43C0728EB095947AF /* geo_point_test.cc in Sources */,
 				D9DA467E7903412DC6AECDE4 /* grpc_connection_test.cc in Sources */,
@@ -3968,10 +3976,10 @@
 				0CEE93636BA4852D3C5EC428 /* timestamp_test.cc in Sources */,
 				95DCD082374F871A86EF905F /* to_string_apple_test.mm in Sources */,
 				9E656F4FE92E8BFB7F625283 /* to_string_test.cc in Sources */,
-				DE8C47B973526A20D88F785D /* token_test.cc in Sources */,
+				96D95E144C383459D4E26E47 /* token_test.cc in Sources */,
 				15BF63DFF3A7E9A5376C4233 /* transform_operation_test.cc in Sources */,
 				54B91B921DA757C64CC67C90 /* tree_sorted_map_test.cc in Sources */,
-				8D5A9E6E43B6F47431841FE2 /* user_test.cc in Sources */,
+				CDB5816537AB1B209C2B72A4 /* user_test.cc in Sources */,
 				96E54377873FCECB687A459B /* value_util_test.cc in Sources */,
 				3A307F319553A977258BB3D6 /* view_snapshot_test.cc in Sources */,
 				89C71AEAA5316836BB1D5A01 /* view_test.cc in Sources */,
@@ -4057,7 +4065,7 @@
 				9C86EEDEA131BFD50255EEF1 /* comparison_test.cc in Sources */,
 				DCD83C545D764FB15FD88B02 /* counting_query_engine.cc in Sources */,
 				ECC433628575AE994C621C54 /* create_noop_connectivity_monitor.cc in Sources */,
-				4008AF7585844F12207FC2F5 /* credentials_provider_test.cc in Sources */,
+				6E7603BC1D8011A5D6F62072 /* credentials_provider_test.cc in Sources */,
 				1D618761796DE311A1707AA2 /* database_id_test.cc in Sources */,
 				E8495A8D1E11C0844339CCA3 /* database_info_test.cc in Sources */,
 				7B74447D211586D9D1CC82BB /* datastore_test.cc in Sources */,
@@ -4067,7 +4075,7 @@
 				B3F3DCA51819F1A213E00D9C /* document_key_test.cc in Sources */,
 				547E9A4522F9EA7300A275E0 /* document_set_test.cc in Sources */,
 				8ECDF2AFCF1BCA1A2CDAAD8A /* document_test.cc in Sources */,
-				18688026A6F1E9404F63B243 /* empty_credentials_provider_test.cc in Sources */,
+				C1CD78F1FDE0918B4F87BC6F /* empty_credentials_provider_test.cc in Sources */,
 				485CBA9F99771437BA1CB401 /* event_manager_test.cc in Sources */,
 				49C593017B5438B216FAF593 /* executor_libdispatch_test.mm in Sources */,
 				17DFF30CF61D87883986E8B6 /* executor_std_test.cc in Sources */,
@@ -4081,7 +4089,7 @@
 				1BF1F9A0CBB6B01654D3C2BE /* field_transform_test.cc in Sources */,
 				199B778D5820495797E0BE02 /* filesystem_test.cc in Sources */,
 				AD12205540893CEB48647937 /* filesystem_testing.cc in Sources */,
-				D148475D7F26BFEE6E05CCDA /* firebase_credentials_provider_test.mm in Sources */,
+				0466093697EBFF5F71E9342C /* firebase_credentials_provider_test.mm in Sources */,
 				D756A1A63E626572EE8DF592 /* firestore.pb.cc in Sources */,
 				8B31F63673F3B5238DE95AFB /* geo_point_test.cc in Sources */,
 				5958E3E3A0446A88B815CB70 /* grpc_connection_test.cc in Sources */,
@@ -4171,10 +4179,10 @@
 				1E42CD0F60EB22A5D0C86D1F /* timestamp_test.cc in Sources */,
 				F9705E595FC3818F13F6375A /* to_string_apple_test.mm in Sources */,
 				3BAFCABA851AE1865D904323 /* to_string_test.cc in Sources */,
-				4C0669A22F62E085674A7643 /* token_test.cc in Sources */,
+				1B9E54F4C4280A713B825981 /* token_test.cc in Sources */,
 				44EAF3E6EAC0CC4EB2147D16 /* transform_operation_test.cc in Sources */,
 				3D22F56C0DE7C7256C75DC06 /* tree_sorted_map_test.cc in Sources */,
-				918E3D35942CE493690C45CE /* user_test.cc in Sources */,
+				A80D38096052F928B17E1504 /* user_test.cc in Sources */,
 				3DBB48F077C97200F32B51A0 /* value_util_test.cc in Sources */,
 				81A6B241E63540900F205817 /* view_snapshot_test.cc in Sources */,
 				A5B8C273593D1BB6E8AE4CBA /* view_test.cc in Sources */,
@@ -4257,7 +4265,7 @@
 				548DB929200D59F600E00ABC /* comparison_test.cc in Sources */,
 				4E2E0314F9FDD7BCED60254A /* counting_query_engine.cc in Sources */,
 				1989623826923A9D5A7EFA40 /* create_noop_connectivity_monitor.cc in Sources */,
-				ABC1D7DC2023A04B00BA84F0 /* credentials_provider_test.cc in Sources */,
+				E8608D40B683938C6D785627 /* credentials_provider_test.cc in Sources */,
 				ABE6637A201FA81900ED349A /* database_id_test.cc in Sources */,
 				AB38D93020236E21000A432D /* database_info_test.cc in Sources */,
 				D3B470C98ACFAB7307FB3800 /* datastore_test.cc in Sources */,
@@ -4267,7 +4275,7 @@
 				B6152AD7202A53CB000E5744 /* document_key_test.cc in Sources */,
 				547E9A4222F9EA7300A275E0 /* document_set_test.cc in Sources */,
 				AB6B908420322E4D00CC290A /* document_test.cc in Sources */,
-				ABC1D7DD2023A04F00BA84F0 /* empty_credentials_provider_test.cc in Sources */,
+				1C7F8733582BAF99EDAA851E /* empty_credentials_provider_test.cc in Sources */,
 				8405FF2BFBB233031A887398 /* event_manager_test.cc in Sources */,
 				B6FB468E208F9BAB00554BA2 /* executor_libdispatch_test.mm in Sources */,
 				B6FB468F208F9BAE00554BA2 /* executor_std_test.cc in Sources */,
@@ -4281,7 +4289,7 @@
 				2EC1C4D202A01A632339A161 /* field_transform_test.cc in Sources */,
 				D94A1862B8FB778225DB54A1 /* filesystem_test.cc in Sources */,
 				DD6C480629B3F87933FAF440 /* filesystem_testing.cc in Sources */,
-				ABC1D7E42024AFDE00BA84F0 /* firebase_credentials_provider_test.mm in Sources */,
+				F9C3FA6B239C5F843CCDE1EA /* firebase_credentials_provider_test.mm in Sources */,
 				544129DB21C2DDC800EFB9CC /* firestore.pb.cc in Sources */,
 				AB7BAB342012B519001E0872 /* geo_point_test.cc in Sources */,
 				B6D9649121544D4F00EB9CFB /* grpc_connection_test.cc in Sources */,
@@ -4371,10 +4379,10 @@
 				ABF6506C201131F8005F2C74 /* timestamp_test.cc in Sources */,
 				B68B1E012213A765008977EF /* to_string_apple_test.mm in Sources */,
 				B696858E2214B53900271095 /* to_string_test.cc in Sources */,
-				ABC1D7E12023A40C00BA84F0 /* token_test.cc in Sources */,
+				D50232D696F19C2881AC01CE /* token_test.cc in Sources */,
 				D3CB03747E34D7C0365638F1 /* transform_operation_test.cc in Sources */,
 				549CCA5120A36DBC00BCEB75 /* tree_sorted_map_test.cc in Sources */,
-				ABC1D7DE2023A05300BA84F0 /* user_test.cc in Sources */,
+				1B816F48012524939CA57CB3 /* user_test.cc in Sources */,
 				B844B264311E18051B1671ED /* value_util_test.cc in Sources */,
 				340987A77D72C80A3E0FDADF /* view_snapshot_test.cc in Sources */,
 				17473086EBACB98CDC3CC65C /* view_test.cc in Sources */,
@@ -4479,7 +4487,7 @@
 				EC7A44792A5513FBB6F501EE /* comparison_test.cc in Sources */,
 				BDF3A6C121F2773BB3A347A7 /* counting_query_engine.cc in Sources */,
 				1F4930A8366F74288121F627 /* create_noop_connectivity_monitor.cc in Sources */,
-				43EDB01D1641D96C40DA1889 /* credentials_provider_test.cc in Sources */,
+				7DE2560C3B4EF0512F0D538C /* credentials_provider_test.cc in Sources */,
 				61976CE9C088131EC564A503 /* database_id_test.cc in Sources */,
 				65FC1A102890C02EF1A65213 /* database_info_test.cc in Sources */,
 				4D6761FB02F4D915E466A985 /* datastore_test.cc in Sources */,
@@ -4489,7 +4497,7 @@
 				93E5620E3884A431A14500B0 /* document_key_test.cc in Sources */,
 				547E9A4322F9EA7300A275E0 /* document_set_test.cc in Sources */,
 				A5175CA2E677E13CC5F23D72 /* document_test.cc in Sources */,
-				0A1B97E51BDE36DE4F6E3787 /* empty_credentials_provider_test.cc in Sources */,
+				9860F493EBF43AF5AC0A88BD /* empty_credentials_provider_test.cc in Sources */,
 				D1690214781198276492442D /* event_manager_test.cc in Sources */,
 				B6BF6EFEF887B072068BA658 /* executor_libdispatch_test.mm in Sources */,
 				125B1048ECB755C2106802EB /* executor_std_test.cc in Sources */,
@@ -4503,7 +4511,7 @@
 				9016EF298E41456060578C90 /* field_transform_test.cc in Sources */,
 				280A282BE9AF4DCF4E855EAB /* filesystem_test.cc in Sources */,
 				867B370BF2DF84B6AB94B874 /* filesystem_testing.cc in Sources */,
-				D085EA576C763E4146C9988E /* firebase_credentials_provider_test.mm in Sources */,
+				573EC25F9957A7C0F5416D06 /* firebase_credentials_provider_test.mm in Sources */,
 				920B6ABF76FDB3547F1CCD84 /* firestore.pb.cc in Sources */,
 				5FE84472E5369DA866193C45 /* geo_point_test.cc in Sources */,
 				0DDEE9FE08845BB7CA4607DE /* grpc_connection_test.cc in Sources */,
@@ -4593,10 +4601,10 @@
 				D91D86B29B86A60C05879A48 /* timestamp_test.cc in Sources */,
 				60260A06871DCB1A5F3448D3 /* to_string_apple_test.mm in Sources */,
 				ECED3B60C5718B085AAB14FB /* to_string_test.cc in Sources */,
-				1C4D8915AE94323AD1024D74 /* token_test.cc in Sources */,
+				F0EA84FB66813F2BC164EF7C /* token_test.cc in Sources */,
 				60186935E36CF79E48A0B293 /* transform_operation_test.cc in Sources */,
 				5DA343D28AE05B0B2FE9FFB3 /* tree_sorted_map_test.cc in Sources */,
-				D43F7601F3F3DE3125346D42 /* user_test.cc in Sources */,
+				EF8C005DC4BEA6256D1DBC6F /* user_test.cc in Sources */,
 				EF79998EBE4C72B97AB1880E /* value_util_test.cc in Sources */,
 				59E89A97A476790E89AFC7E7 /* view_snapshot_test.cc in Sources */,
 				B63D84B2980C7DEE7E6E4708 /* view_test.cc in Sources */,

+ 3 - 3
Firestore/Example/Tests/Integration/FSTDatastoreTests.mm

@@ -27,8 +27,8 @@
 
 #import "Firestore/Example/Tests/Util/FSTIntegrationTestCase.h"
 
-#include "Firestore/core/src/auth/empty_credentials_provider.h"
 #include "Firestore/core/src/core/database_info.h"
+#include "Firestore/core/src/credentials/empty_credentials_provider.h"
 #include "Firestore/core/src/local/local_documents_view.h"
 #include "Firestore/core/src/local/local_store.h"
 #include "Firestore/core/src/local/memory_persistence.h"
@@ -58,9 +58,9 @@ namespace util = firebase::firestore::util;
 namespace testutil = firebase::firestore::testutil;
 
 using firebase::Timestamp;
-using firebase::firestore::auth::EmptyCredentialsProvider;
-using firebase::firestore::auth::User;
 using firebase::firestore::core::DatabaseInfo;
+using firebase::firestore::credentials::EmptyCredentialsProvider;
+using firebase::firestore::credentials::User;
 using firebase::firestore::google_firestore_v1_Value;
 using firebase::firestore::local::LocalStore;
 using firebase::firestore::local::MemoryPersistence;

+ 2 - 2
Firestore/Example/Tests/SpecTests/FSTMockDatastore.h

@@ -39,7 +39,7 @@ class MockDatastore : public Datastore {
  public:
   MockDatastore(const core::DatabaseInfo& database_info,
                 const std::shared_ptr<util::AsyncQueue>& worker_queue,
-                std::shared_ptr<auth::CredentialsProvider> credentials,
+                std::shared_ptr<credentials::CredentialsProvider> credentials,
                 ConnectivityMonitor* connectivity_monitor,
                 FirebaseMetadataProvider* firebase_metadata_provider);
 
@@ -96,7 +96,7 @@ class MockDatastore : public Datastore {
   // reduces the number of test-only methods in `Datastore`.
   const core::DatabaseInfo* database_info_ = nullptr;
   std::shared_ptr<util::AsyncQueue> worker_queue_;
-  std::shared_ptr<auth::CredentialsProvider> credentials_;
+  std::shared_ptr<credentials::CredentialsProvider> credentials_;
 
   std::shared_ptr<MockWatchStream> watch_stream_;
   std::shared_ptr<MockWriteStream> write_stream_;

+ 5 - 5
Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm

@@ -21,9 +21,9 @@
 #include <queue>
 #include <utility>
 
-#include "Firestore/core/src/auth/credentials_provider.h"
-#include "Firestore/core/src/auth/empty_credentials_provider.h"
 #include "Firestore/core/src/core/database_info.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
+#include "Firestore/core/src/credentials/empty_credentials_provider.h"
 #include "Firestore/core/src/local/target_data.h"
 #include "Firestore/core/src/model/database_id.h"
 #include "Firestore/core/src/model/mutation.h"
@@ -42,9 +42,9 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-using firebase::firestore::auth::CredentialsProvider;
-using firebase::firestore::auth::EmptyCredentialsProvider;
 using firebase::firestore::core::DatabaseInfo;
+using firebase::firestore::credentials::CredentialsProvider;
+using firebase::firestore::credentials::EmptyCredentialsProvider;
 using firebase::firestore::local::TargetData;
 using firebase::firestore::model::DatabaseId;
 using firebase::firestore::model::Mutation;
@@ -244,7 +244,7 @@ class MockWriteStream : public WriteStream {
 
 MockDatastore::MockDatastore(const core::DatabaseInfo& database_info,
                              const std::shared_ptr<util::AsyncQueue>& worker_queue,
-                             std::shared_ptr<auth::CredentialsProvider> credentials,
+                             std::shared_ptr<credentials::CredentialsProvider> credentials,
                              ConnectivityMonitor* connectivity_monitor,
                              FirebaseMetadataProvider* firebase_metadata_provider)
     : Datastore{database_info, worker_queue, credentials, connectivity_monitor,

+ 2 - 2
Firestore/Example/Tests/SpecTests/FSTSpecTests.mm

@@ -38,10 +38,10 @@
 
 #include "Firestore/core/include/firebase/firestore/firestore_errors.h"
 #include "Firestore/core/src/api/load_bundle_task.h"
-#include "Firestore/core/src/auth/user.h"
 #include "Firestore/core/src/bundle/bundle_reader.h"
 #include "Firestore/core/src/bundle/bundle_serializer.h"
 #include "Firestore/core/src/core/field_filter.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/persistence.h"
 #include "Firestore/core/src/local/target_data.h"
 #include "Firestore/core/src/model/delete_mutation.h"
@@ -78,11 +78,11 @@ namespace testutil = firebase::firestore::testutil;
 namespace util = firebase::firestore::util;
 using firebase::firestore::Error;
 using firebase::firestore::api::LoadBundleTask;
-using firebase::firestore::auth::User;
 using firebase::firestore::bundle::BundleReader;
 using firebase::firestore::bundle::BundleSerializer;
 using firebase::firestore::core::DocumentViewChange;
 using firebase::firestore::core::Query;
+using firebase::firestore::credentials::User;
 using firebase::firestore::google_firestore_v1_ArrayValue;
 using firebase::firestore::google_firestore_v1_Value;
 using firebase::firestore::local::Persistence;

+ 8 - 7
Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.h

@@ -24,11 +24,11 @@
 #include <vector>
 
 #include "Firestore/core/src/api/load_bundle_task.h"
-#include "Firestore/core/src/auth/user.h"
 #include "Firestore/core/src/bundle/bundle_reader.h"
 #include "Firestore/core/src/core/database_info.h"
 #include "Firestore/core/src/core/query.h"
 #include "Firestore/core/src/core/view_snapshot.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/model/model_fwd.h"
 #include "Firestore/core/src/nanopb/byte_string.h"
 #include "Firestore/core/src/nanopb/nanopb_util.h"
@@ -48,9 +48,9 @@ class TargetData;
 }  // namespace firebase
 
 namespace api = firebase::firestore::api;
-namespace auth = firebase::firestore::auth;
 namespace bundle = firebase::firestore::bundle;
 namespace core = firebase::firestore::core;
+namespace credentials = firebase::firestore::credentials;
 namespace local = firebase::firestore::local;
 namespace model = firebase::firestore::model;
 namespace remote = firebase::firestore::remote;
@@ -91,8 +91,9 @@ NS_ASSUME_NONNULL_BEGIN
 @end
 
 /** Mapping of user => array of FSTMutations for that user. */
-typedef std::unordered_map<auth::User, NSMutableArray<FSTOutstandingWrite *> *, auth::HashUser>
-    FSTOutstandingWriteQueues;
+typedef std::
+    unordered_map<credentials::User, NSMutableArray<FSTOutstandingWrite *> *, credentials::HashUser>
+        FSTOutstandingWriteQueues;
 
 /**
  * A test driver for FSTSyncEngine that allows simulated event delivery and capture. As much as
@@ -123,7 +124,7 @@ typedef std::unordered_map<auth::User, NSMutableArray<FSTOutstandingWrite *> *,
  * mutation queues).
  */
 - (instancetype)initWithPersistence:(std::unique_ptr<local::Persistence>)persistence
-                        initialUser:(const auth::User &)initialUser
+                        initialUser:(const credentials::User &)initialUser
                   outstandingWrites:(const FSTOutstandingWriteQueues &)outstandingWrites
       maxConcurrentLimboResolutions:(size_t)maxConcurrentLimboResolutions NS_DESIGNATED_INITIALIZER;
 
@@ -271,7 +272,7 @@ typedef std::unordered_map<auth::User, NSMutableArray<FSTOutstandingWrite *> *,
  * each user, so future receiveWriteAck/Error operations will validate the write sent to the mock
  * datastore matches the next outstanding write for that user.
  */
-- (void)changeUser:(const auth::User &)user;
+- (void)changeUser:(const credentials::User &)user;
 
 /**
  * Drains the client's dispatch queue.
@@ -333,7 +334,7 @@ typedef std::unordered_map<auth::User, NSMutableArray<FSTOutstandingWrite *> *,
 @property(nonatomic, assign, readonly) const FSTOutstandingWriteQueues &outstandingWrites;
 
 /** The current user for the FSTSyncEngine; determines which mutation queue is active. */
-@property(nonatomic, assign, readonly) const auth::User &currentUser;
+@property(nonatomic, assign, readonly) const credentials::User &currentUser;
 
 /**
  * The number of waitForPendingWrites events that have been received.

+ 5 - 5
Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.mm

@@ -30,14 +30,14 @@
 
 #include "Firestore/core/include/firebase/firestore/firestore_errors.h"
 #include "Firestore/core/src/api/load_bundle_task.h"
-#include "Firestore/core/src/auth/empty_credentials_provider.h"
-#include "Firestore/core/src/auth/user.h"
 #include "Firestore/core/src/bundle/bundle_reader.h"
 #include "Firestore/core/src/core/database_info.h"
 #include "Firestore/core/src/core/event_manager.h"
 #include "Firestore/core/src/core/listen_options.h"
 #include "Firestore/core/src/core/query_listener.h"
 #include "Firestore/core/src/core/sync_engine.h"
+#include "Firestore/core/src/credentials/empty_credentials_provider.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/local_store.h"
 #include "Firestore/core/src/local/persistence.h"
 #include "Firestore/core/src/local/query_engine.h"
@@ -64,9 +64,6 @@ namespace testutil = firebase::firestore::testutil;
 
 using firebase::firestore::api::LoadBundleTask;
 using firebase::firestore::Error;
-using firebase::firestore::auth::EmptyCredentialsProvider;
-using firebase::firestore::auth::HashUser;
-using firebase::firestore::auth::User;
 using firebase::firestore::bundle::BundleReader;
 using firebase::firestore::core::DatabaseInfo;
 using firebase::firestore::core::EventListener;
@@ -76,6 +73,9 @@ using firebase::firestore::core::Query;
 using firebase::firestore::core::QueryListener;
 using firebase::firestore::core::SyncEngine;
 using firebase::firestore::core::ViewSnapshot;
+using firebase::firestore::credentials::EmptyCredentialsProvider;
+using firebase::firestore::credentials::HashUser;
+using firebase::firestore::credentials::User;
 using firebase::firestore::local::QueryEngine;
 using firebase::firestore::local::LocalStore;
 using firebase::firestore::local::Persistence;

+ 7 - 7
Firestore/Example/Tests/Util/FSTIntegrationTestCase.mm

@@ -35,9 +35,9 @@
 #import "Firestore/Example/Tests/Util/FSTEventAccumulator.h"
 #import "Firestore/Source/API/FIRFirestore+Internal.h"
 
-#include "Firestore/core/src/auth/credentials_provider.h"
-#include "Firestore/core/src/auth/empty_credentials_provider.h"
-#include "Firestore/core/src/auth/user.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
+#include "Firestore/core/src/credentials/empty_credentials_provider.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/leveldb_opener.h"
 #include "Firestore/core/src/model/database_id.h"
 #include "Firestore/core/src/remote/firebase_metadata_provider_apple.h"
@@ -54,10 +54,10 @@
 
 namespace util = firebase::firestore::util;
 
-using firebase::firestore::auth::CredentialChangeListener;
-using firebase::firestore::auth::EmptyCredentialsProvider;
-using firebase::firestore::auth::User;
 using firebase::firestore::core::DatabaseInfo;
+using firebase::firestore::credentials::CredentialChangeListener;
+using firebase::firestore::credentials::EmptyCredentialsProvider;
+using firebase::firestore::credentials::User;
 using firebase::firestore::local::LevelDbOpener;
 using firebase::firestore::model::DatabaseId;
 using firebase::firestore::remote::FirebaseMetadataProviderApple;
@@ -96,7 +96,7 @@ class FakeCredentialsProvider : public EmptyCredentialsProvider {
 
   void ChangeUser(NSString *new_id) {
     if (listener_) {
-      listener_(firebase::firestore::auth::User::FromUid(new_id));
+      listener_(firebase::firestore::credentials::User::FromUid(new_id));
     }
   }
 

+ 11 - 11
Firestore/Source/API/FIRFirestore+Internal.h

@@ -20,7 +20,7 @@
 #include <string>
 
 #include "Firestore/core/src/api/firestore.h"
-#include "Firestore/core/src/auth/credentials_provider.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
 #include "Firestore/core/src/util/async_queue.h"
 
 @class FIRApp;
@@ -36,7 +36,7 @@ class FirebaseMetadataProvider;
 }  // namespace firebase
 
 namespace api = firebase::firestore::api;
-namespace auth = firebase::firestore::auth;
+namespace credentials = firebase::firestore::credentials;
 namespace model = firebase::firestore::model;
 namespace remote = firebase::firestore::remote;
 
@@ -56,15 +56,15 @@ NS_ASSUME_NONNULL_BEGIN
  * Initializes a Firestore object with all the required parameters directly. This exists so that
  * tests can create FIRFirestore objects without needing FIRApp.
  */
-- (instancetype)initWithDatabaseID:(model::DatabaseId)databaseID
-                    persistenceKey:(std::string)persistenceKey
-               credentialsProvider:(std::shared_ptr<auth::CredentialsProvider>)credentialsProvider
-                       workerQueue:
-                           (std::shared_ptr<firebase::firestore::util::AsyncQueue>)workerQueue
-          firebaseMetadataProvider:
-              (std::unique_ptr<remote::FirebaseMetadataProvider>)firebaseMetadataProvider
-                       firebaseApp:(FIRApp *)app
-                  instanceRegistry:(nullable id<FSTFirestoreInstanceRegistry>)registry;
+- (instancetype)
+          initWithDatabaseID:(model::DatabaseId)databaseID
+              persistenceKey:(std::string)persistenceKey
+         credentialsProvider:(std::shared_ptr<credentials::CredentialsProvider>)credentialsProvider
+                 workerQueue:(std::shared_ptr<firebase::firestore::util::AsyncQueue>)workerQueue
+    firebaseMetadataProvider:
+        (std::unique_ptr<remote::FirebaseMetadataProvider>)firebaseMetadataProvider
+                 firebaseApp:(FIRApp *)app
+            instanceRegistry:(nullable id<FSTFirestoreInstanceRegistry>)registry;
 @end
 
 /** Internal FIRFirestore API we don't want exposed in our public header files. */

+ 2 - 2
Firestore/Source/API/FIRFirestore.mm

@@ -37,10 +37,10 @@
 #include "Firestore/core/src/api/document_reference.h"
 #include "Firestore/core/src/api/firestore.h"
 #include "Firestore/core/src/api/write_batch.h"
-#include "Firestore/core/src/auth/credentials_provider.h"
 #include "Firestore/core/src/core/database_info.h"
 #include "Firestore/core/src/core/event_listener.h"
 #include "Firestore/core/src/core/transaction.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
 #include "Firestore/core/src/model/database_id.h"
 #include "Firestore/core/src/remote/firebase_metadata_provider.h"
 #include "Firestore/core/src/util/async_queue.h"
@@ -61,8 +61,8 @@
 using firebase::firestore::api::DocumentReference;
 using firebase::firestore::api::Firestore;
 using firebase::firestore::api::ListenerRegistration;
-using firebase::firestore::auth::CredentialsProvider;
 using firebase::firestore::core::EventListener;
+using firebase::firestore::credentials::CredentialsProvider;
 using firebase::firestore::model::DatabaseId;
 using firebase::firestore::remote::FirebaseMetadataProvider;
 using firebase::firestore::util::AsyncQueue;

+ 4 - 4
Firestore/Source/API/FSTFirestoreComponent.mm

@@ -26,8 +26,8 @@
 
 #include "Firestore/core/include/firebase/firestore/firestore_version.h"
 #include "Firestore/core/src/api/firestore.h"
-#include "Firestore/core/src/auth/credentials_provider.h"
-#include "Firestore/core/src/auth/firebase_credentials_provider_apple.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
+#include "Firestore/core/src/credentials/firebase_credentials_provider_apple.h"
 #include "Firestore/core/src/remote/firebase_metadata_provider.h"
 #include "Firestore/core/src/remote/firebase_metadata_provider_apple.h"
 #include "Firestore/core/src/util/async_queue.h"
@@ -36,8 +36,8 @@
 #include "Firestore/core/src/util/hard_assert.h"
 #include "absl/memory/memory.h"
 
-using firebase::firestore::auth::CredentialsProvider;
-using firebase::firestore::auth::FirebaseCredentialsProvider;
+using firebase::firestore::credentials::CredentialsProvider;
+using firebase::firestore::credentials::FirebaseCredentialsProvider;
 using firebase::firestore::remote::FirebaseMetadataProviderApple;
 using firebase::firestore::util::AsyncQueue;
 using firebase::firestore::util::Executor;

+ 4 - 4
Firestore/core/CMakeLists.txt

@@ -189,12 +189,12 @@ firebase_ios_glob(
   src/*.h
   src/api/*.cc
   src/api/*.h
-  src/auth/*.cc
-  src/auth/*.h
   src/bundle/*.cc
   src/bundle/*.h
   src/core/*.cc
   src/core/*.h
+  src/credentials/*.cc
+  src/credentials/*.h
   src/immutable/*.cc
   src/immutable/*.h
   src/local/*.cc
@@ -212,7 +212,7 @@ firebase_ios_glob(
 if(APPLE)
   firebase_ios_glob(
     core_sources APPEND
-    src/auth/firebase_credentials_provider_apple.*
+    src/credentials/firebase_credentials_provider_apple.*
     src/remote/connectivity_monitor_apple.mm
     src/remote/firebase_metadata_provider_apple.mm
   )
@@ -305,8 +305,8 @@ add_custom_target(
 add_subdirectory(test/unit/testutil)
 add_subdirectory(test/unit)
 add_subdirectory(test/unit/api)
-add_subdirectory(test/unit/auth)
 add_subdirectory(test/unit/bundle)
+add_subdirectory(test/unit/credentials)
 add_subdirectory(test/unit/core)
 add_subdirectory(test/unit/immutable)
 add_subdirectory(test/unit/local)

+ 1 - 1
Firestore/core/src/api/firestore.cc

@@ -43,10 +43,10 @@ namespace firebase {
 namespace firestore {
 namespace api {
 
-using auth::CredentialsProvider;
 using core::AsyncEventListener;
 using core::DatabaseInfo;
 using core::FirestoreClient;
+using credentials::CredentialsProvider;
 using local::LevelDbPersistence;
 using model::ResourcePath;
 using remote::FirebaseMetadataProvider;

+ 11 - 10
Firestore/core/src/api/firestore.h

@@ -32,9 +32,9 @@
 namespace firebase {
 namespace firestore {
 
-namespace auth {
+namespace credentials {
 class CredentialsProvider;
-}  // namespace auth
+}  // namespace credentials
 
 namespace remote {
 class FirebaseMetadataProvider;
@@ -53,13 +53,14 @@ class Firestore : public std::enable_shared_from_this<Firestore> {
  public:
   Firestore() = default;
 
-  Firestore(model::DatabaseId database_id,
-            std::string persistence_key,
-            std::shared_ptr<auth::CredentialsProvider> credentials_provider,
-            std::shared_ptr<util::AsyncQueue> worker_queue,
-            std::unique_ptr<remote::FirebaseMetadataProvider>
-                firebase_metadata_provider,
-            void* extension);
+  Firestore(
+      model::DatabaseId database_id,
+      std::string persistence_key,
+      std::shared_ptr<credentials::CredentialsProvider> credentials_provider,
+      std::shared_ptr<util::AsyncQueue> worker_queue,
+      std::unique_ptr<remote::FirebaseMetadataProvider>
+          firebase_metadata_provider,
+      void* extension);
 
   ~Firestore();
 
@@ -118,7 +119,7 @@ class Firestore : public std::enable_shared_from_this<Firestore> {
   core::DatabaseInfo MakeDatabaseInfo() const;
 
   model::DatabaseId database_id_;
-  std::shared_ptr<auth::CredentialsProvider> credentials_provider_;
+  std::shared_ptr<credentials::CredentialsProvider> credentials_provider_;
   std::string persistence_key_;
 
   std::shared_ptr<util::Executor> user_executor_;

+ 3 - 3
Firestore/core/src/core/firestore_client.cc

@@ -27,13 +27,13 @@
 #include "Firestore/core/src/api/query_core.h"
 #include "Firestore/core/src/api/query_snapshot.h"
 #include "Firestore/core/src/api/settings.h"
-#include "Firestore/core/src/auth/credentials_provider.h"
 #include "Firestore/core/src/bundle/bundle_reader.h"
 #include "Firestore/core/src/core/database_info.h"
 #include "Firestore/core/src/core/event_manager.h"
 #include "Firestore/core/src/core/query_listener.h"
 #include "Firestore/core/src/core/sync_engine.h"
 #include "Firestore/core/src/core/view.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
 #include "Firestore/core/src/local/leveldb_opener.h"
 #include "Firestore/core/src/local/leveldb_persistence.h"
 #include "Firestore/core/src/local/local_documents_view.h"
@@ -72,8 +72,8 @@ using api::QuerySnapshot;
 using api::QuerySnapshotListener;
 using api::Settings;
 using api::SnapshotMetadata;
-using auth::CredentialsProvider;
-using auth::User;
+using credentials::CredentialsProvider;
+using credentials::User;
 using firestore::Error;
 using local::LevelDbOpener;
 using local::LocalStore;

+ 6 - 6
Firestore/core/src/core/firestore_client.h

@@ -38,10 +38,10 @@
 namespace firebase {
 namespace firestore {
 
-namespace auth {
+namespace credentials {
 class CredentialsProvider;
 class User;
-}  // namespace auth
+}  // namespace credentials
 
 namespace local {
 class LocalStore;
@@ -80,7 +80,7 @@ class FirestoreClient : public std::enable_shared_from_this<FirestoreClient> {
   static std::shared_ptr<FirestoreClient> Create(
       const DatabaseInfo& database_info,
       const api::Settings& settings,
-      std::shared_ptr<auth::CredentialsProvider> credentials_provider,
+      std::shared_ptr<credentials::CredentialsProvider> credentials_provider,
       std::shared_ptr<util::Executor> user_executor,
       std::shared_ptr<util::AsyncQueue> worker_queue,
       std::unique_ptr<remote::FirebaseMetadataProvider>
@@ -190,13 +190,13 @@ class FirestoreClient : public std::enable_shared_from_this<FirestoreClient> {
  private:
   FirestoreClient(
       const DatabaseInfo& database_info,
-      std::shared_ptr<auth::CredentialsProvider> credentials_provider,
+      std::shared_ptr<credentials::CredentialsProvider> credentials_provider,
       std::shared_ptr<util::Executor> user_executor,
       std::shared_ptr<util::AsyncQueue> worker_queue,
       std::unique_ptr<remote::FirebaseMetadataProvider>
           firebase_metadata_provider);
 
-  void Initialize(const auth::User& user, const api::Settings& settings);
+  void Initialize(const credentials::User& user, const api::Settings& settings);
 
   void VerifyNotTerminated();
 
@@ -205,7 +205,7 @@ class FirestoreClient : public std::enable_shared_from_this<FirestoreClient> {
   void ScheduleLruGarbageCollection();
 
   DatabaseInfo database_info_;
-  std::shared_ptr<auth::CredentialsProvider> credentials_provider_;
+  std::shared_ptr<credentials::CredentialsProvider> credentials_provider_;
   /**
    * Async queue responsible for all of our internal processing. When we get
    * incoming work from the user (via public API) or the network (incoming gRPC

+ 3 - 3
Firestore/core/src/core/sync_engine.cc

@@ -44,11 +44,11 @@ namespace core {
 
 namespace {
 
-using auth::User;
 using bundle::BundleElement;
 using bundle::BundleLoader;
 using bundle::InitialProgress;
 using bundle::SuccessProgress;
+using credentials::User;
 using firestore::Error;
 using local::LocalStore;
 using local::LocalViewChanges;
@@ -88,7 +88,7 @@ bool ErrorIsInteresting(const Status& error) {
 
 SyncEngine::SyncEngine(LocalStore* local_store,
                        remote::RemoteStore* remote_store,
-                       const auth::User& initial_user,
+                       const credentials::User& initial_user,
                        size_t max_concurrent_limbo_resolutions)
     : local_store_(local_store),
       remote_store_(remote_store),
@@ -248,7 +248,7 @@ void SyncEngine::Transaction(int retries,
   runner->Run();
 }
 
-void SyncEngine::HandleCredentialChange(const auth::User& user) {
+void SyncEngine::HandleCredentialChange(const credentials::User& user) {
   bool user_changed = (current_user_ != user);
   current_user_ = user;
 

+ 5 - 5
Firestore/core/src/core/sync_engine.h

@@ -96,7 +96,7 @@ class SyncEngine : public remote::RemoteStoreCallback, public QueryEventSource {
  public:
   SyncEngine(local::LocalStore* local_store,
              remote::RemoteStore* remote_store,
-             const auth::User& initial_user,
+             const credentials::User& initial_user,
              size_t max_concurrent_limbo_resolutions);
 
   // Implements `QueryEventSource`.
@@ -138,7 +138,7 @@ class SyncEngine : public remote::RemoteStoreCallback, public QueryEventSource {
                    core::TransactionUpdateCallback update_callback,
                    core::TransactionResultCallback result_callback);
 
-  void HandleCredentialChange(const auth::User& user);
+  void HandleCredentialChange(const credentials::User& user);
 
   // Implements `RemoteStoreCallback`
   void ApplyRemoteEvent(const remote::RemoteEvent& remote_event) override;
@@ -278,7 +278,7 @@ class SyncEngine : public remote::RemoteStoreCallback, public QueryEventSource {
   /** The remote store for sending writes, watches, etc. to the backend. */
   remote::RemoteStore* remote_store_ = nullptr;
 
-  auth::User current_user_;
+  credentials::User current_user_;
   SyncEngineCallback* sync_engine_callback_ = nullptr;
 
   /**
@@ -288,9 +288,9 @@ class SyncEngine : public remote::RemoteStoreCallback, public QueryEventSource {
   TargetIdGenerator target_id_generator_;
 
   /** Stores user completion blocks, indexed by User and BatchId. */
-  std::unordered_map<auth::User,
+  std::unordered_map<credentials::User,
                      std::unordered_map<model::BatchId, util::StatusCallback>,
-                     auth::HashUser>
+                     credentials::HashUser>
       mutation_callbacks_;
 
   /** Stores user callbacks waiting for pending writes to be acknowledged. */

+ 8 - 8
Firestore/core/src/auth/token.cc → Firestore/core/src/credentials/auth_token.cc

@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "Firestore/core/src/auth/token.h"
+#include "Firestore/core/src/credentials/auth_token.h"
 
 #include <utility>
 
@@ -22,23 +22,23 @@
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
-Token::Token(std::string token, User user)
+AuthToken::AuthToken(std::string token, User user)
     : token_{std::move(token)}, user_{std::move(user)} {
 }
 
-const std::string& Token::token() const {
+const std::string& AuthToken::token() const {
   HARD_ASSERT(user_.is_authenticated());
   return token_;
 }
 
-const Token& Token::Unauthenticated() {
-  static const Token kUnauthenticatedToken(std::string{},
-                                           User::Unauthenticated());
+const AuthToken& AuthToken::Unauthenticated() {
+  static const AuthToken kUnauthenticatedToken(std::string{},
+                                               User::Unauthenticated());
   return kUnauthenticatedToken;
 }
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 9 - 9
Firestore/core/src/auth/token.h → Firestore/core/src/credentials/auth_token.h

@@ -14,16 +14,16 @@
  * limitations under the License.
  */
 
-#ifndef FIRESTORE_CORE_SRC_AUTH_TOKEN_H_
-#define FIRESTORE_CORE_SRC_AUTH_TOKEN_H_
+#ifndef FIRESTORE_CORE_SRC_CREDENTIALS_AUTH_TOKEN_H_
+#define FIRESTORE_CORE_SRC_CREDENTIALS_AUTH_TOKEN_H_
 
 #include <string>
 
-#include "Firestore/core/src/auth/user.h"
+#include "Firestore/core/src/credentials/user.h"
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 /**
  * The current User and the authentication token provided by the underlying
@@ -38,9 +38,9 @@ namespace auth {
  * mobile so there's no TokenType here.
  */
 // TODO(zxu123): Make this support token-type for desktop workflow.
-class Token {
+class AuthToken {
  public:
-  Token(std::string token, User user);
+  AuthToken(std::string token, User user);
 
   /** The actual raw token. */
   const std::string& token() const;
@@ -60,15 +60,15 @@ class Token {
    * nil/null in the iOS/TypeScript token implementation. We use a reference
    * instead of a pointer for Token instances in the C++ migration.
    */
-  static const Token& Unauthenticated();
+  static const AuthToken& Unauthenticated();
 
  private:
   const std::string token_;
   const User user_;
 };
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase
 
-#endif  // FIRESTORE_CORE_SRC_AUTH_TOKEN_H_
+#endif  // FIRESTORE_CORE_SRC_CREDENTIALS_AUTH_TOKEN_H_

+ 3 - 3
Firestore/core/src/auth/credentials_provider.cc → Firestore/core/src/credentials/credentials_provider.cc

@@ -14,17 +14,17 @@
  * limitations under the License.
  */
 
-#include "Firestore/core/src/auth/credentials_provider.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 CredentialsProvider::CredentialsProvider() : change_listener_(nullptr) {
 }
 
 CredentialsProvider::~CredentialsProvider() = default;
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 8 - 8
Firestore/core/src/auth/credentials_provider.h → Firestore/core/src/credentials/credentials_provider.h

@@ -14,24 +14,24 @@
  * limitations under the License.
  */
 
-#ifndef FIRESTORE_CORE_SRC_AUTH_CREDENTIALS_PROVIDER_H_
-#define FIRESTORE_CORE_SRC_AUTH_CREDENTIALS_PROVIDER_H_
+#ifndef FIRESTORE_CORE_SRC_CREDENTIALS_CREDENTIALS_PROVIDER_H_
+#define FIRESTORE_CORE_SRC_CREDENTIALS_CREDENTIALS_PROVIDER_H_
 
 #include <functional>
 #include <string>
 
 #include "Firestore/core/include/firebase/firestore/firestore_errors.h"
-#include "Firestore/core/src/auth/token.h"
-#include "Firestore/core/src/auth/user.h"
+#include "Firestore/core/src/credentials/auth_token.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/util/statusor.h"
 #include "absl/strings/string_view.h"
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 // `TokenErrorListener` is a listener that gets a token or an error.
-using TokenListener = std::function<void(util::StatusOr<Token>)>;
+using TokenListener = std::function<void(util::StatusOr<AuthToken>)>;
 
 // Listener notified with a credential change.
 using CredentialChangeListener = std::function<void(User user)>;
@@ -76,8 +76,8 @@ class CredentialsProvider {
   CredentialChangeListener change_listener_;
 };
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase
 
-#endif  // FIRESTORE_CORE_SRC_AUTH_CREDENTIALS_PROVIDER_H_
+#endif  // FIRESTORE_CORE_SRC_CREDENTIALS_CREDENTIALS_PROVIDER_H_

+ 4 - 4
Firestore/core/src/auth/empty_credentials_provider.cc → Firestore/core/src/credentials/empty_credentials_provider.cc

@@ -14,17 +14,17 @@
  * limitations under the License.
  */
 
-#include "Firestore/core/src/auth/empty_credentials_provider.h"
+#include "Firestore/core/src/credentials/empty_credentials_provider.h"
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 void EmptyCredentialsProvider::GetToken(TokenListener completion) {
   if (completion) {
     // Unauthenticated token will force the GRPC fallback to use default
     // settings.
-    completion(Token::Unauthenticated());
+    completion(AuthToken::Unauthenticated());
   }
 }
 
@@ -38,6 +38,6 @@ void EmptyCredentialsProvider::SetCredentialChangeListener(
 void EmptyCredentialsProvider::InvalidateToken() {
 }
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 6 - 6
Firestore/core/src/auth/empty_credentials_provider.h → Firestore/core/src/credentials/empty_credentials_provider.h

@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-#ifndef FIRESTORE_CORE_SRC_AUTH_EMPTY_CREDENTIALS_PROVIDER_H_
-#define FIRESTORE_CORE_SRC_AUTH_EMPTY_CREDENTIALS_PROVIDER_H_
+#ifndef FIRESTORE_CORE_SRC_CREDENTIALS_EMPTY_CREDENTIALS_PROVIDER_H_
+#define FIRESTORE_CORE_SRC_CREDENTIALS_EMPTY_CREDENTIALS_PROVIDER_H_
 
-#include "Firestore/core/src/auth/credentials_provider.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 /** `EmptyCredentialsProvider` always yields an empty token. */
 class EmptyCredentialsProvider : public CredentialsProvider {
@@ -32,8 +32,8 @@ class EmptyCredentialsProvider : public CredentialsProvider {
       CredentialChangeListener change_listener) override;
 };
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase
 
-#endif  // FIRESTORE_CORE_SRC_AUTH_EMPTY_CREDENTIALS_PROVIDER_H_
+#endif  // FIRESTORE_CORE_SRC_CREDENTIALS_EMPTY_CREDENTIALS_PROVIDER_H_

+ 7 - 7
Firestore/core/src/auth/firebase_credentials_provider_apple.h → Firestore/core/src/credentials/firebase_credentials_provider_apple.h

@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef FIRESTORE_CORE_SRC_AUTH_FIREBASE_CREDENTIALS_PROVIDER_APPLE_H_
-#define FIRESTORE_CORE_SRC_AUTH_FIREBASE_CREDENTIALS_PROVIDER_APPLE_H_
+#ifndef FIRESTORE_CORE_SRC_CREDENTIALS_FIREBASE_CREDENTIALS_PROVIDER_APPLE_H_
+#define FIRESTORE_CORE_SRC_CREDENTIALS_FIREBASE_CREDENTIALS_PROVIDER_APPLE_H_
 
 #if !defined(__OBJC__)
 #error "This header only supports Objective-C++."
@@ -27,8 +27,8 @@
 #include <mutex>  // NOLINT(build/c++11)
 #include <utility>
 
-#include "Firestore/core/src/auth/credentials_provider.h"
-#include "Firestore/core/src/auth/user.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "absl/strings/string_view.h"
 
 @class FIRApp;
@@ -36,7 +36,7 @@
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 /**
  * `FirebaseCredentialsProvider` uses Firebase Auth via `FIRApp` to get an auth
@@ -115,8 +115,8 @@ class FirebaseCredentialsProvider : public CredentialsProvider {
   std::shared_ptr<Contents> contents_;
 };
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase
 
-#endif  // FIRESTORE_CORE_SRC_AUTH_FIREBASE_CREDENTIALS_PROVIDER_APPLE_H_
+#endif  // FIRESTORE_CORE_SRC_CREDENTIALS_FIREBASE_CREDENTIALS_PROVIDER_APPLE_H_

+ 33 - 32
Firestore/core/src/auth/firebase_credentials_provider_apple.mm → Firestore/core/src/credentials/firebase_credentials_provider_apple.mm

@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "Firestore/core/src/auth/firebase_credentials_provider_apple.h"
+#include "Firestore/core/src/credentials/firebase_credentials_provider_apple.h"
 
 #import "FirebaseCore/Sources/Private/FirebaseCoreInternal.h"
 #import "Interop/Auth/Public/FIRAuthInterop.h"
@@ -26,7 +26,7 @@
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 FirebaseCredentialsProvider::FirebaseCredentialsProvider(
     FIRApp* app, id<FIRAuthInterop> auth) {
@@ -83,37 +83,38 @@ void FirebaseCredentialsProvider::GetToken(TokenListener completion) {
   int initial_token_counter = contents_->token_counter;
 
   std::weak_ptr<Contents> weak_contents = contents_;
-  void (^get_token_callback)(NSString*, NSError*) = ^(
-      NSString* _Nullable token, NSError* _Nullable error) {
-    std::shared_ptr<Contents> contents = weak_contents.lock();
-    if (!contents) {
-      return;
-    }
-
-    std::unique_lock<std::mutex> lock(contents->mutex);
-    if (initial_token_counter != contents->token_counter) {
-      // Cancel the request since the user changed while the request was
-      // outstanding so the response is likely for a previous user (which
-      // user, we can't be sure).
-      LOG_DEBUG("GetToken aborted due to token change.");
-      return GetToken(completion);
-    } else {
-      if (error == nil) {
-        if (token != nil) {
-          completion(Token{util::MakeString(token), contents->current_user});
-        } else {
-          completion(Token::Unauthenticated());
+  void (^get_token_callback)(NSString*, NSError*) =
+      ^(NSString* _Nullable token, NSError* _Nullable error) {
+        std::shared_ptr<Contents> contents = weak_contents.lock();
+        if (!contents) {
+          return;
         }
-      } else {
-        Error error_code = Error::kErrorUnknown;
-        if (error.domain == FIRFirestoreErrorDomain) {
-          error_code = static_cast<Error>(error.code);
+
+        std::unique_lock<std::mutex> lock(contents->mutex);
+        if (initial_token_counter != contents->token_counter) {
+          // Cancel the request since the user changed while the request was
+          // outstanding so the response is likely for a previous user (which
+          // user, we can't be sure).
+          LOG_DEBUG("GetToken aborted due to token change.");
+          return GetToken(completion);
+        } else {
+          if (error == nil) {
+            if (token != nil) {
+              completion(
+                  AuthToken{util::MakeString(token), contents->current_user});
+            } else {
+              completion(AuthToken::Unauthenticated());
+            }
+          } else {
+            Error error_code = Error::kErrorUnknown;
+            if (error.domain == FIRFirestoreErrorDomain) {
+              error_code = static_cast<Error>(error.code);
+            }
+            completion(util::Status(
+                error_code, util::MakeString(error.localizedDescription)));
+          }
         }
-        completion(util::Status(error_code,
-                                util::MakeString(error.localizedDescription)));
-      }
-    }
-  };
+      };
 
   // TODO(wilhuff): Need a better abstraction over a missing auth provider.
   if (contents_->auth) {
@@ -147,6 +148,6 @@ void FirebaseCredentialsProvider::SetCredentialChangeListener(
   change_listener_ = change_listener;
 }
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 3 - 3
Firestore/core/src/auth/user.cc → Firestore/core/src/credentials/user.cc

@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "Firestore/core/src/auth/user.h"
+#include "Firestore/core/src/credentials/user.h"
 
 #include <utility>
 
@@ -22,7 +22,7 @@
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 User::User() : is_authenticated_{false} {
 }
@@ -36,6 +36,6 @@ const User& User::Unauthenticated() {
   return *kUnauthenticated;
 }
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 5 - 5
Firestore/core/src/auth/user.h → Firestore/core/src/credentials/user.h

@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef FIRESTORE_CORE_SRC_AUTH_USER_H_
-#define FIRESTORE_CORE_SRC_AUTH_USER_H_
+#ifndef FIRESTORE_CORE_SRC_CREDENTIALS_USER_H_
+#define FIRESTORE_CORE_SRC_CREDENTIALS_USER_H_
 
 #if defined(__OBJC__)
 #import <Foundation/Foundation.h>
@@ -28,7 +28,7 @@
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 /**
  * Simple wrapper around a nullable UID. Mostly exists to make code more
@@ -96,8 +96,8 @@ struct HashUser {
   }
 };
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase
 
-#endif  // FIRESTORE_CORE_SRC_AUTH_USER_H_
+#endif  // FIRESTORE_CORE_SRC_CREDENTIALS_USER_H_

+ 1 - 1
Firestore/core/src/local/leveldb_mutation_queue.cc

@@ -39,8 +39,8 @@ namespace firebase {
 namespace firestore {
 namespace local {
 
-using auth::User;
 using core::Query;
+using credentials::User;
 using leveldb::DB;
 using leveldb::Iterator;
 using leveldb::Status;

+ 3 - 3
Firestore/core/src/local/leveldb_mutation_queue.h

@@ -35,9 +35,9 @@ class Timestamp;
 
 namespace firestore {
 
-namespace auth {
+namespace credentials {
 class User;
-}  // namespace auth
+}  // namespace credentials
 
 namespace local {
 class LevelDbPersistence;
@@ -51,7 +51,7 @@ model::BatchId LoadNextBatchIdFromDb(leveldb::DB* db);
 
 class LevelDbMutationQueue : public MutationQueue {
  public:
-  LevelDbMutationQueue(const auth::User& user,
+  LevelDbMutationQueue(const credentials::User& user,
                        LevelDbPersistence* db,
                        LocalSerializer* serializer);
 

+ 3 - 3
Firestore/core/src/local/leveldb_persistence.cc

@@ -19,8 +19,8 @@
 #include <limits>
 #include <utility>
 
-#include "Firestore/core/src/auth/user.h"
 #include "Firestore/core/src/core/database_info.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/leveldb_key.h"
 #include "Firestore/core/src/local/leveldb_lru_reference_delegate.h"
 #include "Firestore/core/src/local/leveldb_migrations.h"
@@ -42,7 +42,7 @@ namespace firestore {
 namespace local {
 namespace {
 
-using auth::User;
+using credentials::User;
 using leveldb::DB;
 using model::ListenSequenceNumber;
 using util::Filesystem;
@@ -226,7 +226,7 @@ void LevelDbPersistence::Shutdown() {
 }
 
 LevelDbMutationQueue* LevelDbPersistence::GetMutationQueueForUser(
-    const auth::User& user) {
+    const credentials::User& user) {
   users_.insert(user.uid());
   current_mutation_queue_ =
       absl::make_unique<LevelDbMutationQueue>(user, this, &serializer_);

+ 2 - 2
Firestore/core/src/local/leveldb_persistence.h

@@ -21,7 +21,7 @@
 #include <set>
 #include <string>
 
-#include "Firestore/core/src/auth/user.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/leveldb_bundle_cache.h"
 #include "Firestore/core/src/local/leveldb_index_manager.h"
 #include "Firestore/core/src/local/leveldb_lru_reference_delegate.h"
@@ -81,7 +81,7 @@ class LevelDbPersistence : public Persistence {
   LevelDbBundleCache* bundle_cache() override;
 
   LevelDbMutationQueue* GetMutationQueueForUser(
-      const auth::User& user) override;
+      const credentials::User& user) override;
 
   LevelDbTargetCache* target_cache() override;
 

+ 1 - 1
Firestore/core/src/local/local_store.cc

@@ -42,10 +42,10 @@ namespace firestore {
 namespace local {
 namespace {
 
-using auth::User;
 using core::Query;
 using core::Target;
 using core::TargetIdGenerator;
+using credentials::User;
 using model::BatchId;
 using model::Document;
 using model::DocumentKey;

+ 4 - 4
Firestore/core/src/local/local_store.h

@@ -35,9 +35,9 @@
 namespace firebase {
 namespace firestore {
 
-namespace auth {
+namespace credentials {
 class User;
-}  // namespace auth
+}  // namespace credentials
 
 namespace core {
 class Query;
@@ -108,7 +108,7 @@ class LocalStore : public bundle::BundleCallback {
  public:
   LocalStore(Persistence* persistence,
              QueryEngine* query_engine,
-             const auth::User& initial_user);
+             const credentials::User& initial_user);
 
   ~LocalStore();
 
@@ -121,7 +121,7 @@ class LocalStore : public bundle::BundleCallback {
    * In response the local store switches the mutation queue to the new user and
    * returns any resulting document changes.
    */
-  model::DocumentMap HandleUserChange(const auth::User& user);
+  model::DocumentMap HandleUserChange(const credentials::User& user);
 
   /** Accepts locally generated Mutations and commits them to storage. */
   LocalWriteResult WriteLocally(std::vector<model::Mutation>&& mutations);

+ 2 - 2
Firestore/core/src/local/memory_persistence.cc

@@ -16,7 +16,7 @@
 
 #include "Firestore/core/src/local/memory_persistence.h"
 
-#include "Firestore/core/src/auth/user.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/listen_sequence.h"
 #include "Firestore/core/src/local/lru_garbage_collector.h"
 #include "Firestore/core/src/local/memory_eager_reference_delegate.h"
@@ -34,7 +34,7 @@ namespace firebase {
 namespace firestore {
 namespace local {
 
-using auth::User;
+using credentials::User;
 using model::ListenSequenceNumber;
 
 std::unique_ptr<MemoryPersistence>

+ 5 - 4
Firestore/core/src/local/memory_persistence.h

@@ -23,7 +23,7 @@
 #include <utility>
 #include <vector>
 
-#include "Firestore/core/src/auth/user.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/memory_bundle_cache.h"
 #include "Firestore/core/src/local/memory_index_manager.h"
 #include "Firestore/core/src/local/memory_mutation_queue.h"
@@ -53,9 +53,9 @@ class Sizer;
 class MemoryPersistence : public Persistence {
  public:
   using MutationQueues =
-      std::unordered_map<auth::User,
+      std::unordered_map<credentials::User,
                          std::unique_ptr<MemoryMutationQueue>,
-                         auth::HashUser>;
+                         credentials::HashUser>;
 
   static std::unique_ptr<MemoryPersistence> WithEagerGarbageCollector();
 
@@ -74,7 +74,8 @@ class MemoryPersistence : public Persistence {
 
   void Shutdown() override;
 
-  MemoryMutationQueue* GetMutationQueueForUser(const auth::User& user) override;
+  MemoryMutationQueue* GetMutationQueueForUser(
+      const credentials::User& user) override;
 
   MemoryTargetCache* target_cache() override;
 

+ 4 - 3
Firestore/core/src/local/persistence.h

@@ -25,11 +25,11 @@
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 class User;
 
-}  // namespace auth
+}  // namespace credentials
 
 namespace local {
 
@@ -93,7 +93,8 @@ class Persistence {
    * extent possible (e.g. in the case of UID switching from sally=>jack=>sally,
    * sally's mutation queue will be preserved).
    */
-  virtual MutationQueue* GetMutationQueueForUser(const auth::User& user) = 0;
+  virtual MutationQueue* GetMutationQueueForUser(
+      const credentials::User& user) = 0;
 
   /** Returns a TargetCache representing the persisted cache of queries. */
   virtual TargetCache* target_cache() = 0;

+ 10 - 9
Firestore/core/src/remote/datastore.cc

@@ -20,9 +20,9 @@
 #include <utility>
 
 #include "Firestore/core/include/firebase/firestore/firestore_errors.h"
-#include "Firestore/core/src/auth/credentials_provider.h"
-#include "Firestore/core/src/auth/token.h"
 #include "Firestore/core/src/core/database_info.h"
+#include "Firestore/core/src/credentials/auth_token.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
 #include "Firestore/core/src/model/database_id.h"
 #include "Firestore/core/src/model/document.h"
 #include "Firestore/core/src/model/document_key.h"
@@ -49,9 +49,9 @@ namespace firestore {
 namespace remote {
 namespace {
 
-using auth::CredentialsProvider;
-using auth::Token;
 using core::DatabaseInfo;
+using credentials::AuthToken;
+using credentials::CredentialsProvider;
 using model::DocumentKey;
 using model::Mutation;
 using util::AsyncQueue;
@@ -163,7 +163,7 @@ void Datastore::CommitMutations(const std::vector<Mutation>& mutations,
   ResumeRpcWithCredentials(
       // TODO(c++14): move into lambda.
       [this, mutations,
-       callback](const StatusOr<Token>& maybe_credentials) mutable {
+       callback](const StatusOr<AuthToken>& maybe_credentials) mutable {
         if (!maybe_credentials.ok()) {
           callback(maybe_credentials.status());
           return;
@@ -174,7 +174,7 @@ void Datastore::CommitMutations(const std::vector<Mutation>& mutations,
 }
 
 void Datastore::CommitMutationsWithCredentials(
-    const Token& token,
+    const AuthToken& token,
     const std::vector<Mutation>& mutations,
     CommitCallback&& callback) {
   grpc::ByteBuffer message =
@@ -202,7 +202,8 @@ void Datastore::LookupDocuments(const std::vector<DocumentKey>& keys,
                                 LookupCallback&& callback) {
   ResumeRpcWithCredentials(
       // TODO(c++14): move into lambda.
-      [this, keys, callback](const StatusOr<Token>& maybe_credentials) mutable {
+      [this, keys,
+       callback](const StatusOr<AuthToken>& maybe_credentials) mutable {
         if (!maybe_credentials.ok()) {
           callback(maybe_credentials.status());
           return;
@@ -213,7 +214,7 @@ void Datastore::LookupDocuments(const std::vector<DocumentKey>& keys,
 }
 
 void Datastore::LookupDocumentsWithCredentials(
-    const Token& token,
+    const AuthToken& token,
     const std::vector<DocumentKey>& keys,
     LookupCallback&& callback) {
   grpc::ByteBuffer message =
@@ -254,7 +255,7 @@ void Datastore::ResumeRpcWithCredentials(const OnCredentials& on_credentials) {
   std::weak_ptr<Datastore> weak_this{shared_from_this()};
 
   credentials_->GetToken(
-      [weak_this, on_credentials](const StatusOr<Token>& result) {
+      [weak_this, on_credentials](const StatusOr<AuthToken>& result) {
         auto strong_this = weak_this.lock();
         if (!strong_this) {
           return;

+ 8 - 7
Firestore/core/src/remote/datastore.h

@@ -22,9 +22,9 @@
 #include <string>
 #include <vector>
 
-#include "Firestore/core/src/auth/credentials_provider.h"
-#include "Firestore/core/src/auth/token.h"
 #include "Firestore/core/src/core/core_fwd.h"
+#include "Firestore/core/src/credentials/auth_token.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
 #include "Firestore/core/src/model/document_key.h"
 #include "Firestore/core/src/remote/grpc_call.h"
 #include "Firestore/core/src/remote/grpc_connection.h"
@@ -73,7 +73,7 @@ class Datastore : public std::enable_shared_from_this<Datastore> {
 
   Datastore(const core::DatabaseInfo& database_info,
             const std::shared_ptr<util::AsyncQueue>& worker_queue,
-            std::shared_ptr<auth::CredentialsProvider> credentials,
+            std::shared_ptr<credentials::CredentialsProvider> credentials,
             ConnectivityMonitor* connectivity_monitor,
             FirebaseMetadataProvider* firebase_metadata_provider);
 
@@ -155,19 +155,20 @@ class Datastore : public std::enable_shared_from_this<Datastore> {
   void PollGrpcQueue();
 
   void CommitMutationsWithCredentials(
-      const auth::Token& token,
+      const credentials::AuthToken& token,
       const std::vector<model::Mutation>& mutations,
       CommitCallback&& callback);
 
   void LookupDocumentsWithCredentials(
-      const auth::Token& token,
+      const credentials::AuthToken& token,
       const std::vector<model::DocumentKey>& keys,
       LookupCallback&& callback);
   void OnLookupDocumentsResponse(
       const util::StatusOr<std::vector<grpc::ByteBuffer>>& result,
       const LookupCallback& callback);
 
-  using OnCredentials = std::function<void(const util::StatusOr<auth::Token>&)>;
+  using OnCredentials =
+      std::function<void(const util::StatusOr<credentials::AuthToken>&)>;
   void ResumeRpcWithCredentials(const OnCredentials& on_credentials);
 
   void HandleCallStatus(const util::Status& status);
@@ -179,7 +180,7 @@ class Datastore : public std::enable_shared_from_this<Datastore> {
   bool is_shut_down_ = false;
 
   std::shared_ptr<util::AsyncQueue> worker_queue_;
-  std::shared_ptr<auth::CredentialsProvider> credentials_;
+  std::shared_ptr<credentials::CredentialsProvider> credentials_;
 
   // A separate executor dedicated to polling gRPC completion queue (which is
   // shared for all spawned gRPC streams and calls).

+ 6 - 6
Firestore/core/src/remote/grpc_connection.cc

@@ -25,7 +25,7 @@
 
 #include "Firestore/core/include/firebase/firestore/firestore_errors.h"
 #include "Firestore/core/include/firebase/firestore/firestore_version.h"
-#include "Firestore/core/src/auth/token.h"
+#include "Firestore/core/src/credentials/auth_token.h"
 #include "Firestore/core/src/model/database_id.h"
 #include "Firestore/core/src/remote/firebase_metadata_provider.h"
 #include "Firestore/core/src/remote/grpc_root_certificate_finder.h"
@@ -48,8 +48,8 @@ namespace firestore {
 namespace remote {
 namespace {
 
-using auth::Token;
 using core::DatabaseInfo;
+using credentials::AuthToken;
 using model::DatabaseId;
 using util::Filesystem;
 using util::Path;
@@ -252,7 +252,7 @@ void GrpcConnection::Shutdown() {
 }
 
 std::unique_ptr<grpc::ClientContext> GrpcConnection::CreateContext(
-    const Token& credential) const {
+    const AuthToken& credential) const {
   absl::string_view token = credential.user().is_authenticated()
                                 ? credential.token()
                                 : absl::string_view{};
@@ -323,7 +323,7 @@ std::shared_ptr<grpc::Channel> GrpcConnection::CreateChannel() const {
 
 std::unique_ptr<GrpcStream> GrpcConnection::CreateStream(
     absl::string_view rpc_name,
-    const Token& token,
+    const AuthToken& token,
     GrpcStreamObserver* observer) {
   EnsureActiveStub();
 
@@ -336,7 +336,7 @@ std::unique_ptr<GrpcStream> GrpcConnection::CreateStream(
 
 std::unique_ptr<GrpcUnaryCall> GrpcConnection::CreateUnaryCall(
     absl::string_view rpc_name,
-    const Token& token,
+    const AuthToken& token,
     const grpc::ByteBuffer& message) {
   EnsureActiveStub();
 
@@ -349,7 +349,7 @@ std::unique_ptr<GrpcUnaryCall> GrpcConnection::CreateUnaryCall(
 
 std::unique_ptr<GrpcStreamingReader> GrpcConnection::CreateStreamingReader(
     absl::string_view rpc_name,
-    const Token& token,
+    const AuthToken& token,
     const grpc::ByteBuffer& message) {
   EnsureActiveStub();
 

+ 5 - 5
Firestore/core/src/remote/grpc_connection.h

@@ -22,8 +22,8 @@
 #include <unordered_map>
 #include <vector>
 
-#include "Firestore/core/src/auth/token.h"
 #include "Firestore/core/src/core/database_info.h"
+#include "Firestore/core/src/credentials/auth_token.h"
 #include "Firestore/core/src/remote/connectivity_monitor.h"
 #include "Firestore/core/src/remote/grpc_call.h"
 #include "Firestore/core/src/remote/grpc_stream.h"
@@ -72,17 +72,17 @@ class GrpcConnection {
   // PORTING NOTE: unlike Web client, the created stream is not open and has to
   // be started manually.
   std::unique_ptr<GrpcStream> CreateStream(absl::string_view rpc_name,
-                                           const auth::Token& token,
+                                           const credentials::AuthToken& token,
                                            GrpcStreamObserver* observer);
 
   std::unique_ptr<GrpcUnaryCall> CreateUnaryCall(
       absl::string_view rpc_name,
-      const auth::Token& token,
+      const credentials::AuthToken& token,
       const grpc::ByteBuffer& message);
 
   std::unique_ptr<GrpcStreamingReader> CreateStreamingReader(
       absl::string_view rpc_name,
-      const auth::Token& token,
+      const credentials::AuthToken& token,
       const grpc::ByteBuffer& message);
 
   void Register(GrpcCall* call);
@@ -106,7 +106,7 @@ class GrpcConnection {
 
  private:
   std::unique_ptr<grpc::ClientContext> CreateContext(
-      const auth::Token& credential) const;
+      const credentials::AuthToken& credential) const;
   std::shared_ptr<grpc::Channel> CreateChannel() const;
   void EnsureActiveStub();
 

+ 5 - 4
Firestore/core/src/remote/stream.cc

@@ -32,8 +32,8 @@ namespace firestore {
 namespace remote {
 namespace {
 
-using auth::CredentialsProvider;
-using auth::Token;
+using credentials::AuthToken;
+using credentials::CredentialsProvider;
 using util::AsyncQueue;
 using util::LogIsDebugEnabled;
 using util::Status;
@@ -104,7 +104,7 @@ void Stream::RequestCredentials() {
   std::weak_ptr<Stream> weak_this{shared_from_this()};
   int initial_close_count = close_count_;
   credentials_provider_->GetToken([weak_this, initial_close_count](
-                                      const StatusOr<Token>& maybe_token) {
+                                      const StatusOr<AuthToken>& maybe_token) {
     auto strong_this = weak_this.lock();
     if (!strong_this) {
       return;
@@ -123,7 +123,8 @@ void Stream::RequestCredentials() {
   });
 }
 
-void Stream::ResumeStartWithCredentials(const StatusOr<Token>& maybe_token) {
+void Stream::ResumeStartWithCredentials(
+    const StatusOr<AuthToken>& maybe_token) {
   EnsureOnQueue();
 
   HARD_ASSERT(state_ == State::Starting,

+ 6 - 6
Firestore/core/src/remote/stream.h

@@ -20,8 +20,8 @@
 #include <memory>
 #include <string>
 
-#include "Firestore/core/src/auth/credentials_provider.h"
-#include "Firestore/core/src/auth/token.h"
+#include "Firestore/core/src/credentials/auth_token.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
 #include "Firestore/core/src/remote/exponential_backoff.h"
 #include "Firestore/core/src/remote/grpc_completion.h"
 #include "Firestore/core/src/remote/grpc_connection.h"
@@ -119,7 +119,7 @@ class Stream : public GrpcStreamObserver,
   };
 
   Stream(const std::shared_ptr<util::AsyncQueue>& worker_queue,
-         std::shared_ptr<auth::CredentialsProvider> credentials_provider,
+         std::shared_ptr<credentials::CredentialsProvider> credentials_provider,
          GrpcConnection* grpc_connection,
          util::TimerId backoff_timer_id,
          util::TimerId idle_timer_id);
@@ -203,7 +203,7 @@ class Stream : public GrpcStreamObserver,
   // The interface for the derived classes.
 
   virtual std::unique_ptr<GrpcStream> CreateGrpcStream(
-      GrpcConnection* grpc_connection, const auth::Token& token) = 0;
+      GrpcConnection* grpc_connection, const credentials::AuthToken& token) = 0;
   virtual void TearDown(GrpcStream* stream) = 0;
   virtual void NotifyStreamOpen() = 0;
   virtual util::Status NotifyStreamResponse(
@@ -217,7 +217,7 @@ class Stream : public GrpcStreamObserver,
 
   void RequestCredentials();
   void ResumeStartWithCredentials(
-      const util::StatusOr<auth::Token>& maybe_token);
+      const util::StatusOr<credentials::AuthToken>& maybe_token);
 
   void BackoffAndTryRestarting();
   void StopDueToIdleness();
@@ -226,7 +226,7 @@ class Stream : public GrpcStreamObserver,
 
   std::unique_ptr<GrpcStream> grpc_stream_;
 
-  std::shared_ptr<auth::CredentialsProvider> credentials_provider_;
+  std::shared_ptr<credentials::CredentialsProvider> credentials_provider_;
   std::shared_ptr<util::AsyncQueue> worker_queue_;
   GrpcConnection* grpc_connection_ = nullptr;
 

+ 3 - 3
Firestore/core/src/remote/watch_stream.cc

@@ -30,8 +30,8 @@ namespace firebase {
 namespace firestore {
 namespace remote {
 
-using auth::CredentialsProvider;
-using auth::Token;
+using credentials::AuthToken;
+using credentials::CredentialsProvider;
 using local::TargetData;
 using model::TargetId;
 using remote::ByteBufferReader;
@@ -69,7 +69,7 @@ void WatchStream::UnwatchTargetId(TargetId target_id) {
 }
 
 std::unique_ptr<GrpcStream> WatchStream::CreateGrpcStream(
-    GrpcConnection* grpc_connection, const Token& token) {
+    GrpcConnection* grpc_connection, const AuthToken& token) {
   return grpc_connection->CreateStream("/google.firestore.v1.Firestore/Listen",
                                        token, this);
 }

+ 8 - 6
Firestore/core/src/remote/watch_stream.h

@@ -83,11 +83,12 @@ class WatchStreamCallback {
  */
 class WatchStream : public Stream {
  public:
-  WatchStream(const std::shared_ptr<util::AsyncQueue>& async_queue,
-              std::shared_ptr<auth::CredentialsProvider> credentials_provider,
-              Serializer serializer,
-              GrpcConnection* grpc_connection,
-              WatchStreamCallback* callback);
+  WatchStream(
+      const std::shared_ptr<util::AsyncQueue>& async_queue,
+      std::shared_ptr<credentials::CredentialsProvider> credentials_provider,
+      Serializer serializer,
+      GrpcConnection* grpc_connection,
+      WatchStreamCallback* callback);
 
   /**
    * Registers interest in the results of the given query. If the query includes
@@ -107,7 +108,8 @@ class WatchStream : public Stream {
 
  private:
   std::unique_ptr<GrpcStream> CreateGrpcStream(
-      GrpcConnection* grpc_connection, const auth::Token& token) override;
+      GrpcConnection* grpc_connection,
+      const credentials::AuthToken& token) override;
   void TearDown(GrpcStream* grpc_stream) override;
 
   void NotifyStreamOpen() override;

+ 3 - 3
Firestore/core/src/remote/write_stream.cc

@@ -30,8 +30,8 @@ namespace firebase {
 namespace firestore {
 namespace remote {
 
-using auth::CredentialsProvider;
-using auth::Token;
+using credentials::AuthToken;
+using credentials::CredentialsProvider;
 using model::Mutation;
 using nanopb::ByteString;
 using nanopb::Message;
@@ -87,7 +87,7 @@ void WriteStream::WriteMutations(const std::vector<Mutation>& mutations) {
 }
 
 std::unique_ptr<GrpcStream> WriteStream::CreateGrpcStream(
-    GrpcConnection* grpc_connection, const Token& token) {
+    GrpcConnection* grpc_connection, const AuthToken& token) {
   return grpc_connection->CreateStream("/google.firestore.v1.Firestore/Write",
                                        token, this);
 }

+ 8 - 6
Firestore/core/src/remote/write_stream.h

@@ -92,11 +92,12 @@ class WriteStreamCallback {
  */
 class WriteStream : public Stream {
  public:
-  WriteStream(const std::shared_ptr<util::AsyncQueue>& async_queue,
-              std::shared_ptr<auth::CredentialsProvider> credentials_provider,
-              Serializer serializer,
-              GrpcConnection* grpc_connection,
-              WriteStreamCallback* callback);
+  WriteStream(
+      const std::shared_ptr<util::AsyncQueue>& async_queue,
+      std::shared_ptr<credentials::CredentialsProvider> credentials_provider,
+      Serializer serializer,
+      GrpcConnection* grpc_connection,
+      WriteStreamCallback* callback);
 
   void set_last_stream_token(nanopb::ByteString token);
   /**
@@ -134,7 +135,8 @@ class WriteStream : public Stream {
 
  private:
   std::unique_ptr<GrpcStream> CreateGrpcStream(
-      GrpcConnection* grpc_connection, const auth::Token& token) override;
+      GrpcConnection* grpc_connection,
+      const credentials::AuthToken& token) override;
   void TearDown(GrpcStream* grpc_stream) override;
 
   void NotifyStreamOpen() override;

+ 4 - 4
Firestore/core/test/unit/auth/CMakeLists.txt → Firestore/core/test/unit/credentials/CMakeLists.txt

@@ -17,21 +17,21 @@ if(NOT FIREBASE_IOS_BUILD_TESTS)
 endif()
 
 file(GLOB sources *.cc *.h)
-firebase_ios_add_test(firestore_auth_test ${sources})
+firebase_ios_add_test(firestore_credentials_test ${sources})
 
 target_link_libraries(
-  firestore_auth_test PRIVATE
+  firestore_credentials_test PRIVATE
   firestore_core
 )
 
 if(APPLE)
   target_sources(
-    firestore_auth_test PRIVATE
+    firestore_credentials_test PRIVATE
     firebase_credentials_provider_test.mm
   )
 
   target_link_libraries(
-    firestore_auth_test PRIVATE
+    firestore_credentials_test PRIVATE
     firestore_testutil
   )
 endif()

+ 4 - 4
Firestore/core/test/unit/auth/credentials_provider_test.cc → Firestore/core/test/unit/credentials/credentials_provider_test.cc

@@ -14,19 +14,19 @@
  * limitations under the License.
  */
 
-#include "Firestore/core/src/auth/credentials_provider.h"
+#include "Firestore/core/src/credentials/credentials_provider.h"
 
 #include "Firestore/core/src/util/statusor.h"
 #include "gtest/gtest.h"
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 #define UNUSED(x) (void)(x)
 
 TEST(CredentialsProvider, Typedef) {
-  TokenListener token_listener = [](util::StatusOr<Token> token) {
+  TokenListener token_listener = [](util::StatusOr<AuthToken> token) {
     UNUSED(token);
   };
   EXPECT_NE(nullptr, token_listener);
@@ -47,6 +47,6 @@ TEST(CredentialsProvider, Typedef) {
   EXPECT_FALSE(user_change_listener);
 }
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 6 - 6
Firestore/core/test/unit/auth/empty_credentials_provider_test.cc → Firestore/core/test/unit/credentials/empty_credentials_provider_test.cc

@@ -14,20 +14,20 @@
  * limitations under the License.
  */
 
-#include "Firestore/core/src/auth/empty_credentials_provider.h"
+#include "Firestore/core/src/credentials/empty_credentials_provider.h"
 
 #include "Firestore/core/src/util/statusor.h"
 #include "gtest/gtest.h"
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 TEST(EmptyCredentialsProvider, GetToken) {
   EmptyCredentialsProvider credentials_provider;
-  credentials_provider.GetToken([](util::StatusOr<Token> result) {
+  credentials_provider.GetToken([](util::StatusOr<AuthToken> result) {
     EXPECT_TRUE(result.ok());
-    const Token& token = result.ValueOrDie();
+    const AuthToken& token = result.ValueOrDie();
     EXPECT_ANY_THROW(token.token());
     const User& user = token.user();
     EXPECT_EQ("", user.uid());
@@ -49,9 +49,9 @@ TEST(EmptyCredentialsProvider, InvalidateToken) {
   EmptyCredentialsProvider credentials_provider;
   credentials_provider.InvalidateToken();
   credentials_provider.GetToken(
-      [](util::StatusOr<Token> result) { EXPECT_TRUE(result.ok()); });
+      [](util::StatusOr<AuthToken> result) { EXPECT_TRUE(result.ok()); });
 }
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 22 - 21
Firestore/core/test/unit/auth/firebase_credentials_provider_test.mm → Firestore/core/test/unit/credentials/firebase_credentials_provider_test.mm

@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "Firestore/core/src/auth/firebase_credentials_provider_apple.h"
+#include "Firestore/core/src/credentials/firebase_credentials_provider_apple.h"
 
 #include <chrono>  // NOLINT(build/c++11)
 #include <future>  // NOLINT(build/c++11)
@@ -68,26 +68,27 @@
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 // Simulates the case where Firebase/Firestore is installed in the project but
 // Firebase/Auth is not available.
 TEST(FirebaseCredentialsProviderTest, GetTokenNoProvider) {
-  auto token_promise = std::make_shared<std::promise<Token>>();
+  auto token_promise = std::make_shared<std::promise<AuthToken>>();
 
   FIRApp* app = testutil::AppForUnitTesting();
   FirebaseCredentialsProvider credentials_provider(app, nil);
-  credentials_provider.GetToken([token_promise](util::StatusOr<Token> result) {
-    EXPECT_TRUE(result.ok());
-    const Token& token = result.ValueOrDie();
-    EXPECT_ANY_THROW(token.token());
-    const User& user = token.user();
-    EXPECT_EQ("", user.uid());
-    EXPECT_FALSE(user.is_authenticated());
-
-    // TODO(wilhuff): convert between !result.ok() and a failed promise.
-    token_promise->set_value(token);
-  });
+  credentials_provider.GetToken(
+      [token_promise](util::StatusOr<AuthToken> result) {
+        EXPECT_TRUE(result.ok());
+        const AuthToken& token = result.ValueOrDie();
+        EXPECT_ANY_THROW(token.token());
+        const User& user = token.user();
+        EXPECT_EQ("", user.uid());
+        EXPECT_FALSE(user.is_authenticated());
+
+        // TODO(wilhuff): convert between !result.ok() and a failed promise.
+        token_promise->set_value(token);
+      });
 
   // TODO(wilhuff): generalize this pattern or make util::Await for non-void
   // futures.
@@ -100,9 +101,9 @@ TEST(FirebaseCredentialsProviderTest, GetTokenUnauthenticated) {
   FIRApp* app = testutil::AppForUnitTesting();
   FSTAuthFake* auth = [[FSTAuthFake alloc] initWithToken:nil uid:nil];
   FirebaseCredentialsProvider credentials_provider(app, auth);
-  credentials_provider.GetToken([](util::StatusOr<Token> result) {
+  credentials_provider.GetToken([](util::StatusOr<AuthToken> result) {
     EXPECT_TRUE(result.ok());
-    const Token& token = result.ValueOrDie();
+    const AuthToken& token = result.ValueOrDie();
     EXPECT_ANY_THROW(token.token());
     const User& user = token.user();
     EXPECT_EQ("", user.uid());
@@ -115,9 +116,9 @@ TEST(FirebaseCredentialsProviderTest, GetToken) {
   FSTAuthFake* auth = [[FSTAuthFake alloc] initWithToken:@"token for fake uid"
                                                      uid:@"fake uid"];
   FirebaseCredentialsProvider credentials_provider(app, auth);
-  credentials_provider.GetToken([](util::StatusOr<Token> result) {
+  credentials_provider.GetToken([](util::StatusOr<AuthToken> result) {
     EXPECT_TRUE(result.ok());
-    const Token& token = result.ValueOrDie();
+    const AuthToken& token = result.ValueOrDie();
     EXPECT_EQ("token for fake uid", token.token());
     const User& user = token.user();
     EXPECT_EQ("fake uid", user.uid());
@@ -144,15 +145,15 @@ TEST(FirebaseCredentialsProviderTest, InvalidateToken) {
                                                      uid:@"fake uid"];
   FirebaseCredentialsProvider credentials_provider(app, auth);
   credentials_provider.InvalidateToken();
-  credentials_provider.GetToken([&auth](util::StatusOr<Token> result) {
+  credentials_provider.GetToken([&auth](util::StatusOr<AuthToken> result) {
     EXPECT_TRUE(result.ok());
     EXPECT_TRUE(auth.forceRefreshTriggered);
-    const Token& token = result.ValueOrDie();
+    const AuthToken& token = result.ValueOrDie();
     EXPECT_EQ("token for fake uid", token.token());
     EXPECT_EQ("fake uid", token.user().uid());
   });
 }
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 5 - 5
Firestore/core/test/unit/auth/token_test.cc → Firestore/core/test/unit/credentials/token_test.cc

@@ -14,26 +14,26 @@
  * limitations under the License.
  */
 
-#include "Firestore/core/src/auth/token.h"
+#include "Firestore/core/src/credentials/auth_token.h"
 
 #include "gtest/gtest.h"
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 TEST(Token, Getter) {
-  Token token("token", User("abc"));
+  AuthToken token("token", User("abc"));
   EXPECT_EQ("token", token.token());
   EXPECT_EQ(User("abc"), token.user());
 }
 
 TEST(Token, UnauthenticatedToken) {
-  const Token& token = Token::Unauthenticated();
+  const AuthToken& token = AuthToken::Unauthenticated();
   EXPECT_ANY_THROW(token.token());
   EXPECT_EQ(User::Unauthenticated(), token.user());
 }
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 3 - 3
Firestore/core/test/unit/auth/user_test.cc → Firestore/core/test/unit/credentials/user_test.cc

@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-#include "Firestore/core/src/auth/user.h"
+#include "Firestore/core/src/credentials/user.h"
 
 #include "gtest/gtest.h"
 
 namespace firebase {
 namespace firestore {
-namespace auth {
+namespace credentials {
 
 TEST(User, Getter) {
   User anonymous;
@@ -54,6 +54,6 @@ TEST(User, Hash) {
   EXPECT_EQ(hash(User("abc")), hash(User("abc")));
 }
 
-}  // namespace auth
+}  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 2 - 2
Firestore/core/test/unit/local/leveldb_mutation_queue_test.cc

@@ -21,7 +21,7 @@
 
 #include "Firestore/Protos/nanopb/firestore/local/mutation.nanopb.h"
 #include "Firestore/Protos/nanopb/google/protobuf/empty.nanopb.h"
-#include "Firestore/core/src/auth/user.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/leveldb_key.h"
 #include "Firestore/core/src/local/leveldb_persistence.h"
 #include "Firestore/core/src/local/reference_set.h"
@@ -42,7 +42,7 @@ namespace firestore {
 namespace local {
 namespace {
 
-using auth::User;
+using credentials::User;
 using leveldb::DB;
 using leveldb::Slice;
 using leveldb::Status;

+ 2 - 2
Firestore/core/test/unit/local/local_store_test.cc

@@ -20,10 +20,10 @@
 #include <vector>
 
 #include "Firestore/core/include/firebase/firestore/timestamp.h"
-#include "Firestore/core/src/auth/user.h"
 #include "Firestore/core/src/bundle/bundle_metadata.h"
 #include "Firestore/core/src/bundle/named_query.h"
 #include "Firestore/core/src/core/field_filter.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/local_view_changes.h"
 #include "Firestore/core/src/local/local_write_result.h"
 #include "Firestore/core/src/local/persistence.h"
@@ -48,9 +48,9 @@ namespace firestore {
 namespace local {
 namespace {
 
-using auth::User;
 using bundle::BundleMetadata;
 using bundle::NamedQuery;
+using credentials::User;
 using local::QueryResult;
 using model::Document;
 using model::DocumentKey;

+ 2 - 2
Firestore/core/test/unit/local/lru_garbage_collector_test.cc

@@ -22,8 +22,8 @@
 #include <vector>
 
 #include "Firestore/core/include/firebase/firestore/timestamp.h"
-#include "Firestore/core/src/auth/user.h"
 #include "Firestore/core/src/core/query.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/lru_garbage_collector.h"
 #include "Firestore/core/src/local/mutation_queue.h"
 #include "Firestore/core/src/local/persistence.h"
@@ -48,7 +48,7 @@ namespace firebase {
 namespace firestore {
 namespace local {
 
-using auth::User;
+using credentials::User;
 using model::DocumentKey;
 using model::DocumentKeyHash;
 using model::DocumentKeySet;

+ 2 - 2
Firestore/core/test/unit/local/lru_garbage_collector_test.h

@@ -20,7 +20,7 @@
 #include <memory>
 #include <unordered_map>
 
-#include "Firestore/core/src/auth/user.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/reference_set.h"
 #include "Firestore/core/src/local/target_data.h"
 #include "Firestore/core/src/model/object_value.h"
@@ -212,7 +212,7 @@ class LruGarbageCollectorTest : public ::testing::TestWithParam<FactoryFunc> {
   LruDelegate* lru_delegate_ = nullptr;
   LruGarbageCollector* gc_ = nullptr;
   model::ListenSequenceNumber initial_sequence_number_ = 0;
-  auth::User user_;
+  credentials::User user_;
   ReferenceSet additional_references_;
 };
 

+ 2 - 2
Firestore/core/test/unit/local/mutation_queue_test.cc

@@ -20,8 +20,8 @@
 #include <utility>
 #include <vector>
 
-#include "Firestore/core/src/auth/user.h"
 #include "Firestore/core/src/core/query.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/persistence.h"
 #include "Firestore/core/src/model/document_key.h"
 #include "Firestore/core/src/model/document_key_set.h"
@@ -37,7 +37,7 @@ namespace firebase {
 namespace firestore {
 namespace local {
 
-using auth::User;
+using credentials::User;
 using model::DocumentKey;
 using model::DocumentKeySet;
 using model::kBatchIdUnknown;

+ 2 - 2
Firestore/core/test/unit/local/query_engine_test.cc

@@ -19,9 +19,9 @@
 #include <functional>
 #include <memory>
 
-#include "Firestore/core/src/auth/user.h"
 #include "Firestore/core/src/core/field_filter.h"
 #include "Firestore/core/src/core/view.h"
+#include "Firestore/core/src/credentials/user.h"
 #include "Firestore/core/src/local/local_documents_view.h"
 #include "Firestore/core/src/local/memory_index_manager.h"
 #include "Firestore/core/src/local/memory_persistence.h"
@@ -39,9 +39,9 @@ namespace local {
 
 namespace {
 
-using auth::User;
 using core::View;
 using core::ViewDocumentChanges;
+using credentials::User;
 using local::LocalDocumentsView;
 using local::MemoryIndexManager;
 using local::Persistence;

+ 1 - 1
Firestore/core/test/unit/remote/datastore_test.cc

@@ -51,8 +51,8 @@ namespace remote {
 
 namespace {
 
-using auth::CredentialsProvider;
 using core::DatabaseInfo;
+using credentials::CredentialsProvider;
 using model::DatabaseId;
 using model::Document;
 using nanopb::MakeArray;

+ 4 - 4
Firestore/core/test/unit/remote/fake_credentials_provider.cc

@@ -18,16 +18,16 @@
 
 #include <utility>
 
-#include "Firestore/core/src/auth/empty_credentials_provider.h"
-#include "Firestore/core/src/auth/token.h"
+#include "Firestore/core/src/credentials/auth_token.h"
+#include "Firestore/core/src/credentials/empty_credentials_provider.h"
 #include "Firestore/core/src/util/status.h"
 
 namespace firebase {
 namespace firestore {
 namespace remote {
 
-using auth::EmptyCredentialsProvider;
-using auth::TokenListener;
+using credentials::EmptyCredentialsProvider;
+using credentials::TokenListener;
 
 void FakeCredentialsProvider::GetToken(TokenListener completion) {
   observed_states_.push_back("GetToken");

+ 4 - 4
Firestore/core/test/unit/remote/fake_credentials_provider.h

@@ -20,15 +20,15 @@
 #include <string>
 #include <vector>
 
-#include "Firestore/core/src/auth/empty_credentials_provider.h"
+#include "Firestore/core/src/credentials/empty_credentials_provider.h"
 
 namespace firebase {
 namespace firestore {
 namespace remote {
 
-class FakeCredentialsProvider : public auth::EmptyCredentialsProvider {
+class FakeCredentialsProvider : public credentials::EmptyCredentialsProvider {
  public:
-  void GetToken(auth::TokenListener completion) override;
+  void GetToken(credentials::TokenListener completion) override;
   void InvalidateToken() override;
 
   // `GetToken` will not invoke the completion immediately -- invoke it manually
@@ -47,7 +47,7 @@ class FakeCredentialsProvider : public auth::EmptyCredentialsProvider {
   std::vector<std::string> observed_states_;
   bool fail_get_token_ = false;
   bool delay_get_token_ = false;
-  auth::TokenListener delayed_token_listener_;
+  credentials::TokenListener delayed_token_listener_;
 };
 
 }  // namespace remote

+ 3 - 3
Firestore/core/test/unit/remote/grpc_connection_test.cc

@@ -21,7 +21,7 @@
 #include <utility>
 #include <vector>
 
-#include "Firestore/core/src/auth/token.h"
+#include "Firestore/core/src/credentials/auth_token.h"
 #include "Firestore/core/src/remote/connectivity_monitor.h"
 #include "Firestore/core/src/util/async_queue.h"
 #include "Firestore/core/src/util/status.h"
@@ -35,9 +35,9 @@ namespace firebase {
 namespace firestore {
 namespace remote {
 
-using auth::Token;
-using auth::User;
 using core::DatabaseInfo;
+using credentials::AuthToken;
+using credentials::User;
 using util::AsyncQueue;
 using util::Status;
 using util::StatusOr;

+ 5 - 5
Firestore/core/test/unit/remote/grpc_stream_tester.cc

@@ -33,8 +33,8 @@ namespace firebase {
 namespace firestore {
 namespace remote {
 
-using auth::Token;
-using auth::User;
+using credentials::AuthToken;
+using credentials::User;
 using model::DatabaseId;
 using testutil::ExecutorForTesting;
 using util::AsyncQueue;
@@ -225,16 +225,16 @@ void GrpcStreamTester::Shutdown() {
 
 std::unique_ptr<GrpcStream> GrpcStreamTester::CreateStream(
     GrpcStreamObserver* observer) {
-  return grpc_connection_.CreateStream("", Token{"", User{}}, observer);
+  return grpc_connection_.CreateStream("", AuthToken{"", User{}}, observer);
 }
 
 std::unique_ptr<GrpcStreamingReader> GrpcStreamTester::CreateStreamingReader() {
-  return grpc_connection_.CreateStreamingReader("", Token{"", User{}},
+  return grpc_connection_.CreateStreamingReader("", AuthToken{"", User{}},
                                                 grpc::ByteBuffer{});
 }
 
 std::unique_ptr<GrpcUnaryCall> GrpcStreamTester::CreateUnaryCall() {
-  return grpc_connection_.CreateUnaryCall("", Token{"", User{}},
+  return grpc_connection_.CreateUnaryCall("", AuthToken{"", User{}},
                                           grpc::ByteBuffer{});
 }
 

+ 3 - 3
Firestore/core/test/unit/remote/stream_test.cc

@@ -45,8 +45,8 @@ namespace firestore {
 namespace remote {
 namespace {
 
-using auth::CredentialsProvider;
-using auth::Token;
+using credentials::AuthToken;
+using credentials::CredentialsProvider;
 using util::AsyncQueue;
 using util::StringFormat;
 using util::TimerId;
@@ -84,7 +84,7 @@ class TestStream : public Stream {
 
  private:
   std::unique_ptr<GrpcStream> CreateGrpcStream(GrpcConnection*,
-                                               const Token&) override {
+                                               const AuthToken&) override {
     auto result = tester_->CreateStream(this);
     context_ = result->context();
     return result;