From 8c53826e414b7d540142f757c243b3efcf68bbef Mon Sep 17 00:00:00 2001 From: justinchou-google Date: Tue, 1 Apr 2025 21:22:08 +0000 Subject: [PATCH 1/2] deprecate legacy frequency capping schema --- src/api/action-orchestration.ts | 6 +- src/model/auto-prompt-config.ts | 74 ------------------------- src/runtime/auto-prompt-manager-test.js | 5 +- src/runtime/client-config-manager.ts | 14 ----- 4 files changed, 6 insertions(+), 93 deletions(-) diff --git a/src/api/action-orchestration.ts b/src/api/action-orchestration.ts index 32627c5a39..dacd5af977 100644 --- a/src/api/action-orchestration.ts +++ b/src/api/action-orchestration.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import {Duration} from '../model/auto-prompt-config'; import {InterventionType} from './intervention-type'; export interface ActionOrchestration { @@ -53,3 +52,8 @@ export enum RepeatabilityType { interface FrequencyCapConfig { duration?: Duration; } + +interface Duration { + seconds?: number; + nanos?: number; +} diff --git a/src/model/auto-prompt-config.ts b/src/model/auto-prompt-config.ts index f201832f35..7b4c92ec01 100644 --- a/src/model/auto-prompt-config.ts +++ b/src/model/auto-prompt-config.ts @@ -23,17 +23,6 @@ interface AutoPromptConfigParams { impressionBackOffSeconds?: number; maxImpressions?: number; maxImpressionsResultingHideSeconds?: number; - globalFrequencyCapDurationSeconds?: number; - globalFrequencyCapDurationNano?: number; - promptFrequencyCaps?: { - audienceActionType?: string; - frequencyCapDuration?: { - seconds?: number; - nano?: number; - }; - }[]; - anyPromptFrequencyCapDurationSeconds?: number; - anyPromptFrequencyCapDurationNano?: number; } /** @@ -43,7 +32,6 @@ export class AutoPromptConfig { clientDisplayTrigger: ClientDisplayTrigger; explicitDismissalConfig: ExplicitDismissalConfig; impressionConfig: ImpressionConfig; - frequencyCapConfig: FrequencyCapConfig; /** * @param {!AutoPromptConfigParams=} params @@ -57,11 +45,6 @@ export class AutoPromptConfig { impressionBackOffSeconds, maxImpressions, maxImpressionsResultingHideSeconds, - globalFrequencyCapDurationSeconds, - globalFrequencyCapDurationNano, - promptFrequencyCaps, - anyPromptFrequencyCapDurationSeconds, - anyPromptFrequencyCapDurationNano, }: AutoPromptConfigParams) { this.clientDisplayTrigger = new ClientDisplayTrigger( displayDelaySeconds, @@ -77,30 +60,6 @@ export class AutoPromptConfig { maxImpressions, maxImpressionsResultingHideSeconds ); - this.frequencyCapConfig = new FrequencyCapConfig( - new GlobalFrequencyCap( - new Duration( - globalFrequencyCapDurationSeconds, - globalFrequencyCapDurationNano - ) - ), - promptFrequencyCaps?.map( - (promptFrequencyCap) => - new PromptFrequencyCap( - promptFrequencyCap.audienceActionType, - new Duration( - promptFrequencyCap.frequencyCapDuration?.seconds, - promptFrequencyCap.frequencyCapDuration?.nano - ) - ) - ), - new AnyPromptFrequencyCap( - new Duration( - anyPromptFrequencyCapDurationSeconds, - anyPromptFrequencyCapDurationNano - ) - ) - ); } } @@ -135,36 +94,3 @@ export class ImpressionConfig { public readonly maxImpressionsResultingHideSeconds?: number ) {} } - -/** - * Configuration of Prompt Frequency Capping. - */ -export class FrequencyCapConfig { - constructor( - public readonly globalFrequencyCap?: GlobalFrequencyCap, - public readonly promptFrequencyCaps?: PromptFrequencyCap[], - public readonly anyPromptFrequencyCap?: AnyPromptFrequencyCap - ) {} -} - -export class GlobalFrequencyCap { - constructor(public readonly frequencyCapDuration?: Duration) {} -} - -export class PromptFrequencyCap { - constructor( - public readonly audienceActionType?: string, - public readonly frequencyCapDuration?: Duration - ) {} -} - -export class AnyPromptFrequencyCap { - constructor(public readonly frequencyCapDuration?: Duration) {} -} - -export class Duration { - constructor( - public readonly seconds?: number, - public readonly nanos?: number - ) {} -} diff --git a/src/runtime/auto-prompt-manager-test.js b/src/runtime/auto-prompt-manager-test.js index 5a53f33dc3..b00ec990f9 100644 --- a/src/runtime/auto-prompt-manager-test.js +++ b/src/runtime/auto-prompt-manager-test.js @@ -1388,10 +1388,7 @@ describes.realWin('AutoPromptManager', (env) => { }; beforeEach(() => { - autoPromptConfig = new AutoPromptConfig({ - globalFrequencyCapDurationSeconds, - anyPromptFrequencyCapDurationSeconds, - }); + autoPromptConfig = new AutoPromptConfig({}); const uiPredicates = new UiPredicates(/* canDisplayAutoPrompt */ true); const clientConfig = new ClientConfig({ autoPromptConfig, diff --git a/src/runtime/client-config-manager.ts b/src/runtime/client-config-manager.ts index b7dd074133..ad997c308d 100644 --- a/src/runtime/client-config-manager.ts +++ b/src/runtime/client-config-manager.ts @@ -188,20 +188,6 @@ export class ClientConfigManager { maxImpressionsResultingHideSeconds: autoPromptConfigJson.impressionConfig ?.maxImpressionsResultingHideSeconds, - globalFrequencyCapDurationSeconds: - autoPromptConfigJson.frequencyCapConfig?.globalFrequencyCap - ?.frequencyCapDuration?.seconds, - globalFrequencyCapDurationNano: - autoPromptConfigJson.frequencyCapConfig?.globalFrequencyCap - ?.frequencyCapDuration?.nano, - promptFrequencyCaps: - autoPromptConfigJson.frequencyCapConfig?.promptFrequencyCaps, - anyPromptFrequencyCapDurationSeconds: - autoPromptConfigJson.frequencyCapConfig?.anyPromptFrequencyCap - ?.frequencyCapDuration?.seconds, - anyPromptFrequencyCapDurationNano: - autoPromptConfigJson.frequencyCapConfig?.anyPromptFrequencyCap - ?.frequencyCapDuration?.nano, }); } From fd360590a72a567c3e5677883b506a89934c95d9 Mon Sep 17 00:00:00 2001 From: justinchou-google Date: Tue, 1 Apr 2025 21:29:34 +0000 Subject: [PATCH 2/2] restore anypromptfrequencycapconfig --- src/api/action-orchestration.ts | 6 +---- src/model/auto-prompt-config.ts | 31 +++++++++++++++++++++++++ src/runtime/auto-prompt-manager-test.js | 4 +++- src/runtime/client-config-manager.ts | 6 +++++ 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/api/action-orchestration.ts b/src/api/action-orchestration.ts index dacd5af977..32627c5a39 100644 --- a/src/api/action-orchestration.ts +++ b/src/api/action-orchestration.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import {Duration} from '../model/auto-prompt-config'; import {InterventionType} from './intervention-type'; export interface ActionOrchestration { @@ -52,8 +53,3 @@ export enum RepeatabilityType { interface FrequencyCapConfig { duration?: Duration; } - -interface Duration { - seconds?: number; - nanos?: number; -} diff --git a/src/model/auto-prompt-config.ts b/src/model/auto-prompt-config.ts index 7b4c92ec01..477cf2e7e0 100644 --- a/src/model/auto-prompt-config.ts +++ b/src/model/auto-prompt-config.ts @@ -23,6 +23,8 @@ interface AutoPromptConfigParams { impressionBackOffSeconds?: number; maxImpressions?: number; maxImpressionsResultingHideSeconds?: number; + anyPromptFrequencyCapDurationSeconds?: number; + anyPromptFrequencyCapDurationNano?: number; } /** @@ -32,6 +34,7 @@ export class AutoPromptConfig { clientDisplayTrigger: ClientDisplayTrigger; explicitDismissalConfig: ExplicitDismissalConfig; impressionConfig: ImpressionConfig; + frequencyCapConfig: FrequencyCapConfig; /** * @param {!AutoPromptConfigParams=} params @@ -45,6 +48,8 @@ export class AutoPromptConfig { impressionBackOffSeconds, maxImpressions, maxImpressionsResultingHideSeconds, + anyPromptFrequencyCapDurationSeconds, + anyPromptFrequencyCapDurationNano, }: AutoPromptConfigParams) { this.clientDisplayTrigger = new ClientDisplayTrigger( displayDelaySeconds, @@ -60,6 +65,14 @@ export class AutoPromptConfig { maxImpressions, maxImpressionsResultingHideSeconds ); + this.frequencyCapConfig = new FrequencyCapConfig( + new AnyPromptFrequencyCap( + new Duration( + anyPromptFrequencyCapDurationSeconds, + anyPromptFrequencyCapDurationNano + ) + ) + ); } } @@ -94,3 +107,21 @@ export class ImpressionConfig { public readonly maxImpressionsResultingHideSeconds?: number ) {} } + +/** + * Configuration of Prompt Frequency Capping. + */ +export class FrequencyCapConfig { + constructor(public readonly anyPromptFrequencyCap?: AnyPromptFrequencyCap) {} +} + +export class AnyPromptFrequencyCap { + constructor(public readonly frequencyCapDuration?: Duration) {} +} + +export class Duration { + constructor( + public readonly seconds?: number, + public readonly nanos?: number + ) {} +} diff --git a/src/runtime/auto-prompt-manager-test.js b/src/runtime/auto-prompt-manager-test.js index b00ec990f9..0d2a6b930a 100644 --- a/src/runtime/auto-prompt-manager-test.js +++ b/src/runtime/auto-prompt-manager-test.js @@ -1388,7 +1388,9 @@ describes.realWin('AutoPromptManager', (env) => { }; beforeEach(() => { - autoPromptConfig = new AutoPromptConfig({}); + autoPromptConfig = new AutoPromptConfig({ + anyPromptFrequencyCapDurationSeconds, + }); const uiPredicates = new UiPredicates(/* canDisplayAutoPrompt */ true); const clientConfig = new ClientConfig({ autoPromptConfig, diff --git a/src/runtime/client-config-manager.ts b/src/runtime/client-config-manager.ts index ad997c308d..1f4504bbe5 100644 --- a/src/runtime/client-config-manager.ts +++ b/src/runtime/client-config-manager.ts @@ -188,6 +188,12 @@ export class ClientConfigManager { maxImpressionsResultingHideSeconds: autoPromptConfigJson.impressionConfig ?.maxImpressionsResultingHideSeconds, + anyPromptFrequencyCapDurationSeconds: + autoPromptConfigJson.frequencyCapConfig?.anyPromptFrequencyCap + ?.frequencyCapDuration?.seconds, + anyPromptFrequencyCapDurationNano: + autoPromptConfigJson.frequencyCapConfig?.anyPromptFrequencyCap + ?.frequencyCapDuration?.nano, }); }