diff --git a/src/Packages/Audience/Runtime/ImmutableAudience.cs b/src/Packages/Audience/Runtime/ImmutableAudience.cs index f346ed710..443936181 100644 --- a/src/Packages/Audience/Runtime/ImmutableAudience.cs +++ b/src/Packages/Audience/Runtime/ImmutableAudience.cs @@ -113,6 +113,13 @@ public static void Init(AudienceConfig config) if (string.IsNullOrEmpty(config.PersistentDataPath)) throw new ArgumentException("PersistentDataPath is required", nameof(config)); + // Normalize casing so dashboards aggregate consistently. The + // DistributionPlatforms constants ship lowercase; a studio that + // passes "Steam" or "STEAM" would otherwise split rows from + // constant-using studios in the same project. + if (!string.IsNullOrEmpty(config.DistributionPlatform)) + config.DistributionPlatform = config.DistributionPlatform.ToLowerInvariant(); + ConsentLevel consentAtInit; Session? sessionToStart; lock (_initLock) diff --git a/src/Packages/Audience/Tests/Runtime/ImmutableAudienceTests.cs b/src/Packages/Audience/Tests/Runtime/ImmutableAudienceTests.cs index 60b2e4cb2..848e0e2fd 100644 --- a/src/Packages/Audience/Tests/Runtime/ImmutableAudienceTests.cs +++ b/src/Packages/Audience/Tests/Runtime/ImmutableAudienceTests.cs @@ -1117,6 +1117,47 @@ public void Init_GameLaunch_IncludesDistributionPlatform() c.Contains("\"game_launch\"") && c.Contains("\"steam\""))); } + [Test] + public void Init_LowercasesDistributionPlatform_WhenCallerPassesMixedCase() + { + var config = MakeConfig(); + config.DistributionPlatform = "Steam"; + ImmutableAudience.Init(config); + + Assert.AreEqual("steam", config.DistributionPlatform, + "Init should lowercase mixed-case DistributionPlatform so dashboards aggregate consistently."); + } + + [Test] + public void Init_LowercasesDistributionPlatform_WhenCallerPassesAllUpperCase() + { + var config = MakeConfig(); + config.DistributionPlatform = "STEAM"; + ImmutableAudience.Init(config); + + Assert.AreEqual("steam", config.DistributionPlatform); + } + + [Test] + public void Init_LeavesDistributionPlatformUnchanged_WhenAlreadyLowercase() + { + var config = MakeConfig(); + config.DistributionPlatform = "steam"; + ImmutableAudience.Init(config); + + Assert.AreEqual("steam", config.DistributionPlatform); + } + + [Test] + public void Init_LeavesDistributionPlatformNull_WhenNotSet() + { + var config = MakeConfig(); + Assert.IsNull(config.DistributionPlatform); + ImmutableAudience.Init(config); + + Assert.IsNull(config.DistributionPlatform); + } + [Test] public void Init_ConsentNone_DoesNotFireGameLaunch() {