Changeset 66234 in webkit


Ignore:
Timestamp:
Aug 27, 2010 10:35:18 AM (14 years ago)
Author:
commit-queue@webkit.org
Message:

2010-08-27 Dawit Alemayehu <adawit@kde.org>

Reviewed by Simon Hausmann.

[Qt] Search the Windows registry for the location of the Java plugin DLL.
https://bugs.webkit.org/show_bug.cgi?id=38911

This change, in addition to the ones 34539 and 38911, is needed to
make Java applet work in QtWebKit on the Windows platform.

  • plugins/win/PluginDatabaseWin.cpp: (WebCore::addJavaPluginDirectory): (WebCore::PluginDatabase::defaultPluginDirectories):
Location:
trunk/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r66225 r66234  
     12010-08-27  Dawit Alemayehu  <adawit@kde.org>
     2
     3        Reviewed by Simon Hausmann.
     4
     5        [Qt] Search the Windows registry for the location of the Java plugin DLL.
     6        https://bugs.webkit.org/show_bug.cgi?id=38911
     7
     8        This change, in addition to the ones 34539 and 38911, is needed to
     9        make Java applet work in QtWebKit on the Windows platform.
     10
     11        * plugins/win/PluginDatabaseWin.cpp:
     12        (WebCore::addJavaPluginDirectory):
     13        (WebCore::PluginDatabase::defaultPluginDirectories):
     14
    1152010-08-27  Pavel Feldman  <pfeldman@chromium.org>
    216
  • trunk/WebCore/plugins/win/PluginDatabaseWin.cpp

    r63966 r66234  
    333333}
    334334
     335static inline void addJavaPluginDirectory(Vector<String>& directories)
     336{
     337    HKEY key;
     338    HRESULT result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("Software\\JavaSoft\\Java Plug-in"), 0, KEY_READ, &key);
     339    if (result != ERROR_SUCCESS)
     340        return;
     341
     342    WCHAR name[128];
     343    FILETIME lastModified;
     344
     345    Vector<int> latestJavaVersion;
     346    String latestJavaVersionString;
     347
     348    // Enumerate subkeys
     349    for (int i = 0;; i++) {
     350        DWORD nameLen = sizeof(name) / sizeof(WCHAR);
     351        result = RegEnumKeyExW(key, i, name, &nameLen, 0, 0, 0, &lastModified);
     352
     353        if (result != ERROR_SUCCESS)
     354            break;
     355
     356        Vector<int> javaVersion = parseVersionString(String(name, nameLen));
     357        if (compareVersions(javaVersion, latestJavaVersion)) {
     358            latestJavaVersion = javaVersion;
     359            latestJavaVersionString = String(name, nameLen);
     360        }
     361    }
     362
     363    if (!latestJavaVersionString.isEmpty()) {
     364        DWORD type;
     365        WCHAR javaInstallPathStr[_MAX_PATH];
     366        DWORD javaInstallPathSize = sizeof(javaInstallPathStr);
     367        DWORD useNewPluginValue;
     368        DWORD useNewPluginSize;
     369
     370        String javaPluginKeyPath = "Software\\JavaSoft\\Java Plug-in\\" + latestJavaVersionString;
     371        result = SHGetValue(HKEY_LOCAL_MACHINE, javaPluginKeyPath.charactersWithNullTermination(), TEXT("UseNewJavaPlugin"), &type, (LPVOID)&useNewPluginValue, &useNewPluginSize);
     372
     373        if (result == ERROR_SUCCESS && useNewPluginValue == 1) {
     374            result = SHGetValue(HKEY_LOCAL_MACHINE, javaPluginKeyPath.charactersWithNullTermination(), TEXT("JavaHome"), &type, (LPBYTE)javaInstallPathStr, &javaInstallPathSize);
     375            if (result == ERROR_SUCCESS) {
     376                String javaPluginDirectory = String(javaInstallPathStr, javaInstallPathSize / sizeof(WCHAR) - 1) + "\\bin\\new_plugin";
     377                directories.append(javaPluginDirectory);
     378            }
     379        }
     380    }
     381
     382    RegCloseKey(key);
     383}
     384
    335385static inline String safariPluginsDirectory()
    336386{
     
    386436    addWindowsMediaPlayerPluginDirectory(directories);
    387437    addMacromediaPluginDirectories(directories);
     438#if PLATFORM(QT)
     439    addJavaPluginDirectory(directories);
     440#endif
    388441
    389442    return directories;
Note: See TracChangeset for help on using the changeset viewer.