8ac5e011d6
GitOrigin-RevId: 2c3273caa153ee8eb5786bc8141b85b859e7efd7
330 lines
13 KiB
Diff
330 lines
13 KiB
Diff
diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp
|
|
index 4a9049b..c0ac9db 100644
|
|
--- a/src/corelib/io/qfilesystemengine_unix.cpp
|
|
+++ b/src/corelib/io/qfilesystemengine_unix.cpp
|
|
@@ -242,9 +242,8 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry,
|
|
#else
|
|
char *ret = 0;
|
|
# if defined(Q_OS_MAC) && !defined(Q_OS_IOS)
|
|
- // When using -mmacosx-version-min=10.4, we get the legacy realpath implementation,
|
|
- // which does not work properly with the realpath(X,0) form. See QTBUG-28282.
|
|
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6) {
|
|
+ // In Nix-on-Darwin, we don't support ancient macOS anyway, and the deleted branch relies on
|
|
+ // a symbol that's been deprecated for years and that our CF doesn't have
|
|
ret = (char*)malloc(PATH_MAX + 1);
|
|
if (ret && realpath(entry.nativeFilePath().constData(), (char*)ret) == 0) {
|
|
const int savedErrno = errno; // errno is checked below, and free() might change it
|
|
@@ -252,19 +251,6 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry,
|
|
errno = savedErrno;
|
|
ret = 0;
|
|
}
|
|
- } else {
|
|
- // on 10.5 we can use FSRef to resolve the file path.
|
|
- QString path = QDir::cleanPath(entry.filePath());
|
|
- FSRef fsref;
|
|
- if (FSPathMakeRef((const UInt8 *)path.toUtf8().data(), &fsref, 0) == noErr) {
|
|
- CFURLRef urlref = CFURLCreateFromFSRef(NULL, &fsref);
|
|
- CFStringRef canonicalPath = CFURLCopyFileSystemPath(urlref, kCFURLPOSIXPathStyle);
|
|
- QString ret = QCFString::toQString(canonicalPath);
|
|
- CFRelease(canonicalPath);
|
|
- CFRelease(urlref);
|
|
- return QFileSystemEntry(ret);
|
|
- }
|
|
- }
|
|
# else
|
|
# if _POSIX_VERSION >= 200801L
|
|
ret = realpath(entry.nativeFilePath().constData(), (char*)0);
|
|
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.h b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.h
|
|
index 3bf7342..b6bcfc0 100644
|
|
--- a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.h
|
|
+++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.h
|
|
@@ -43,7 +43,6 @@ BOOL stringIsCaseInsensitiveEqualToString(NSString *first, NSString *second);
|
|
BOOL hasCaseInsensitiveSuffix(NSString *string, NSString *suffix);
|
|
BOOL hasCaseInsensitiveSubstring(NSString *string, NSString *substring);
|
|
NSString *filenameByFixingIllegalCharacters(NSString *string);
|
|
-CFStringEncoding stringEncodingForResource(Handle resource);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
diff --git a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.mm b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.mm
|
|
index d6c3f0c..c88ca76 100644
|
|
--- a/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.mm
|
|
+++ b/src/3rdparty/webkit/Source/WebCore/platform/mac/WebCoreNSStringExtras.mm
|
|
@@ -68,45 +68,4 @@ BOOL hasCaseInsensitiveSubstring(NSString *string, NSString *substring)
|
|
return filename;
|
|
}
|
|
|
|
-CFStringEncoding stringEncodingForResource(Handle resource)
|
|
-{
|
|
- short resRef = HomeResFile(resource);
|
|
- if (ResError() != noErr)
|
|
- return NSMacOSRomanStringEncoding;
|
|
-
|
|
- // Get the FSRef for the current resource file
|
|
- FSRef fref;
|
|
- OSStatus error = FSGetForkCBInfo(resRef, 0, NULL, NULL, NULL, &fref, NULL);
|
|
- if (error != noErr)
|
|
- return NSMacOSRomanStringEncoding;
|
|
-
|
|
- RetainPtr<CFURLRef> url(AdoptCF, CFURLCreateFromFSRef(NULL, &fref));
|
|
- if (!url)
|
|
- return NSMacOSRomanStringEncoding;
|
|
-
|
|
- NSString *path = [(NSURL *)url.get() path];
|
|
-
|
|
- // Get the lproj directory name
|
|
- path = [path stringByDeletingLastPathComponent];
|
|
- if (!stringIsCaseInsensitiveEqualToString([path pathExtension], @"lproj"))
|
|
- return NSMacOSRomanStringEncoding;
|
|
-
|
|
- NSString *directoryName = [[path stringByDeletingPathExtension] lastPathComponent];
|
|
- RetainPtr<CFStringRef> locale(AdoptCF, CFLocaleCreateCanonicalLocaleIdentifierFromString(NULL, (CFStringRef)directoryName));
|
|
- if (!locale)
|
|
- return NSMacOSRomanStringEncoding;
|
|
-
|
|
- LangCode lang;
|
|
- RegionCode region;
|
|
- error = LocaleStringToLangAndRegionCodes([(NSString *)locale.get() UTF8String], &lang, ®ion);
|
|
- if (error != noErr)
|
|
- return NSMacOSRomanStringEncoding;
|
|
-
|
|
- TextEncoding encoding;
|
|
- error = UpgradeScriptInfoToTextEncoding(kTextScriptDontCare, lang, region, NULL, &encoding);
|
|
- if (error != noErr)
|
|
- return NSMacOSRomanStringEncoding;
|
|
-
|
|
- return encoding;
|
|
-}
|
|
|
|
diff --git a/src/3rdparty/webkit/Source/WebCore/plugins/mac/PluginPackageMac.cpp b/src/3rdparty/webkit/Source/WebCore/plugins/mac/PluginPackageMac.cpp
|
|
index 865ea32..20bda8d 100644
|
|
--- a/src/3rdparty/webkit/Source/WebCore/plugins/mac/PluginPackageMac.cpp
|
|
+++ b/src/3rdparty/webkit/Source/WebCore/plugins/mac/PluginPackageMac.cpp
|
|
@@ -101,33 +101,6 @@ static WTF::RetainPtr<CFDictionaryRef> readPListFile(CFStringRef fileName, bool
|
|
return map;
|
|
}
|
|
|
|
-static Vector<String> stringListFromResourceId(SInt16 id)
|
|
-{
|
|
- Vector<String> list;
|
|
-
|
|
- Handle handle = Get1Resource('STR#', id);
|
|
- if (!handle)
|
|
- return list;
|
|
-
|
|
- CFStringEncoding encoding = stringEncodingForResource(handle);
|
|
-
|
|
- unsigned char* p = (unsigned char*)*handle;
|
|
- if (!p)
|
|
- return list;
|
|
-
|
|
- SInt16 count = *(SInt16*)p;
|
|
- p += sizeof(SInt16);
|
|
-
|
|
- for (SInt16 i = 0; i < count; ++i) {
|
|
- unsigned char length = *p;
|
|
- WTF::RetainPtr<CFStringRef> str = CFStringCreateWithPascalString(0, p, encoding);
|
|
- list.append(str.get());
|
|
- p += 1 + length;
|
|
- }
|
|
-
|
|
- return list;
|
|
-}
|
|
-
|
|
bool PluginPackage::fetchInfo()
|
|
{
|
|
if (!load())
|
|
@@ -202,36 +175,8 @@ bool PluginPackage::fetchInfo()
|
|
m_description = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(m_module, CFSTR("WebPluginDescription"));
|
|
|
|
} else {
|
|
- int resFile = CFBundleOpenBundleResourceMap(m_module);
|
|
-
|
|
- UseResFile(resFile);
|
|
-
|
|
- Vector<String> mimes = stringListFromResourceId(MIMEListStringStringNumber);
|
|
-
|
|
- if (mimes.size() % 2 != 0)
|
|
- return false;
|
|
-
|
|
- Vector<String> descriptions = stringListFromResourceId(MIMEDescriptionStringNumber);
|
|
- if (descriptions.size() != mimes.size() / 2)
|
|
- return false;
|
|
-
|
|
- for (size_t i = 0; i < mimes.size(); i += 2) {
|
|
- String mime = mimes[i].lower();
|
|
- Vector<String> extensions;
|
|
- mimes[i + 1].lower().split(UChar(','), extensions);
|
|
-
|
|
- m_mimeToExtensions.set(mime, extensions);
|
|
-
|
|
- m_mimeToDescriptions.set(mime, descriptions[i / 2]);
|
|
- }
|
|
-
|
|
- Vector<String> names = stringListFromResourceId(PluginNameOrDescriptionStringNumber);
|
|
- if (names.size() == 2) {
|
|
- m_description = names[0];
|
|
- m_name = names[1];
|
|
- }
|
|
-
|
|
- CFBundleCloseBundleResourceMap(m_module, resFile);
|
|
+ LOG(Plugins, "Nix removed ancient code that relies on long-deprecated functionality that we don't want to support!");
|
|
+ return false;
|
|
}
|
|
|
|
LOG(Plugins, "PluginPackage::fetchInfo(): Found plug-in '%s'", m_name.utf8().data());
|
|
diff --git a/src/3rdparty/webkit/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm b/src/3rdparty/webkit/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm
|
|
index b206e48..669d442 100644
|
|
--- a/src/3rdparty/webkit/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm
|
|
+++ b/src/3rdparty/webkit/Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm
|
|
@@ -26,7 +26,6 @@
|
|
#import "config.h"
|
|
#import "NetscapePluginModule.h"
|
|
|
|
-#import <WebCore/WebCoreNSStringExtras.h>
|
|
#import <wtf/HashSet.h>
|
|
|
|
using namespace WebCore;
|
|
@@ -196,132 +195,6 @@ static bool getPluginInfoFromPropertyLists(CFBundleRef bundle, PluginInfo& plugi
|
|
return true;
|
|
}
|
|
|
|
-class ResourceMap {
|
|
-public:
|
|
- explicit ResourceMap(CFBundleRef bundle)
|
|
- : m_bundle(bundle)
|
|
- , m_currentResourceFile(CurResFile())
|
|
- , m_bundleResourceMap(CFBundleOpenBundleResourceMap(m_bundle))
|
|
- {
|
|
- UseResFile(m_bundleResourceMap);
|
|
- }
|
|
-
|
|
- ~ResourceMap()
|
|
- {
|
|
- // Close the resource map.
|
|
- CFBundleCloseBundleResourceMap(m_bundle, m_bundleResourceMap);
|
|
-
|
|
- // And restore the old resource.
|
|
- UseResFile(m_currentResourceFile);
|
|
- }
|
|
-
|
|
- bool isValid() const { return m_bundleResourceMap != -1; }
|
|
-
|
|
-private:
|
|
- CFBundleRef m_bundle;
|
|
- ResFileRefNum m_currentResourceFile;
|
|
- ResFileRefNum m_bundleResourceMap;
|
|
-};
|
|
-
|
|
-static bool getStringListResource(ResID resourceID, Vector<String>& stringList) {
|
|
- Handle stringListHandle = Get1Resource('STR#', resourceID);
|
|
- if (!stringListHandle || !*stringListHandle)
|
|
- return false;
|
|
-
|
|
- // Get the string list size.
|
|
- Size stringListSize = GetHandleSize(stringListHandle);
|
|
- if (stringListSize < static_cast<Size>(sizeof(UInt16)))
|
|
- return false;
|
|
-
|
|
- CFStringEncoding stringEncoding = stringEncodingForResource(stringListHandle);
|
|
-
|
|
- unsigned char* ptr = reinterpret_cast<unsigned char*>(*stringListHandle);
|
|
- unsigned char* end = ptr + stringListSize;
|
|
-
|
|
- // Get the number of strings in the string list.
|
|
- UInt16 numStrings = *reinterpret_cast<UInt16*>(ptr);
|
|
- ptr += sizeof(UInt16);
|
|
-
|
|
- for (UInt16 i = 0; i < numStrings; ++i) {
|
|
- // We're past the end of the string, bail.
|
|
- if (ptr >= end)
|
|
- return false;
|
|
-
|
|
- // Get the string length.
|
|
- unsigned char stringLength = *ptr++;
|
|
-
|
|
- RetainPtr<CFStringRef> cfString(AdoptCF, CFStringCreateWithBytesNoCopy(kCFAllocatorDefault, ptr, stringLength, stringEncoding, false, kCFAllocatorNull));
|
|
- if (!cfString.get())
|
|
- return false;
|
|
-
|
|
- stringList.append(cfString.get());
|
|
- ptr += stringLength;
|
|
- }
|
|
-
|
|
- if (ptr != end)
|
|
- return false;
|
|
-
|
|
- return true;
|
|
-}
|
|
-
|
|
-static const ResID PluginNameOrDescriptionStringNumber = 126;
|
|
-static const ResID MIMEDescriptionStringNumber = 127;
|
|
-static const ResID MIMEListStringStringNumber = 128;
|
|
-
|
|
-static bool getPluginInfoFromCarbonResources(CFBundleRef bundle, PluginInfo& pluginInfo)
|
|
-{
|
|
- ResourceMap resourceMap(bundle);
|
|
- if (!resourceMap.isValid())
|
|
- return false;
|
|
-
|
|
- // Get the description and name string list.
|
|
- Vector<String> descriptionAndName;
|
|
- if (!getStringListResource(PluginNameOrDescriptionStringNumber, descriptionAndName))
|
|
- return false;
|
|
-
|
|
- // Get the MIME types and extensions string list. This list needs to be a multiple of two.
|
|
- Vector<String> mimeTypesAndExtensions;
|
|
- if (!getStringListResource(MIMEListStringStringNumber, mimeTypesAndExtensions))
|
|
- return false;
|
|
-
|
|
- if (mimeTypesAndExtensions.size() % 2)
|
|
- return false;
|
|
-
|
|
- // Now get the MIME type descriptions string list. This string list needs to be the same length as the number of MIME types.
|
|
- Vector<String> mimeTypeDescriptions;
|
|
- if (!getStringListResource(MIMEDescriptionStringNumber, mimeTypeDescriptions))
|
|
- return false;
|
|
-
|
|
- // Add all MIME types.
|
|
- for (size_t i = 0; i < mimeTypesAndExtensions.size() / 2; ++i) {
|
|
- MimeClassInfo mimeClassInfo;
|
|
-
|
|
- const String& mimeType = mimeTypesAndExtensions[i * 2];
|
|
- String description;
|
|
- if (i < mimeTypeDescriptions.size())
|
|
- description = mimeTypeDescriptions[i];
|
|
-
|
|
- mimeClassInfo.type = mimeType.lower();
|
|
- mimeClassInfo.desc = description;
|
|
-
|
|
- Vector<String> extensions;
|
|
- mimeTypesAndExtensions[i * 2 + 1].split(',', extensions);
|
|
-
|
|
- for (size_t i = 0; i < extensions.size(); ++i)
|
|
- mimeClassInfo.extensions.append(extensions[i].lower());
|
|
-
|
|
- pluginInfo.mimes.append(mimeClassInfo);
|
|
- }
|
|
-
|
|
- // Set the description and name if they exist.
|
|
- if (descriptionAndName.size() > 0)
|
|
- pluginInfo.desc = descriptionAndName[0];
|
|
- if (descriptionAndName.size() > 1)
|
|
- pluginInfo.name = descriptionAndName[1];
|
|
-
|
|
- return true;
|
|
-}
|
|
-
|
|
bool NetscapePluginModule::getPluginInfo(const String& pluginPath, PluginInfoStore::Plugin& plugin)
|
|
{
|
|
RetainPtr<CFStringRef> bundlePath(AdoptCF, pluginPath.createCFString());
|
|
@@ -344,8 +217,7 @@ static bool getPluginInfoFromCarbonResources(CFBundleRef bundle, PluginInfo& plu
|
|
return false;
|
|
|
|
// Check that there's valid info for this plug-in.
|
|
- if (!getPluginInfoFromPropertyLists(bundle.get(), plugin.info) &&
|
|
- !getPluginInfoFromCarbonResources(bundle.get(), plugin.info))
|
|
+ if (!getPluginInfoFromPropertyLists(bundle.get(), plugin.info))
|
|
return false;
|
|
|
|
plugin.path = pluginPath;
|