Because we also do "toll-free bridging", you can ask if strings are CPStrings, numbers are CPNumbers, and arrays are CPArrays (though we don't toll free bridge null to CPNull, which we probably should).
So, we actually have this feature where we "bridge" windows: you can basically tell a CPWindow to map to an actual browser window. And we implement it as a display only thing, so all of your actual code runs in the parent browser window and just manipulates the DOM elements in the child window. It doesn't completely work in IE I think, but I haven't tried in a while (it's kind of an experimental feature, but it's been in the release for a while).
The only reference I found to it is this thread: http://groups.google.com/group/objectivej/browse_thread/thre...