--- E:/Qt/4.5.3-shared/src/3rdparty/webkit/WebCore/plugins/win/PluginDatabaseWin.cpp.org	Tue Sep 29 06:04:12 2009
+++ E:/Qt/4.5.3-shared/src/3rdparty/webkit/WebCore/plugins/win/PluginDatabaseWin.cpp	Mon Dec 21 04:01:39 2009
@@ -33,6 +33,8 @@
 #include <windows.h>
 #include <shlwapi.h>
 
+#include <QDebug>
+
 #if COMPILER(MINGW)
 #define _countof(x) (sizeof(x)/sizeof(x[0]))
 #endif
@@ -325,6 +327,69 @@
     directories.append(macromediaDirectoryStr);
 }
 
+static inline void addJavaPluginDirectory(Vector<String>& directories)
+{
+    qDebug() << "PluginDatabase::addJavaPluginDirectories";
+    HKEY key;
+    HRESULT result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("Software\\JavaSoft\\Java Plug-in"), 0, KEY_READ, &key);
+    if (result != ERROR_SUCCESS)
+        return;
+
+    WCHAR name[128];
+    FILETIME lastModified;
+
+    Vector<int> latestJavaVersion;
+    String latestJavaVersionString;
+
+    qDebug() << "- checking Java Plugin versions";
+    // Enumerate subkeys
+    for (int i = 0;; i++) {
+        DWORD nameLen = sizeof(name) / sizeof(WCHAR);
+        result = RegEnumKeyExW(key, i, name, &nameLen, 0, 0, 0, &lastModified);
+
+        if (result != ERROR_SUCCESS)
+            break;
+
+        Vector<int> javaVersion = parseVersionString(String(name, nameLen));
+        if (compareVersions(javaVersion, latestJavaVersion)) {
+            latestJavaVersion = javaVersion;
+            latestJavaVersionString = String(name, nameLen);
+            qDebug() << "- setting latest Java Plugin version to " << latestJavaVersionString;
+        }
+    }
+
+    if (!latestJavaVersionString.isNull()) {
+        DWORD type;
+        WCHAR javaInstallPathStr[_MAX_PATH];
+        DWORD javaInstallPathSize = sizeof(javaInstallPathStr);
+        DWORD useNewPluginValue;
+        DWORD useNewPluginSize;
+
+        String javaPluginKeyPath = "Software\\JavaSoft\\Java Plug-in\\" + latestJavaVersionString;
+        result = SHGetValue(HKEY_LOCAL_MACHINE, javaPluginKeyPath.charactersWithNullTermination(), TEXT("UseNewJavaPlugin"), &type,(LPVOID)&useNewPluginValue, &useNewPluginSize);
+        if (result == ERROR_SUCCESS) {
+            if (useNewPluginValue == 1) {
+                result = SHGetValue(HKEY_LOCAL_MACHINE, javaPluginKeyPath.charactersWithNullTermination(), TEXT("JavaHome"), &type, (LPBYTE)javaInstallPathStr, &javaInstallPathSize);
+                if (result == ERROR_SUCCESS) {
+                    String javaPluginDirectory = String(javaInstallPathStr, javaInstallPathSize / sizeof(WCHAR) - 1) + "\\bin\\new_plugin";
+                    directories.append(javaPluginDirectory);
+                    qDebug() << "- adding Java Plugin directory: " << javaPluginDirectory;
+                } else {
+                    qDebug() << "Error: failed to read JavaHome value (" << result << ")";
+                }
+            } else {
+                qDebug() << "Error: failed to find a 'new' Java Plugin";
+            }
+        } else {
+            qDebug() << "Error: failed to read 'UseNewJavaPlugin' value (" << result << ")";
+        }
+    } else {
+        qDebug("ERROR: failed to find a java version!!!");
+    }
+
+    RegCloseKey(key);
+}
+
 Vector<String> PluginDatabase::defaultPluginDirectories()
 {
     Vector<String> directories;
@@ -337,7 +402,7 @@
     addMozillaPluginDirectories(directories);
     addWindowsMediaPlayerPluginDirectory(directories);
     addMacromediaPluginDirectories(directories);
-
+    addJavaPluginDirectory(directories);
     return directories;
 }
 
--- E:/Qt/4.5.3-shared/src/3rdparty/webkit/WebCore/plugins/win/PluginPackageWin.cpp.org	Tue Sep 29 06:04:12 2009
+++ E:/Qt/4.5.3-shared/src/3rdparty/webkit/WebCore/plugins/win/PluginPackageWin.cpp	Mon Dec 21 04:01:39 2009
@@ -38,6 +38,8 @@
 #include <wtf/OwnArrayPtr.h>
 #include <shlwapi.h>
 
+#include <QDebug>
+
 namespace WebCore {
 
 static String getVersionInfo(const LPVOID versionInfoData, const String& info)
@@ -223,6 +225,7 @@
 
 bool PluginPackage::load()
 {
+    qDebug() << "Loading plugin: " << this->m_path;
     if (m_freeLibraryTimer.isActive()) {
         ASSERT(m_module);
         m_freeLibraryTimer.stop();
--- E:/Qt/4.5.3-shared/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp.org	Tue Sep 29 06:04:14 2009
+++ E:/Qt/4.5.3-shared/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp	Tue Dec 22 22:22:14 2009
@@ -58,6 +58,8 @@
 #include "qwebhistoryinterface.h"
 #include "qwebpluginfactory.h"
 
+#include <QtDebug>
+
 #include <qfileinfo.h>
 
 #include <QCoreApplication>
@@ -199,7 +201,7 @@
     return true;
 }
 
-void FrameLoaderClientQt::savePlatformDataToCachedPage(CachedPage*) 
+void FrameLoaderClientQt::savePlatformDataToCachedPage(CachedPage*)
 {
     notImplemented();
 }
@@ -1076,8 +1078,8 @@
 Widget* FrameLoaderClientQt::createPlugin(const IntSize& pluginSize, Element* element, const KURL& url, const Vector<String>& paramNames,
                                           const Vector<String>& paramValues, const String& mimeType, bool loadManually)
 {
-//     qDebug()<<"------ Creating plugin in FrameLoaderClientQt::createPlugin for "<<url.prettyURL() << mimeType;
-//     qDebug()<<"------\t url = "<<url.prettyURL();
+     qDebug()<<"------ Creating plugin in FrameLoaderClientQt::createPlugin for "<<url.prettyURL() << mimeType;
+     qDebug()<<"------\t url = "<<url.prettyURL();
 
     if (!m_webFrame)
         return 0;
@@ -1148,6 +1150,7 @@
     } else { // NPAPI Plugins
         PluginView* pluginView = PluginView::create(m_frame, pluginSize, element, url,
             paramNames, paramValues, mimeType, loadManually);
+        qDebug() << "Create the PluginView: " << pluginView;
         return pluginView;
     }
 
@@ -1156,16 +1159,19 @@
 
 void FrameLoaderClientQt::redirectDataToPlugin(Widget* pluginWidget)
 {
+	qDebug() << "FrameLoaderClientQt::redirectDataToPlugin";
     ASSERT(!m_pluginView);
     m_pluginView = static_cast<PluginView*>(pluginWidget);
     m_hasSentResponseToPlugin = false;
 }
 
-Widget* FrameLoaderClientQt::createJavaAppletWidget(const IntSize&, Element*, const KURL& baseURL,
+Widget* FrameLoaderClientQt::createJavaAppletWidget(const IntSize& pluginSize, Element* element, const KURL& baseURL,
                                                     const Vector<String>& paramNames, const Vector<String>& paramValues)
 {
-    notImplemented();
-    return 0;
+    qDebug() << "createJavaAppletWidget";
+    //notImplemented();
+    //return 0;
+    return createPlugin(pluginSize, element, baseURL, paramNames, paramValues, "application/x-java-applet", true);
 }
 
 String FrameLoaderClientQt::overrideMediaType() const
