Using bug 851178, it shouldn't be too hard to pass in window to an __init method. For constructors, this will just be a matter of adding a window argument. Then we can remove the init() stuff that uses nsIDOMGlobalPropertyInitializer. The main annoyance will be that for navigator we don't have a ctor sitting around, so one will have to be synthesized. The drawback will be that things on navigator will have to write __init() whether or not they care about window, but that seems like a small price to pay.
You need to log in before you can comment on or make changes to this bug.