Changeset 217771 in webkit


Ignore:
Timestamp:
Jun 4, 2017 9:38:39 AM (7 years ago)
Author:
Konstantin Tokarev
Message:

Fix build of Windows-specific code with ICU 59.1
https://bugs.webkit.org/show_bug.cgi?id=172729

Reviewed by Darin Adler.

Source/JavaScriptCore:

Fix conversions from WTF::String to wchar_t* and vice versa.

  • jsc.cpp:

(currentWorkingDirectory):
(fetchModuleFromLocalFileSystem):

  • runtime/DateConversion.cpp:

(JSC::formatDateTime):

Source/WebCore:

Fix conversions from WTF::String to wchar_t* and vice versa.
No new tests needed.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::mimeTypeCache):
(WebCore::MediaPlayerPrivateMediaFoundation::startCreateMediaSource):

Source/WebKit/win:

Fix conversions from WTF::String to wchar_t* and vice versa.

  • Plugins/PluginDatabaseWin.cpp:

(WebCore::addPluginPathsFromRegistry):
(WebCore::PluginDatabase::getPluginPathsInDirectories):
(WebCore::addMozillaPluginDirectories):
(WebCore::addWindowsMediaPlayerPluginDirectory):
(WebCore::addAdobeAcrobatPluginDirectory):
(WebCore::addJavaPluginDirectory):
(WebCore::safariPluginsDirectory):
(WebCore::addMacromediaPluginDirectories):

  • Plugins/PluginPackageWin.cpp:

(WebCore::getVersionInfo):
(WebCore::PluginPackage::fetchInfo):
(WebCore::PluginPackage::load):

  • Plugins/PluginViewWin.cpp:

(WebCore::PluginView::handlePostReadFile):

Source/WTF:

  • wtf/text/win/WCharStringExtras.h: Added new header file wuth helper

functions for conversion between WTF::String and wchart_t*.
(WTF::stringToNullTerminatedWChar):
(WTF::wcharToString):
(WTF::nullTerminatedWCharToString):

Location:
trunk/Source
Files:
1 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r217770 r217771  
     12017-06-04  Konstantin Tokarev  <annulen@yandex.ru>
     2
     3        Fix build of Windows-specific code with ICU 59.1
     4        https://bugs.webkit.org/show_bug.cgi?id=172729
     5
     6        Reviewed by Darin Adler.
     7
     8        Fix conversions from WTF::String to wchar_t* and vice versa.
     9
     10        * jsc.cpp:
     11        (currentWorkingDirectory):
     12        (fetchModuleFromLocalFileSystem):
     13        * runtime/DateConversion.cpp:
     14        (JSC::formatDateTime):
     15
    1162017-06-04  Yusuke Suzuki  <utatane.tea@gmail.com>
    217
  • trunk/Source/JavaScriptCore/jsc.cpp

    r217523 r217771  
    9797#if OS(WINDOWS)
    9898#include <direct.h>
     99#include <wtf/text/win/WCharStringExtras.h>
    99100#else
    100101#include <unistd.h>
     
    15681569    auto buffer = std::make_unique<wchar_t[]>(bufferLength);
    15691570    DWORD lengthNotIncludingNull = ::GetCurrentDirectoryW(bufferLength, buffer.get());
    1570     static_assert(sizeof(wchar_t) == sizeof(UChar), "In Windows, both are UTF-16LE");
    1571     String directoryString = String(reinterpret_cast<UChar*>(buffer.get()));
     1571    String directoryString = nullTerminatedWCharToString(buffer.get());
    15721572    // We don't support network path like \\host\share\<path name>.
    15731573    if (directoryString.startsWith("\\\\"))
     
    17461746    // Use long UNC to pass the long path name to the Windows APIs.
    17471747    String longUNCPathName = WTF::makeString("\\\\?\\", fileName);
    1748     static_assert(sizeof(wchar_t) == sizeof(UChar), "In Windows, both are UTF-16LE");
    1749     auto utf16Vector = longUNCPathName.charactersWithNullTermination();
    1750     FILE* f = _wfopen(reinterpret_cast<wchar_t*>(utf16Vector.data()), L"rb");
     1748    FILE* f = _wfopen(stringToNullTerminatedWChar(longUNCPathName).data(), L"rb");
    17511749#else
    17521750    FILE* f = fopen(fileName.utf8().data(), "r");
  • trunk/Source/JavaScriptCore/runtime/DateConversion.cpp

    r216187 r217771  
    3333#if OS(WINDOWS)
    3434#include <windows.h>
     35#include <wtf/text/win/WCharStringExtras.h>
    3536#endif
    3637
     
    109110            GetTimeZoneInformation(&timeZoneInformation);
    110111            const WCHAR* winTimeZoneName = t.isDST() ? timeZoneInformation.DaylightName : timeZoneInformation.StandardName;
    111             String timeZoneName(reinterpret_cast<const UChar*>(winTimeZoneName));
     112            String timeZoneName = nullTerminatedWCharToString(winTimeZoneName);
    112113#else
    113114            struct tm gtm = t;
  • trunk/Source/WTF/ChangeLog

    r217736 r217771  
     12017-06-04  Konstantin Tokarev  <annulen@yandex.ru>
     2
     3        Fix build of Windows-specific code with ICU 59.1
     4        https://bugs.webkit.org/show_bug.cgi?id=172729
     5
     6        Reviewed by Darin Adler.
     7
     8        * wtf/text/win/WCharStringExtras.h: Added new header file wuth helper
     9        functions for conversion between WTF::String and wchart_t*.
     10        (WTF::stringToNullTerminatedWChar):
     11        (WTF::wcharToString):
     12        (WTF::nullTerminatedWCharToString):
     13
    1142017-06-02  Stephan Szabo  <stephan.szabo@am.sony.com>
    215
  • trunk/Source/WebCore/ChangeLog

    r217767 r217771  
     12017-06-04  Konstantin Tokarev  <annulen@yandex.ru>
     2
     3        Fix build of Windows-specific code with ICU 59.1
     4        https://bugs.webkit.org/show_bug.cgi?id=172729
     5
     6        Reviewed by Darin Adler.
     7
     8        Fix conversions from WTF::String to wchar_t* and vice versa.
     9        No new tests needed.
     10
     11        * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
     12        (WebCore::mimeTypeCache):
     13        (WebCore::MediaPlayerPrivateMediaFoundation::startCreateMediaSource):
     14
    1152017-06-04  Chris Dumez  <cdumez@apple.com>
    216
  • trunk/Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp

    r201482 r217771  
    4343#include <wtf/MainThread.h>
    4444#include <wtf/NeverDestroyed.h>
     45#include <wtf/text/win/WCharStringExtras.h>
    4546
    4647SOFT_LINK_LIBRARY(Mf);
     
    143144        CALPWSTR mimeTypeArray = propVarMimeTypeArray.calpwstr;
    144145        for (unsigned i = 0; i < mimeTypeArray.cElems; i++)
    145             cachedTypes.get().add(mimeTypeArray.pElems[i]);
     146            cachedTypes.get().add(nullTerminatedWCharToString(mimeTypeArray.pElems[i]));
    146147    }
    147148
     
    461462
    462463    COMPtr<IUnknown> cancelCookie;
    463     Vector<UChar> urlSource = url.charactersWithNullTermination();
     464    Vector<wchar_t> urlSource = stringToNullTerminatedWChar(url);
    464465
    465466    AsyncCallback* callback = new AsyncCallback(this, false);
  • trunk/Source/WebKit/win/ChangeLog

    r217557 r217771  
     12017-06-04  Konstantin Tokarev  <annulen@yandex.ru>
     2
     3        Fix build of Windows-specific code with ICU 59.1
     4        https://bugs.webkit.org/show_bug.cgi?id=172729
     5
     6        Reviewed by Darin Adler.
     7
     8        Fix conversions from WTF::String to wchar_t* and vice versa.
     9
     10        * Plugins/PluginDatabaseWin.cpp:
     11        (WebCore::addPluginPathsFromRegistry):
     12        (WebCore::PluginDatabase::getPluginPathsInDirectories):
     13        (WebCore::addMozillaPluginDirectories):
     14        (WebCore::addWindowsMediaPlayerPluginDirectory):
     15        (WebCore::addAdobeAcrobatPluginDirectory):
     16        (WebCore::addJavaPluginDirectory):
     17        (WebCore::safariPluginsDirectory):
     18        (WebCore::addMacromediaPluginDirectories):
     19        * Plugins/PluginPackageWin.cpp:
     20        (WebCore::getVersionInfo):
     21        (WebCore::PluginPackage::fetchInfo):
     22        (WebCore::PluginPackage::load):
     23        * Plugins/PluginViewWin.cpp:
     24        (WebCore::PluginView::handlePostReadFile):
     25
    1262017-05-30  Per Arne Vollan  <pvollan@apple.com>
    227
  • trunk/Source/WebKit/win/Plugins/PluginDatabaseWin.cpp

    r195743 r217771  
    3333#include "PluginPackage.h"
    3434#include <wtf/WindowsExtras.h>
     35#include <wtf/text/win/WCharStringExtras.h>
    3536
    3637namespace WebCore {
     
    6364            continue;
    6465
    65         paths.add(String(pathStr, pathStrSize / sizeof(WCHAR) - 1));
     66        paths.add(wcharToString(pathStr, pathStrSize / sizeof(WCHAR) - 1));
    6667    }
    6768
     
    8485        String pattern = *it + "\\*";
    8586
    86         hFind = FindFirstFileW(pattern.charactersWithNullTermination().data(), &findFileData);
     87        hFind = FindFirstFileW(stringToNullTerminatedWChar(pattern).data(), &findFileData);
    8788
    8889        if (hFind == INVALID_HANDLE_VALUE)
     
    9394                continue;
    9495
    95             String filename = String(findFileData.cFileName, wcslen(findFileData.cFileName));
     96            String filename = wcharToString(findFileData.cFileName, wcslen(findFileData.cFileName));
    9697            if ((!filename.startsWith("np", false) || !filename.endsWith("dll", false)) &&
    9798                (!equalLettersIgnoringASCIICase(filename, "plugin.dll") || !it->endsWith("Shockwave 10", false)))
     
    180181                break;
    181182
    182             String extensionsPath = String(name, nameLen) + "\\Extensions";
     183            String extensionsPath = wcharToString(name, nameLen) + "\\Extensions";
    183184            HKEY extensionsKey;
    184185
    185186            // Try opening the key
    186             result = RegOpenKeyEx(key, extensionsPath.charactersWithNullTermination().data(), 0, KEY_READ, &extensionsKey);
     187            result = RegOpenKeyEx(key, stringToNullTerminatedWChar(extensionsPath).data(), 0, KEY_READ, &extensionsKey);
    187188
    188189            if (result == ERROR_SUCCESS) {
     
    195196
    196197                if (result == ERROR_SUCCESS && type == REG_SZ)
    197                     directories.append(String(pluginsDirectoryStr, pluginsDirectorySize / sizeof(WCHAR) - 1));
     198                    directories.append(wcharToString(pluginsDirectoryStr, pluginsDirectorySize / sizeof(WCHAR) - 1));
    198199
    199200                RegCloseKey(extensionsKey);
     
    212213
    213214    if (pluginDirectorySize > 0 && pluginDirectorySize <= WTF_ARRAY_LENGTH(pluginDirectoryStr))
    214         directories.append(String(pluginDirectoryStr, pluginDirectorySize - 1));
     215        directories.append(wcharToString(pluginDirectoryStr, pluginDirectorySize - 1));
    215216
    216217    DWORD type;
     
    221222
    222223    if (result == ERROR_SUCCESS && type == REG_SZ)
    223         directories.append(String(installationDirectoryStr, installationDirectorySize / sizeof(WCHAR) - 1));
     224        directories.append(wcharToString(installationDirectoryStr, installationDirectorySize / sizeof(WCHAR) - 1));
    224225}
    225226
     
    245246            break;
    246247
    247         Vector<int> acrobatVersion = parseVersionString(String(name, nameLen));
     248        Vector<int> acrobatVersion = parseVersionString(wcharToString(name, nameLen));
    248249        if (compareVersions(acrobatVersion, latestAcrobatVersion)) {
    249250            latestAcrobatVersion = acrobatVersion;
    250             latestAcrobatVersionString = String(name, nameLen);
     251            latestAcrobatVersionString = wcharToString(name, nameLen);
    251252        }
    252253    }
     
    258259
    259260        String acrobatPluginKeyPath = "Software\\Adobe\\Acrobat Reader\\" + latestAcrobatVersionString + "\\InstallPath";
    260         result = getRegistryValue(HKEY_LOCAL_MACHINE, acrobatPluginKeyPath.charactersWithNullTermination().data(), 0, &type, acrobatInstallPathStr, &acrobatInstallPathSize);
     261        result = getRegistryValue(HKEY_LOCAL_MACHINE, stringToNullTerminatedWChar(acrobatPluginKeyPath).data(), 0, &type, acrobatInstallPathStr, &acrobatInstallPathSize);
    261262
    262263        if (result == ERROR_SUCCESS) {
    263             String acrobatPluginDirectory = String(acrobatInstallPathStr, acrobatInstallPathSize / sizeof(WCHAR) - 1) + "\\browser";
     264            String acrobatPluginDirectory = wcharToString(acrobatInstallPathStr, acrobatInstallPathSize / sizeof(WCHAR) - 1) + "\\browser";
    264265            directories.append(acrobatPluginDirectory);
    265266        }
     
    290291            break;
    291292
    292         Vector<int> javaVersion = parseVersionString(String(name, nameLen));
     293        Vector<int> javaVersion = parseVersionString(wcharToString(name, nameLen));
    293294        if (compareVersions(javaVersion, latestJavaVersion)) {
    294295            latestJavaVersion = javaVersion;
    295             latestJavaVersionString = String(name, nameLen);
     296            latestJavaVersionString = wcharToString(name, nameLen);
    296297        }
    297298    }
     
    305306
    306307        String javaPluginKeyPath = "Software\\JavaSoft\\Java Plug-in\\" + latestJavaVersionString;
    307         result = getRegistryValue(HKEY_LOCAL_MACHINE, javaPluginKeyPath.charactersWithNullTermination().data(), L"UseNewJavaPlugin", &type, &useNewPluginValue, &useNewPluginSize);
     308        result = getRegistryValue(HKEY_LOCAL_MACHINE, stringToNullTerminatedWChar(javaPluginKeyPath).data(), L"UseNewJavaPlugin", &type, &useNewPluginValue, &useNewPluginSize);
    308309
    309310        if (result == ERROR_SUCCESS && useNewPluginValue == 1) {
    310             result = getRegistryValue(HKEY_LOCAL_MACHINE, javaPluginKeyPath.charactersWithNullTermination().data(), L"JavaHome", &type, javaInstallPathStr, &javaInstallPathSize);
     311            result = getRegistryValue(HKEY_LOCAL_MACHINE, stringToNullTerminatedWChar(javaPluginKeyPath).data(), L"JavaHome", &type, javaInstallPathStr, &javaInstallPathSize);
    311312            if (result == ERROR_SUCCESS) {
    312                 String javaPluginDirectory = String(javaInstallPathStr, javaInstallPathSize / sizeof(WCHAR) - 1) + "\\bin\\new_plugin";
     313                String javaPluginDirectory = wcharToString(javaInstallPathStr, javaInstallPathSize / sizeof(WCHAR) - 1) + "\\bin\\new_plugin";
    313314                directories.append(javaPluginDirectory);
    314315            }
     
    336337            goto exit;
    337338
    338         pluginsDirectory = String(moduleFileNameStr) + "\\Plugins";
     339        pluginsDirectory = nullTerminatedWCharToString(moduleFileNameStr) + "\\Plugins";
    339340    }
    340341exit:
     
    352353
    353354    PathCombine(macromediaDirectoryStr, systemDirectoryStr, TEXT("macromed\\Flash"));
    354     directories.append(macromediaDirectoryStr);
     355    directories.append(nullTerminatedWCharToString(macromediaDirectoryStr));
    355356
    356357    PathCombine(macromediaDirectoryStr, systemDirectoryStr, TEXT("macromed\\Shockwave 10"));
    357     directories.append(macromediaDirectoryStr);
     358    directories.append(nullTerminatedWCharToString(macromediaDirectoryStr));
    358359}
    359360
  • trunk/Source/WebKit/win/Plugins/PluginPackageWin.cpp

    r196223 r217771  
    3535#include "Timer.h"
    3636#include "npruntime_impl.h"
     37#include <shlwapi.h>
    3738#include <string.h>
    3839#include <wtf/StdLibExtras.h>
    3940#include <wtf/text/CString.h>
    40 #include <shlwapi.h>
     41#include <wtf/text/win/WCharStringExtras.h>
    4142
    4243namespace WebCore {
     
    4849    String subInfo = "\\StringfileInfo\\040904E4\\" + info;
    4950    bool retval = VerQueryValueW(versionInfoData,
    50         const_cast<UChar*>(subInfo.charactersWithNullTermination().data()),
     51        stringToNullTerminatedWChar(subInfo).data(),
    5152        &buffer, &bufferLength);
    5253    if (!retval || bufferLength == 0)
     
    168169{
    169170    DWORD versionInfoSize, zeroHandle;
    170     versionInfoSize = GetFileVersionInfoSizeW(const_cast<UChar*>(m_path.charactersWithNullTermination().data()), &zeroHandle);
     171    versionInfoSize = GetFileVersionInfoSizeW(stringToNullTerminatedWChar(m_path).data(), &zeroHandle);
    171172    if (versionInfoSize == 0)
    172173        return false;
     
    174175    auto versionInfoData = std::make_unique<char[]>(versionInfoSize);
    175176
    176     if (!GetFileVersionInfoW(const_cast<UChar*>(m_path.charactersWithNullTermination().data()),
    177             0, versionInfoSize, versionInfoData.get()))
     177    if (!GetFileVersionInfoW(stringToNullTerminatedWChar(m_path).data(), 0, versionInfoSize, versionInfoData.get()))
    178178        return false;
    179179
     
    245245        String path = m_path.substring(0, m_path.reverseFind('\\'));
    246246
    247         if (!::SetCurrentDirectoryW(path.charactersWithNullTermination().data()))
     247        if (!::SetCurrentDirectoryW(stringToNullTerminatedWChar(path).data()))
    248248            return false;
    249249
    250250        // Load the library
    251         m_module = ::LoadLibraryExW(m_path.charactersWithNullTermination().data(), 0, LOAD_WITH_ALTERED_SEARCH_PATH);
     251        m_module = ::LoadLibraryExW(stringToNullTerminatedWChar(m_path).data(), 0, LOAD_WITH_ALTERED_SEARCH_PATH);
    252252
    253253        if (!::SetCurrentDirectoryW(currentPath)) {
  • trunk/Source/WebKit/win/Plugins/PluginViewWin.cpp

    r216554 r217771  
    7373#include <wtf/ASCIICType.h>
    7474#include <wtf/text/WTFString.h>
     75#include <wtf/text/win/WCharStringExtras.h>
    7576#include <wtf/win/GDIObject.h>
    7677
     
    762763    // Get file info
    763764    WIN32_FILE_ATTRIBUTE_DATA attrs;
    764     if (GetFileAttributesExW(filename.charactersWithNullTermination().data(), GetFileExInfoStandard, &attrs) == 0)
     765    if (!GetFileAttributesExW(stringToNullTerminatedWChar(filename).data(), GetFileExInfoStandard, &attrs))
    765766        return NPERR_FILE_NOT_FOUND;
    766767
     
    768769        return NPERR_FILE_NOT_FOUND;
    769770
    770     HANDLE fileHandle = CreateFileW(filename.charactersWithNullTermination().data(), FILE_READ_DATA, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
     771    HANDLE fileHandle = CreateFileW(stringToNullTerminatedWChar(filename).data(), FILE_READ_DATA, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
    771772   
    772773    if (fileHandle == INVALID_HANDLE_VALUE)
Note: See TracChangeset for help on using the changeset viewer.