Repository navigation
v1.57.0 - inmobi 1.2.0: a granting resource, and GPC in the USP string
inmobi-accept.js stands in for InMobi Choice's cmp2.js granting rather than refusing - for a wall that keeps the page shut until the answer is yes.
It consents to the purposes, special features and vendors the tenant's own configuration names: vendorPurposeIds, vendorSpecialFeaturesIds and publisherPurposeIds, falling back to all of them where a tenant names none. getTCData answers with what the string carries rather than holding a separate opinion, and so does the tcfeuv2 section __gpp reports - the tests decode our own string with @iabgpp/cmpapi and compare the two, because a section that disagrees with the string beside it is the failure this nearly shipped with.
One boolean through the wrapper, the way appconsent does it, so the two resources are the same file but for the header and that argument - which a test pins, so they cannot drift apart.
It hands consent to IAB vendors, which the refusing resource does not. That is what makes it a per-site tool rather than a default, and filters/inmobi.txt says so where it shows the rule:
```
! ||cmp.inmobi.com/tcfv2/cmp2.js$script,redirect=inmobi-accept.js:10,domain=example.com
! ||cmp.inmobi.com/tcfv2/cmp2-polyfilled.js$script,redirect=inmobi-accept.js:10,domain=example.com
```
Global Privacy Control now reaches __uspapi: 1--- normally, 1-Y- where the browser sends one. The notice and LSPA characters stay dashes, because whether CCPA applies comes from the location lookup these filters noop - but the middle character is not a claim about jurisdiction, it is the visitor's own signal, and osano-usp.js already read it exactly this way.
This mattered more than it looked. Brave sends GPC by default, so a Brave visitor was being told no opt-out applied by the same resource that was already treating that signal as strong enough to withdraw legitimate interest from the TC string. One signal, two contradictory answers, visible only in the browser where it is the default.
Granting does not overrule it either: the purposes the wall waits on are consented to while the objection and the opt-out stand, because they answer different questions. Both the accept resource's own notes and a test say so, so neither gets "fixed" into the other later.
Also here: both layers now read that signal the same guarded way. The core wrapped the property access in a try/catch and the TCF builder did not, so a throwing getter would have taken one layer down and left the other standing - and the two could have disagreed about one signal.
1044 tests. Mutation-tested: fifteen mutations across the granting path, the USP mapping and the GPP section, all caught.