Open Bug 964908 Opened 7 years ago Updated 4 years ago

implement DNT exceptions as per the W3C TPE spec

Categories

(Core :: DOM: Core & HTML, enhancement)

enhancement
Not set
normal

Tracking

()

People

(Reporter: geekboy, Unassigned)

References

()

Details

(Keywords: dev-doc-needed)

Attachments

(1 file)

The TPE draft is pretty stable, so it's an appropriate time to start implementing the TPE exceptions mechanism if we want it.

I don't think we can use the permission manager for this, and this could cause some perf issues since we'll hit it once per top-level channel creation so we'll have to watch carefully.

There are two types of exceptions:
* Web-Wide exceptions.
* Site-Specific exceptions

WWEs are simple: when DNT is enabled and set to "no tracking", a specific third party is given DNT:0 instead of DNT:1 regardless of context (if it is a first or third party).

SSEs are more complicated. The basic idea is that a first party should be able to "enable" tracking for some or all third parties on their page.  For example, exnews.com could ask to enable all trackers ("*") while you visit their site.  Or it could record exceptions for just a few.

The basic design is that we must remember which third parties are allowed in which first party contexts and send DNT:0 instead of DNT:1 when DNT:1 is active as the global setting.  The TPE draft suggests recording tuples for exceptions and based on the type of exception (SSE or WWE), different tuples get recorded.

Examples:
1. SSE for t.com and r.com when on a.com: [a.com, t.com] and [a.com, r.com]
2. WWE for t.com: [*, t.com]
3. SSE for all when on a.com: [a.com, *]

There's more details in the TPE draft: http://www.w3.org/2011/tracking-protection/drafts/tracking-dnt.html#exceptions

TBD is how we really want the back-end to look and whether there's already a storage mechanism we can use or if we have to implement yet another one in gecko.
mmc, keeler, do you know if there are existing storage services in gecko that can handle this type of thing?  nsIPermissionManager is not built for double-keyed stuff...
Flags: needinfo?(mmc)
Flags: needinfo?(dkeeler)
(In reply to Sid Stamm [:geekboy or :sstamm] from comment #1)
> mmc, keeler, do you know if there are existing storage services in gecko
> that can handle this type of thing?  nsIPermissionManager is not built for
> double-keyed stuff...

Hey Sid,

As far as I know there are not.

Monica
Flags: needinfo?(mmc)
(In reply to comment #2)
> (In reply to Sid Stamm [:geekboy or :sstamm] from comment #1)
> > mmc, keeler, do you know if there are existing storage services in gecko
> > that can handle this type of thing?  nsIPermissionManager is not built for
> > double-keyed stuff...
> 
> Hey Sid,
> 
> As far as I know there are not.

I think that's correct.
I wonder if the DataStorage patch in bug 775370 would be helpful? It's a bit generic, so you would have to do your own boxing/unboxing of keys/values.
Flags: needinfo?(dkeeler)
Stubbed out all the webidl interfaces and types for the exceptions API.  Still not sure what to do about the backend.
Assignee: sstamm → nobody
You need to log in before you can comment on or make changes to this bug.