Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
76c5626
Prevent duplicate GPT slot requests
ChristianPavilonis Jul 24, 2026
b65e1ae
Gate publisher GPT requests until targeting is ready
ChristianPavilonis Jul 24, 2026
f3c1e6b
Revert "Gate publisher GPT requests until targeting is ready"
ChristianPavilonis Jul 24, 2026
86d114b
Merge branch 'main' into fix/duplicate-gpt-slots
aram356 Jul 25, 2026
9b1985c
Harden GPT slot handoff
ChristianPavilonis Jul 27, 2026
857c940
Merge branch 'main' into fix/duplicate-gpt-slots
aram356 Jul 30, 2026
0fdd13e
Preserve native GPT slot behavior
ChristianPavilonis Jul 30, 2026
b200be5
Fix GPT slot handoff matching
ChristianPavilonis Jul 31, 2026
659d518
Prevent duplicate GPT slot requests
ChristianPavilonis Jul 24, 2026
b07f0df
Gate publisher GPT requests until targeting is ready
ChristianPavilonis Jul 24, 2026
49e3d9c
Revert "Gate publisher GPT requests until targeting is ready"
ChristianPavilonis Jul 24, 2026
3637ebb
Harden GPT slot handoff
ChristianPavilonis Jul 27, 2026
d6eab4d
Preserve native GPT slot behavior
ChristianPavilonis Jul 30, 2026
01d7f80
Fix GPT slot handoff matching
ChristianPavilonis Jul 31, 2026
41ea002
Invalidate stale GPT handoffs on SPA navigation
ChristianPavilonis Aug 4, 2026
72ff8cb
Merge remote-tracking branch 'origin/fix/duplicate-gpt-slots' into fi…
ChristianPavilonis Aug 4, 2026
44f0d10
Restore GPT initial-load synchronization
ChristianPavilonis Aug 6, 2026
ac5a53c
Select active GPT responsive slots (#978)
ChristianPavilonis Aug 6, 2026
7c1d275
Merge branch 'main' into fix/duplicate-gpt-slots
ChristianPavilonis Aug 6, 2026
bda19d3
Merge branch 'main' into fix/duplicate-gpt-slots
aram356 Aug 7, 2026
8bfb442
Stop the SPA slot wait stalling on hidden prefix placements
aram356 Aug 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 30 additions & 1 deletion crates/trusted-server-core/src/integrations/gpt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1253,7 +1253,7 @@ mod tests {
"bootstrap should scan ID-bearing elements instead of interpolating div_id into CSS"
);
assert!(
combined.contains(".startsWith(slot.div_id)"),
combined.contains("candidate.id.startsWith(divId)"),
"bootstrap should match metacharacter-containing div_id prefixes with startsWith"
);
assert!(
Expand All @@ -1262,6 +1262,35 @@ mod tests {
);
}

#[test]
fn head_inserts_bootstrap_installs_inner_div_slot_handoff() {
let integration = GptIntegration::new(test_config());
let doc_state = IntegrationDocumentState::default();
let ctx = IntegrationHtmlContext {
request_host: "edge.example.com",
request_scheme: "https",
origin_host: "example.com",
document_state: &doc_state,
};
let combined = integration.head_inserts(&ctx).join("");
assert!(
combined.contains("gptSlotHandoffs"),
"bootstrap should keep late publisher slot handoff state on window.tsjs"
);
assert!(
combined.contains("__tsSlotHandoffPatched"),
"bootstrap should install idempotent GPT handoff wrappers"
);
assert!(
combined.contains("return googletag.defineSlot") && combined.contains("actualDivId"),
"bootstrap should define the TS fallback on the actual inner div"
);
assert!(
!combined.contains("actualDivId + \"-container\""),
"bootstrap must not define a competing outer-container GPT slot"
);
}

#[test]
fn head_inserts_bootstrap_guards_enable_services_with_idempotency_flag() {
let config = test_config();
Expand Down
Loading
Loading