EVALUATION
The IE part of the showDocument() fix in JDK 7 is completed, and no further
changes are expected in it. The biggest piece of the new solution in JDK 7
is covered by the following webrevs:
http://sa.sfbay.sun.com/projects/deployment_data/7/6946479.3/
http://sa.sfbay.sun.com/projects/deployment_data/7/6946479.4/
Conceptually these changes re-implement the showDocument() functionality in
a very different way than it was previously in JDK 6, with significant
simplification of the code.
In JDK 6 we tried to preserve the historical showDocument() behavior unchanged
by any possible means. So we had to workaround all of Microsoft's new security
features introduced in late IE versions. Good examples are the pop-up blocker
and the IE option that lets the user choose where to open new pages, whether
in a new tab or new window. All our workaround fixes for bugs resulted in
a very curved code, which is on the verge of a hack. Essentially, we started
to play against Microsoft's rules, and it may kind of compromise the Java
plugin. The UAC feature is just another roadblock on this way.
Since this approach is not sustainable for long, it was decided to abandon it,
start playing by rules and honor new OS' and browser's features and settings.
The new implementation in JDK 7 follows this way. The idea is that we don't
have to find workarounds and security holes. Just follow the rules set by
browser settings and OS features.
There may be changes in the showDocument() behavior with the default IE
settings. For example, new windows may be blocked by the pop-up blocker,
or they may open in a new tab, not a new window. But this behavior is
controlled by browser's options and user configurable. BTW, UAC doesn't
create any issues with this approach.
The new solution is essentially based on a JavaScript approach. Opening a new
document is done by a sequence of IE COM interface calls/FF API calls which
do the same as the following JavaScript expression:
"windows.open(url, target).focus()"
|