From 0a84c05d7e2963cd8378be2980aff5e567950b1e Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Fri, 2 Dec 2022 22:33:39 -0800 Subject: [PATCH 01/34] Add test for Analytics SetConsent method. --- .../Assets/Firebase/Sample/Analytics/UIHandler.cs | 15 +++++++++++++++ .../Sample/Analytics/UIHandlerAutomated.cs | 7 +++++++ 2 files changed, 22 insertions(+) diff --git a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs index 999b2a23..05f64417 100644 --- a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs +++ b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs @@ -121,6 +121,18 @@ public void ResetAnalyticsData() { FirebaseAnalytics.ResetAnalyticsData(); } + public void AnalyticsSetConsent() { + FirebaseAnalytics.SetConsent(new { + { ConsentType.AnalyticsStorage, ConsentStatus.Denied }, + { ConsentType.AdStorage, ConsentStatus.Denied } + }); + FirebaseAnalytics.SetConsent(new {}); + FirebaseAnalytics.SetConsent(new { + { ConsentType.AnalyticsStorage, ConsentStatus.Granted }, + { ConsentType.AdStorage, ConsentStatus.Granted } + }); + } + // Get the current app instance ID. public Task DisplayAnalyticsInstanceId() { return FirebaseAnalytics.GetAnalyticsInstanceIdAsync().ContinueWithOnMainThread(task => { @@ -192,6 +204,9 @@ void GUIDisplayControls() { if (GUILayout.Button("Show Analytics Instance ID")) { DisplayAnalyticsInstanceId(); } + if (GUILayout.Button("Test SetConsent")) { + AnalyticsSetConsent(); + } GUILayout.EndVertical(); GUILayout.EndScrollView(); } diff --git a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandlerAutomated.cs b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandlerAutomated.cs index 6db2bb57..ab78d7b4 100644 --- a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandlerAutomated.cs +++ b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandlerAutomated.cs @@ -30,6 +30,7 @@ public override void Start() { TestAnalyticsScoreDoesNotThrow, TestAnalyticsGroupJoinDoesNotThrow, TestAnalyticsLevelUpDoesNotThrow, + TestAnalyticsSetConsentDoesNotThrow, TestInstanceIdChangeAfterReset, TestResetAnalyticsData, // Temporarily disabled until this test is deflaked. b/143603151 @@ -87,6 +88,12 @@ Task TestAnalyticsLevelUpDoesNotThrow() { }); } + Task TestAnalyticsSetConsentDoesNotThrow() { + return WrapWithTask(() => { + base.AnalyticsSetConsent(); + return true; + }); + } Task TestCheckAndFixDependenciesInvalidOperation() { // Only run the test on Android, as CheckAndFixDependenciesAsync is short // lived on other platforms, and thus could finish before the extra call. From 7c3adde333bb5eee12a3fa7746ea0fdabb841c01 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Mon, 5 Dec 2022 15:19:12 -0800 Subject: [PATCH 02/34] Add std_map swig include. --- analytics/src/swig/analytics.i | 2 ++ 1 file changed, 2 insertions(+) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 13b8bd8e..0079b8ec 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -21,6 +21,8 @@ %{#include "app/src/export_fix.h"%} #endif +%include "std_map.i" + %pragma(csharp) moduleclassmodifiers="public sealed class" %pragma(csharp) modulecode=%{ // Hold a reference to the default app when methods from this module are From 03b34635fa94859957dd30e537b825321fade81e Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Mon, 5 Dec 2022 15:38:24 -0800 Subject: [PATCH 03/34] Update SWIG wrapper to create SetConsent(IDictionary) --- analytics/src/swig/analytics.i | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 0079b8ec..fac64b2b 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -21,8 +21,6 @@ %{#include "app/src/export_fix.h"%} #endif -%include "std_map.i" - %pragma(csharp) moduleclassmodifiers="public sealed class" %pragma(csharp) modulecode=%{ // Hold a reference to the default app when methods from this module are @@ -280,5 +278,21 @@ class ParameterCopy : private firebase::analytics::Parameter { } %} +%template(ConsentMap) std::map; +%rename(SetConsentInternal) SetConsent; +%csmethodmodifiers firebase::analytics::SetConsent(const std::map &) "internal"; + +%pragma(csharp) modulecode=%{ + /// @brief Sets the applicable end user consent state (e.g., for device /// identifiers) for this app on this device. /// /// Use the consent map to specify individual consent type values. Settings are /// persisted across app sessions. By default consent types are set to + /// "granted". +public static void SetConsent(System.Collections.Generic.IDictionary consentSettings) { + ConsentMap consentSettingsMap = new ConsentMap(); + foreach(var kv in consentSettings.toArray()) { + consentSettingsMap[kv.Key] = kv.Value; + } + SetConsentInternal(consentSettingsMap); + } +%} + %include "analytics/src/include/firebase/analytics.h" From 65bd5704f847e406f1ac67764369270207299f08 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Mon, 5 Dec 2022 16:03:33 -0800 Subject: [PATCH 04/34] Add std_map.i back in. --- analytics/src/swig/analytics.i | 2 ++ 1 file changed, 2 insertions(+) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index fac64b2b..75dd6b43 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -21,6 +21,8 @@ %{#include "app/src/export_fix.h"%} #endif +%include "std_map.i" + %pragma(csharp) moduleclassmodifiers="public sealed class" %pragma(csharp) modulecode=%{ // Hold a reference to the default app when methods from this module are From cbf8839052ff762f2f55694890bdb95554773a38 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Tue, 6 Dec 2022 11:18:24 -0800 Subject: [PATCH 05/34] Switch to regular dictionary. --- analytics/src/swig/analytics.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 75dd6b43..db1c6a9c 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -287,7 +287,7 @@ class ParameterCopy : private firebase::analytics::Parameter { %pragma(csharp) modulecode=%{ /// @brief Sets the applicable end user consent state (e.g., for device /// identifiers) for this app on this device. /// /// Use the consent map to specify individual consent type values. Settings are /// persisted across app sessions. By default consent types are set to /// "granted". -public static void SetConsent(System.Collections.Generic.IDictionary consentSettings) { +public static void SetConsent(System.Collections.Dictionary consentSettings) { ConsentMap consentSettingsMap = new ConsentMap(); foreach(var kv in consentSettings.toArray()) { consentSettingsMap[kv.Key] = kv.Value; From ff417175643a967992e167938d6b58256c284d9a Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Tue, 6 Dec 2022 11:56:21 -0800 Subject: [PATCH 06/34] Add source upload for debugging. --- .github/workflows/build_linux.yml | 7 +++++++ analytics/src/swig/analytics.i | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index 677bb258..69cd6e67 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -120,6 +120,13 @@ jobs: name: linux_unity path: linux_unity/*Linux.zip + - name: Upload Source + uses: actions/upload-artifact@v3 + if: ${{ always() }} + with: + name: linux_source + path: linux_unity + - name: Upload Documentation Sources uses: actions/upload-artifact@v3 with: diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index db1c6a9c..083dbcde 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -287,7 +287,7 @@ class ParameterCopy : private firebase::analytics::Parameter { %pragma(csharp) modulecode=%{ /// @brief Sets the applicable end user consent state (e.g., for device /// identifiers) for this app on this device. /// /// Use the consent map to specify individual consent type values. Settings are /// persisted across app sessions. By default consent types are set to /// "granted". -public static void SetConsent(System.Collections.Dictionary consentSettings) { +public static void SetConsent(System.Collections.IDictionary consentSettings) { ConsentMap consentSettingsMap = new ConsentMap(); foreach(var kv in consentSettings.toArray()) { consentSettingsMap[kv.Key] = kv.Value; From 3a7faaf06a844fc650b0ca1ac2c70155477a334e Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Tue, 6 Dec 2022 15:05:32 -0800 Subject: [PATCH 07/34] Set parameter type back --- analytics/src/swig/analytics.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 083dbcde..75dd6b43 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -287,7 +287,7 @@ class ParameterCopy : private firebase::analytics::Parameter { %pragma(csharp) modulecode=%{ /// @brief Sets the applicable end user consent state (e.g., for device /// identifiers) for this app on this device. /// /// Use the consent map to specify individual consent type values. Settings are /// persisted across app sessions. By default consent types are set to /// "granted". -public static void SetConsent(System.Collections.IDictionary consentSettings) { +public static void SetConsent(System.Collections.Generic.IDictionary consentSettings) { ConsentMap consentSettingsMap = new ConsentMap(); foreach(var kv in consentSettings.toArray()) { consentSettingsMap[kv.Key] = kv.Value; From dc9ba37550e82598b7a6a4ee2d21e40fd3a74d0b Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Tue, 6 Dec 2022 15:12:10 -0800 Subject: [PATCH 08/34] Fix spacing and add internal class specifier. --- analytics/src/swig/analytics.i | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 75dd6b43..7304a4c1 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -280,13 +280,18 @@ class ParameterCopy : private firebase::analytics::Parameter { } %} +%typemap(csclassmodifiers) std::map "internal class" %template(ConsentMap) std::map; %rename(SetConsentInternal) SetConsent; %csmethodmodifiers firebase::analytics::SetConsent(const std::map &) "internal"; %pragma(csharp) modulecode=%{ - /// @brief Sets the applicable end user consent state (e.g., for device /// identifiers) for this app on this device. /// /// Use the consent map to specify individual consent type values. Settings are /// persisted across app sessions. By default consent types are set to - /// "granted". +/// @brief Sets the applicable end user consent state (e.g., for device +/// identifiers) for this app on this device. +/// +/// Use the consent map to specify individual consent type values. Settings are +/// persisted across app sessions. By default consent types are set to +/// "granted". public static void SetConsent(System.Collections.Generic.IDictionary consentSettings) { ConsentMap consentSettingsMap = new ConsentMap(); foreach(var kv in consentSettings.toArray()) { From 61784ab8ecd6f019f969f80c1e63984a421a9d9c Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Tue, 6 Dec 2022 15:19:03 -0800 Subject: [PATCH 09/34] Add more wrapping --- analytics/src/swig/analytics.i | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 7304a4c1..c6ef95de 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -233,6 +233,7 @@ class ParameterCopy : private firebase::analytics::Parameter { // Initialize / Terminate implicitly called when App is created / destroyed. %ignore Initialize; %ignore Terminate; + } // namespace analytics } // namespace firebase @@ -284,6 +285,7 @@ class ParameterCopy : private firebase::analytics::Parameter { %template(ConsentMap) std::map; %rename(SetConsentInternal) SetConsent; %csmethodmodifiers firebase::analytics::SetConsent(const std::map &) "internal"; +%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map *) "internal"; %pragma(csharp) modulecode=%{ /// @brief Sets the applicable end user consent state (e.g., for device @@ -297,9 +299,20 @@ public static void SetConsent(System.Collections.Generic.IDictionary *ptr) + SetConsentInternal(*ptr); + } +%} + +} // namespace analytics +} // namespace firebase From fc3904ed89657e256bc72c96534b4c9361245408 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Tue, 6 Dec 2022 16:43:58 -0800 Subject: [PATCH 10/34] Fix --- analytics/src/swig/analytics.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index c6ef95de..bebd3dce 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -310,7 +310,7 @@ namespace analytics { %{ void SetConsentByPtr(std::map *ptr) - SetConsentInternal(*ptr); + SetConsent(*ptr); } %} From a46137d78ea80d868baedd98bb35f2028c3da9aa Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Tue, 6 Dec 2022 16:58:55 -0800 Subject: [PATCH 11/34] Fix braces --- analytics/src/swig/analytics.i | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index bebd3dce..1dfc1f2f 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -309,8 +309,8 @@ namespace firebase { namespace analytics { %{ - void SetConsentByPtr(std::map *ptr) - SetConsent(*ptr); + void SetConsentByPtr(std::map *ptr) { + SetConsentInternal(*ptr); } %} From 363891341825ae369e8e9b7f6b359ae8f42de210 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Tue, 6 Dec 2022 19:55:22 -0800 Subject: [PATCH 12/34] Fix --- analytics/src/swig/analytics.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 1dfc1f2f..b275edef 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -310,7 +310,7 @@ namespace analytics { %{ void SetConsentByPtr(std::map *ptr) { - SetConsentInternal(*ptr); + SetConsent(*ptr); } %} From d492bf8e788d4a4fea7e86bef04acc849d1628b7 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Wed, 7 Dec 2022 00:10:56 -0800 Subject: [PATCH 13/34] Remove unneeded SetConsentInternal method. --- analytics/src/swig/analytics.i | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index b275edef..6b4b1535 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -283,18 +283,17 @@ class ParameterCopy : private firebase::analytics::Parameter { %typemap(csclassmodifiers) std::map "internal class" %template(ConsentMap) std::map; -%rename(SetConsentInternal) SetConsent; -%csmethodmodifiers firebase::analytics::SetConsent(const std::map &) "internal"; +%ignore SetConsent; %csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map *) "internal"; %pragma(csharp) modulecode=%{ -/// @brief Sets the applicable end user consent state (e.g., for device -/// identifiers) for this app on this device. -/// -/// Use the consent map to specify individual consent type values. Settings are -/// persisted across app sessions. By default consent types are set to -/// "granted". -public static void SetConsent(System.Collections.Generic.IDictionary consentSettings) { + /// @brief Sets the applicable end user consent state (e.g., for device + /// identifiers) for this app on this device. + /// + /// Use the consent map to specify individual consent type values. Settings are + /// persisted across app sessions. By default consent types are set to + /// "granted". + public static void SetConsent(System.Collections.Generic.IDictionary consentSettings) { ConsentMap consentSettingsMap = new ConsentMap(); foreach(var kv in consentSettings.toArray()) { consentSettingsMap[kv.Key] = kv.Value; From bdf047984348c204bb6d1d232a3ca70800655d5e Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Wed, 7 Dec 2022 00:14:03 -0800 Subject: [PATCH 14/34] Fix namespace --- analytics/src/swig/analytics.i | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 6b4b1535..5c29c50b 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -233,6 +233,8 @@ class ParameterCopy : private firebase::analytics::Parameter { // Initialize / Terminate implicitly called when App is created / destroyed. %ignore Initialize; %ignore Terminate; +// SetConsent handled via SetConsentByPtr below. +%ignore SetConsent; } // namespace analytics } // namespace firebase @@ -283,7 +285,6 @@ class ParameterCopy : private firebase::analytics::Parameter { %typemap(csclassmodifiers) std::map "internal class" %template(ConsentMap) std::map; -%ignore SetConsent; %csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map *) "internal"; %pragma(csharp) modulecode=%{ From 836ae9411b77f32b7fca33b3d2b201ee9352a28d Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 11:24:23 -0800 Subject: [PATCH 15/34] Fix --- analytics/src/swig/analytics.i | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 5c29c50b..102a6740 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -234,7 +234,10 @@ class ParameterCopy : private firebase::analytics::Parameter { %ignore Initialize; %ignore Terminate; // SetConsent handled via SetConsentByPtr below. -%ignore SetConsent; +%rename(SetConsentInternal) SetConsent; +%typemap(csclassmodifiers) std::map "internal class" +%template(ConsentMap) std::map; +%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map *) "internal"; } // namespace analytics } // namespace firebase @@ -283,10 +286,6 @@ class ParameterCopy : private firebase::analytics::Parameter { } %} -%typemap(csclassmodifiers) std::map "internal class" -%template(ConsentMap) std::map; -%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map *) "internal"; - %pragma(csharp) modulecode=%{ /// @brief Sets the applicable end user consent state (e.g., for device /// identifiers) for this app on this device. @@ -309,7 +308,7 @@ namespace firebase { namespace analytics { %{ - void SetConsentByPtr(std::map *ptr) { + void SetConsentByPtr(std::map *ptr) { SetConsent(*ptr); } %} From 3c417a5558db5cde1e3354e7e955115ee9e7cd15 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 16:55:45 -0800 Subject: [PATCH 16/34] Specify namespace --- analytics/src/swig/analytics.i | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 102a6740..e749088d 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -235,9 +235,9 @@ class ParameterCopy : private firebase::analytics::Parameter { %ignore Terminate; // SetConsent handled via SetConsentByPtr below. %rename(SetConsentInternal) SetConsent; -%typemap(csclassmodifiers) std::map "internal class" -%template(ConsentMap) std::map; -%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map *) "internal"; +%typemap(csclassmodifiers) std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> "internal class" +%template(ConsentMap) std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus>; +%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> *) "internal"; } // namespace analytics } // namespace firebase @@ -308,7 +308,7 @@ namespace firebase { namespace analytics { %{ - void SetConsentByPtr(std::map *ptr) { + void SetConsentByPtr(std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> *ptr) { SetConsent(*ptr); } %} From 499b9e217cd7dbeeef20d5ac9e594d4d7c2019eb Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 18:00:39 -0800 Subject: [PATCH 17/34] swig --- analytics/src/swig/analytics.i | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index e749088d..fc73959f 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -64,6 +64,9 @@ %include "stdint.i" +%typemap(csclassmodifiers) std::map "internal class" +%template(ConsentMap) std::map; + namespace firebase { namespace analytics { @@ -235,8 +238,6 @@ class ParameterCopy : private firebase::analytics::Parameter { %ignore Terminate; // SetConsent handled via SetConsentByPtr below. %rename(SetConsentInternal) SetConsent; -%typemap(csclassmodifiers) std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> "internal class" -%template(ConsentMap) std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus>; %csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> *) "internal"; } // namespace analytics From 6161e5dcadca0c569c6ce7681f35d47315e2f75a Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 18:18:05 -0800 Subject: [PATCH 18/34] Namespace --- analytics/src/swig/analytics.i | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index fc73959f..29ef1521 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -64,8 +64,12 @@ %include "stdint.i" -%typemap(csclassmodifiers) std::map "internal class" -%template(ConsentMap) std::map; +%{ + using firebase::analytics::ConsentType; + using firebase::analytics::ConsentStatus; +%} +%typemap(csclassmodifiers) std::map "internal class" +%template(ConsentMap) std::map; namespace firebase { namespace analytics { From f10d5ef4c5fe11019882937626cafbc109c2ce4d Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 18:28:15 -0800 Subject: [PATCH 19/34] Remove extraneous toArray --- analytics/src/swig/analytics.i | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 29ef1521..367644d1 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -241,7 +241,8 @@ class ParameterCopy : private firebase::analytics::Parameter { %ignore Initialize; %ignore Terminate; // SetConsent handled via SetConsentByPtr below. -%rename(SetConsentInternal) SetConsent; +// %rename(SetConsentInternal) SetConsent; +%ignore SetConsent; %csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> *) "internal"; } // namespace analytics @@ -300,7 +301,7 @@ class ParameterCopy : private firebase::analytics::Parameter { /// "granted". public static void SetConsent(System.Collections.Generic.IDictionary consentSettings) { ConsentMap consentSettingsMap = new ConsentMap(); - foreach(var kv in consentSettings.toArray()) { + foreach(var kv in consentSettings) { consentSettingsMap[kv.Key] = kv.Value; } SetConsentByPtr(consentSettingsMap); From 79b211850285508d40e4c7ecbf822159f1db57e2 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 19:16:31 -0800 Subject: [PATCH 20/34] Zip up the source first --- .github/workflows/build_linux.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index 69cd6e67..b2d5604a 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -120,12 +120,17 @@ jobs: name: linux_unity path: linux_unity/*Linux.zip + - name: Zip source + shell: bash + if: ${{ always() }} + run: tar -cvzf linux_unity.tgz linux_unity + - name: Upload Source uses: actions/upload-artifact@v3 if: ${{ always() }} with: - name: linux_source - path: linux_unity + name: linux_unity + path: linux_unity.tgz - name: Upload Documentation Sources uses: actions/upload-artifact@v3 From 9a420eecdd046aa07ce1347c2ff071b9797fe56a Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 19:45:38 -0800 Subject: [PATCH 21/34] Reorder. --- analytics/src/swig/analytics.i | 49 +++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 367644d1..8627c3a9 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -47,6 +47,11 @@ #include "analytics/src/include/firebase/analytics/user_property_names.h" %} +%rename(kConsentTypeAdStorage) firebase::analytics::kConsentTypeAdStorage; +%rename(kConsentTypeAnalyticsStorage) firebase::analytics::kConsentTypeAnalyticsStorage; +%rename(kConsentStatusGranted) firebase::analytics::kConsentStatusGranted; +%rename(kConsentStatusDenied) firebase::analytics::kConsentStatusDenied; + // Constant renaming must happen before SWIG_CONSTANT_HEADERS is included. %rename(kParameterAchievementId) firebase::analytics::kParameterAchievementID; %rename(kParameterGroupId) firebase::analytics::kParameterGroupID; @@ -64,13 +69,6 @@ %include "stdint.i" -%{ - using firebase::analytics::ConsentType; - using firebase::analytics::ConsentStatus; -%} -%typemap(csclassmodifiers) std::map "internal class" -%template(ConsentMap) std::map; - namespace firebase { namespace analytics { @@ -243,7 +241,6 @@ class ParameterCopy : private firebase::analytics::Parameter { // SetConsent handled via SetConsentByPtr below. // %rename(SetConsentInternal) SetConsent; %ignore SetConsent; -%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> *) "internal"; } // namespace analytics } // namespace firebase @@ -292,6 +289,28 @@ class ParameterCopy : private firebase::analytics::Parameter { } %} +%include "analytics/src/include/firebase/analytics.h" + +%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> *) "intnamespace firebase { +namespace analytics { + +ernal"; +%{ + void SetConsentByPtr(std::map *ptr) { + SetConsent(*ptr); + } +%} + +} // namespace analytics +} // namespace firebase + +%{ + using firebase::analytics::ConsentType; + using firebase::analytics::ConsentStatus; +%} +%typemap(csclassmodifiers) std::map "internal class" +%template(ConsentMap) std::map; + %pragma(csharp) modulecode=%{ /// @brief Sets the applicable end user consent state (e.g., for device /// identifiers) for this app on this device. @@ -307,17 +326,3 @@ class ParameterCopy : private firebase::analytics::Parameter { SetConsentByPtr(consentSettingsMap); } %} - - -%include "analytics/src/include/firebase/analytics.h" -namespace firebase { -namespace analytics { - -%{ - void SetConsentByPtr(std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> *ptr) { - SetConsent(*ptr); - } -%} - -} // namespace analytics -} // namespace firebase From 824c638851829d2664e8a5df836d98cf38d6ac57 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 19:54:27 -0800 Subject: [PATCH 22/34] Fix braces --- analytics/src/swig/analytics.i | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 8627c3a9..3ed5bf1a 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -291,10 +291,11 @@ class ParameterCopy : private firebase::analytics::Parameter { %include "analytics/src/include/firebase/analytics.h" -%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> *) "intnamespace firebase { +%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> *) "internal"; + +namespace firebase { namespace analytics { -ernal"; %{ void SetConsentByPtr(std::map *ptr) { SetConsent(*ptr); From 5e8987a718cf3a23edca89a7a84159ec95290dcc Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 20:06:03 -0800 Subject: [PATCH 23/34] Add missing namespace --- analytics/src/swig/analytics.i | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 3ed5bf1a..ab4901e9 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -297,8 +297,8 @@ namespace firebase { namespace analytics { %{ - void SetConsentByPtr(std::map *ptr) { - SetConsent(*ptr); + void SetConsentByPtr(std::map *ptr) { + firebase::analytics::SetConsent(*ptr); } %} @@ -309,6 +309,7 @@ namespace analytics { using firebase::analytics::ConsentType; using firebase::analytics::ConsentStatus; %} + %typemap(csclassmodifiers) std::map "internal class" %template(ConsentMap) std::map; From f323ebc0ad98eb1177f1e3de05e1618169726fc5 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 20:20:57 -0800 Subject: [PATCH 24/34] Add enum tags --- analytics/src/swig/analytics.i | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index ab4901e9..a4d0cf45 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -291,8 +291,6 @@ class ParameterCopy : private firebase::analytics::Parameter { %include "analytics/src/include/firebase/analytics.h" -%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map<::firebase::analytics::ConsentType, ::firebase::analytics::ConsentStatus> *) "internal"; - namespace firebase { namespace analytics { @@ -305,11 +303,18 @@ namespace analytics { } // namespace analytics } // namespace firebase +%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map *) "internal"; + %{ using firebase::analytics::ConsentType; using firebase::analytics::ConsentStatus; %} +%rename(ConsentType) firebase::analytics::ConsentType; +%rename(ConsentStatus) firebase::analytics::ConsentStatus; +%typemap(csclassmodifiers) firebase::analytics::ConsentType "enum"; +%typemap(csclassmodifiers) firebase::analytics::ConsentStatus "enum"; + %typemap(csclassmodifiers) std::map "internal class" %template(ConsentMap) std::map; From 77703c0b42326823a878f82cc291a8ccf9ec0dad Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 20:24:14 -0800 Subject: [PATCH 25/34] Tweak namespaces --- analytics/src/swig/analytics.i | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index a4d0cf45..7a2e8988 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -291,23 +291,25 @@ class ParameterCopy : private firebase::analytics::Parameter { %include "analytics/src/include/firebase/analytics.h" +%{ namespace firebase { namespace analytics { -%{ void SetConsentByPtr(std::map *ptr) { firebase::analytics::SetConsent(*ptr); } -%} } // namespace analytics } // namespace firebase +using firebase::analytics::ConsentType; +using firebase::analytics::ConsentStatus; +%} + + %csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map *) "internal"; %{ - using firebase::analytics::ConsentType; - using firebase::analytics::ConsentStatus; %} %rename(ConsentType) firebase::analytics::ConsentType; From 0520d4c317803a4879659048be38ba67a24e4ea5 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 8 Dec 2022 20:33:37 -0800 Subject: [PATCH 26/34] Move up --- analytics/src/swig/analytics.i | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 7a2e8988..8eac9715 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -291,6 +291,8 @@ class ParameterCopy : private firebase::analytics::Parameter { %include "analytics/src/include/firebase/analytics.h" +%rename(ConsentType) firebase::analytics::ConsentType; +%rename(ConsentStatus) firebase::analytics::ConsentStatus; %{ namespace firebase { namespace analytics { @@ -312,8 +314,6 @@ using firebase::analytics::ConsentStatus; %{ %} -%rename(ConsentType) firebase::analytics::ConsentType; -%rename(ConsentStatus) firebase::analytics::ConsentStatus; %typemap(csclassmodifiers) firebase::analytics::ConsentType "enum"; %typemap(csclassmodifiers) firebase::analytics::ConsentStatus "enum"; From b39cfadedecc2a7c53c858aa0b283c525b4f7e06 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Fri, 9 Dec 2022 10:29:51 -0800 Subject: [PATCH 27/34] Add namespace --- analytics/src/swig/analytics.i | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 8eac9715..ed389837 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -320,7 +320,13 @@ using firebase::analytics::ConsentStatus; %typemap(csclassmodifiers) std::map "internal class" %template(ConsentMap) std::map; +namespace firebase { +namespace analytics { + %pragma(csharp) modulecode=%{ + //using Firebase.Analytics.ConsentType; + //using Firebase.Analytics.ConsentStatus; + //using Firebase.Analytics.SetConsentByPtr; /// @brief Sets the applicable end user consent state (e.g., for device /// identifiers) for this app on this device. /// @@ -335,3 +341,6 @@ using firebase::analytics::ConsentStatus; SetConsentByPtr(consentSettingsMap); } %} + +} // namespace analytics +} // namespace firebase From f34e18185da7ff273da734a20997236d6e2cb169 Mon Sep 17 00:00:00 2001 From: a-maurice Date: Tue, 13 Dec 2022 16:03:30 -0800 Subject: [PATCH 28/34] Fix up the ConsentMap, and the Internal function --- analytics/src/swig/analytics.i | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index ed389837..406d4af1 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -238,8 +238,7 @@ class ParameterCopy : private firebase::analytics::Parameter { // Initialize / Terminate implicitly called when App is created / destroyed. %ignore Initialize; %ignore Terminate; -// SetConsent handled via SetConsentByPtr below. -// %rename(SetConsentInternal) SetConsent; +// SetConsent handled via SetConsentInternal below. %ignore SetConsent; } // namespace analytics @@ -293,32 +292,26 @@ class ParameterCopy : private firebase::analytics::Parameter { %rename(ConsentType) firebase::analytics::ConsentType; %rename(ConsentStatus) firebase::analytics::ConsentStatus; +// Add a swig C++ function to call into the Analytics C++ implementation. %{ namespace firebase { namespace analytics { - void SetConsentByPtr(std::map *ptr) { + void SetConsentInternal(std::map *ptr) { firebase::analytics::SetConsent(*ptr); } } // namespace analytics } // namespace firebase - -using firebase::analytics::ConsentType; -using firebase::analytics::ConsentStatus; -%} - - -%csmethodmodifiers firebase::analytics::SetConsentByPtr(std::map *) "internal"; - -%{ %} +// The definition on the C++ side, so that swig is aware of the function's existence. +void SetConsentInternal(std::map *ptr); %typemap(csclassmodifiers) firebase::analytics::ConsentType "enum"; %typemap(csclassmodifiers) firebase::analytics::ConsentStatus "enum"; -%typemap(csclassmodifiers) std::map "internal class" -%template(ConsentMap) std::map; +%typemap(csclassmodifiers) std::map "internal class" +%template(ConsentMap) std::map; namespace firebase { namespace analytics { @@ -338,7 +331,7 @@ namespace analytics { foreach(var kv in consentSettings) { consentSettingsMap[kv.Key] = kv.Value; } - SetConsentByPtr(consentSettingsMap); + SetConsentInternal(consentSettingsMap); } %} From 5b3f4f8d21353d93b2576584747f226a5e5f6ef8 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Tue, 13 Dec 2022 17:41:29 -0800 Subject: [PATCH 29/34] Revert workflow. --- .github/workflows/build_linux.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index b2d5604a..677bb258 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -120,18 +120,6 @@ jobs: name: linux_unity path: linux_unity/*Linux.zip - - name: Zip source - shell: bash - if: ${{ always() }} - run: tar -cvzf linux_unity.tgz linux_unity - - - name: Upload Source - uses: actions/upload-artifact@v3 - if: ${{ always() }} - with: - name: linux_unity - path: linux_unity.tgz - - name: Upload Documentation Sources uses: actions/upload-artifact@v3 with: From 01f17c929e22ffb69893776f37379ecc99caa033 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 15 Dec 2022 13:12:38 -0800 Subject: [PATCH 30/34] Fix initialization --- .../testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs index 05f64417..4f77be3b 100644 --- a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs +++ b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs @@ -122,12 +122,14 @@ public void ResetAnalyticsData() { } public void AnalyticsSetConsent() { - FirebaseAnalytics.SetConsent(new { + FirebaseAnalytics.SetConsent(new Dictionary() + { { ConsentType.AnalyticsStorage, ConsentStatus.Denied }, { ConsentType.AdStorage, ConsentStatus.Denied } }); - FirebaseAnalytics.SetConsent(new {}); - FirebaseAnalytics.SetConsent(new { + FirebaseAnalytics.SetConsent(new Dictionary()); + FirebaseAnalytics.SetConsent(new Dictionary() + { { ConsentType.AnalyticsStorage, ConsentStatus.Granted }, { ConsentType.AdStorage, ConsentStatus.Granted } }); From 6997adcbffb37221fa097726ca29d1b4adfc5e14 Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 15 Dec 2022 14:27:31 -0800 Subject: [PATCH 31/34] Add using declaration --- analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs index 4f77be3b..a2f8293e 100644 --- a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs +++ b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs @@ -17,6 +17,7 @@ namespace Firebase.Sample.Analytics { using Firebase.Analytics; using Firebase.Extensions; using System; + using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; From 9a74cb478780e627bbf29b8349ed25c98ec758dc Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 15 Dec 2022 15:40:54 -0800 Subject: [PATCH 32/34] Fix using statement --- analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs index a2f8293e..fdbd352a 100644 --- a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs +++ b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs @@ -17,7 +17,7 @@ namespace Firebase.Sample.Analytics { using Firebase.Analytics; using Firebase.Extensions; using System; - using System.Collections.Generic; + using System.Collections.Generic.Dictionary; using System.Threading.Tasks; using UnityEngine; From d119987c5e08a785ce9991ed72f1d402cc92956d Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Thu, 15 Dec 2022 15:41:51 -0800 Subject: [PATCH 33/34] Revert "Fix using statement" This reverts commit 9a74cb478780e627bbf29b8349ed25c98ec758dc. --- analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs index fdbd352a..a2f8293e 100644 --- a/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs +++ b/analytics/testapp/Assets/Firebase/Sample/Analytics/UIHandler.cs @@ -17,7 +17,7 @@ namespace Firebase.Sample.Analytics { using Firebase.Analytics; using Firebase.Extensions; using System; - using System.Collections.Generic.Dictionary; + using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; From 849d53c2b585d345bc07f6fd787dc9868f9b3cac Mon Sep 17 00:00:00 2001 From: Jon Simantov Date: Fri, 16 Dec 2022 16:11:37 -0800 Subject: [PATCH 34/34] Remove commented out using statements --- analytics/src/swig/analytics.i | 3 --- 1 file changed, 3 deletions(-) diff --git a/analytics/src/swig/analytics.i b/analytics/src/swig/analytics.i index 406d4af1..f49be9cd 100644 --- a/analytics/src/swig/analytics.i +++ b/analytics/src/swig/analytics.i @@ -317,9 +317,6 @@ namespace firebase { namespace analytics { %pragma(csharp) modulecode=%{ - //using Firebase.Analytics.ConsentType; - //using Firebase.Analytics.ConsentStatus; - //using Firebase.Analytics.SetConsentByPtr; /// @brief Sets the applicable end user consent state (e.g., for device /// identifiers) for this app on this device. ///