JDK-6895556 : lack of status information showstatus method of Applet when the "Next Gen" plug-in enabled
  • Type: Bug
  • Component: deploy
  • Sub-Component: plugin
  • Affected Version: 6u16
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2009-10-27
  • Updated: 2011-02-16
  • Resolved: 2010-08-11
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other JDK 6 JDK 7
5.0-poolResolved 6u21-rev b08Fixed 7Fixed
Related Reports
Relates :  
Relates :  
Description
Information displayed correctlyusing the java.applet.Applet.showStatus method in 1.6.0_06. 
However, in the 1.6.0_16, all that
shows up in the status bar is "Done", not any of the information that is
being passed to the java.applet.Applet.showStatus method

Disabling the "next gen" plug-in allows this information to show
correctly. However, this is not a suitable solution, as we require the
benefits of the "next gen" plug-in. Thus, it appears that between update
10 and update 16 within the "next gen" plug-in, a bug has been
introduced that prevents this from working.

Reproducable test case is attached.
ShowStatus.zip
password == password

The zip file (password = 'password') includes the
reproducible "showstatus" The "showstatus" bug manifests itself in Internet Explorer 7
using JRE 1.6.0_16 when an applet exists within a frame of a frameset.
It may exist in prior versions of the JRE and possibly other browsers as
well, but does not appear to be a problem in JRE 1.6.0_10.
		 
		Here are the test cases and observed results:
		 
	
------------------------------------------------------------------------
------------
		 
		
		Running ShowStatusFrameset.htm with "Enable the
next-generation Java Plug-in..." turned off results in:
		 
		
		 
		 
		No applet label information getting painted, but status
information being written
		 
		
	
------------------------------------------------------------------------
------------
		 
		
		Running ShowStatusFrameset.htm with "Enable the
next-generation Java Plug-in..." turned on results in:
		 
		 
		 
		Applet label information getting painted, but no status
information being written, and instead just the word "Done"
		 
		
	
------------------------------------------------------------------------
------------
		 
		The result should be both a label within the applet
getting written as well as the status message getting updated as can be
seen by running 'appletviewer ShowStatusApplet.htm'
		 
		 
		 
		 
		
	
------------------------------------------------------------------------
------------
		 
		As our actual application is not suffering from the
painting issue, the only concern of CASE #71654978 is the lack of status
information when using the showstatus method of Applet with the "Next
Gen" plug-in enabled.

Comments
WORK AROUND Updating the status bar in the below fashion will let the status display work as before. Adding these lines to ShowStatus.htm worked for me. However, the scriptlet may need more logic in making the status bar text dynamic. <body> ........ ......... </object> <script type="text/javascript"> window.status="Applet driven Message!"; </script> </body> Note: For this to work, the browser should allow status bar updation via scripts. Tools-> Internet Options -> Security -> Custom Level -> <scroll down to Scriptng> ->Allow status bar updates via script. Choose the "Enable" radio button.
19-05-2010

EVALUATION .
17-03-2010

EVALUATION In this case, the applet is embedded within a frameset. In order to show status in the IE browser's status area, we'll need to retrieve the top-level IWebBrowser2 interface prior to using its put_StatusText API to show the status. The following MSDN article describes how to retrieve the top-level IWebBrowser2 interface: http://support.microsoft.com/kb/257717
15-03-2010

SUGGESTED FIX ------- AxControl.cpp ------- *** //C/Cygwin/tmp/sccs.001000 Mon Mar 15 15:36:13 2010 --- AxControl.cpp Mon Mar 15 15:20:38 2010 *************** *** 1674,1679 **** --- 1674,1680 ---- { HRESULT hr; CComPtr<IServiceProvider> spSrvProv; + CComPtr<IServiceProvider> spSrvProv2; CComPtr<IWebBrowser2> spWebBrowser; IOleClientSite* pIOleClientSite = (IOleClientSite*)clientSite; *************** *** 1690,1697 **** return; } // retrieve IWebBrowser2 interface reference ! hr = spSrvProv->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, (void * *)&spWebBrowser); if (FAILED(hr)) { return; } --- 1691,1703 ---- return; } + hr = spSrvProv->QueryService(SID_STopLevelBrowser, IID_IServiceProvider, ( void **)&spSrvProv2); + if (FAILED(hr)) { + return; + } + // retrieve IWebBrowser2 interface reference ! hr = spSrvProv2->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, (void **)&spWebBrowser); if (FAILED(hr)) { return; }
15-03-2010