Currently if someone needs to work with Workers at all they probably will end up referencing a WorkerPrivate. This is a major build headache because it means all the details of the WorkerPrivate are essentially leaked to those consumer. For example, I want to add an ipdlh defined type to WorkerLoadInfo. If I do that, though, every directory that includes WorkerPrivate.h must change its moz.build to include: include('/ipc/chromium/chromium-config.mozbuild') In general exposing our concrete type to all consumers makes developing Worker code harder. There is more busy work for cases like I describe above. It also makes builds longer by triggering rebuilds of code that don't care about private details of the worker internals. We really need an abstract WorkerPrivate interface similar to nsGlobalWindow's nsPIDOMWindowInner.