mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Mac v2 signing - Bug 1050944 - Get Firefox to launch and run on OSX with the new .app bundle structure, made necessary by Apple's v2 signatures. r=smichaud, r=ted, sr=bsmedberg
This commit is contained in:
parent
34a3832be4
commit
b8761ffa6f
@ -50,6 +50,9 @@
|
||||
|
||||
using namespace mozilla;
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
#define kOSXResourcesFolder "Resources"
|
||||
#endif
|
||||
#define kDesktopFolder "browser"
|
||||
#define kMetroFolder "metro"
|
||||
#define kMetroAppIniFilename "metroapp.ini"
|
||||
@ -270,7 +273,12 @@ static int do_main(int argc, char* argv[], nsIFile *xreDirectory)
|
||||
|
||||
nsCOMPtr<nsIFile> greDir;
|
||||
exeFile->GetParent(getter_AddRefs(greDir));
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
nsCOMPtr<nsIFile> parent;
|
||||
greDir->GetParent(getter_AddRefs(parent));
|
||||
greDir = parent.forget();
|
||||
greDir->AppendNative(NS_LITERAL_CSTRING(kOSXResourcesFolder));
|
||||
#endif
|
||||
nsCOMPtr<nsIFile> appSubdir;
|
||||
greDir->Clone(getter_AddRefs(appSubdir));
|
||||
appSubdir->Append(NS_LITERAL_STRING(kDesktopFolder));
|
||||
@ -564,6 +572,10 @@ InitXPCOMGlue(const char *argv0, nsIFile **xreDirectory)
|
||||
|
||||
// chop XPCOM_DLL off exePath
|
||||
*lastSlash = '\0';
|
||||
#ifdef XP_MACOSX
|
||||
lastSlash = strrchr(exePath, XPCOM_FILE_PATH_SEPARATOR[0]);
|
||||
strcpy(lastSlash + 1, kOSXResourcesFolder);
|
||||
#endif
|
||||
#ifdef XP_WIN
|
||||
rv = NS_NewLocalFile(NS_ConvertUTF8toUTF16(exePath), false,
|
||||
xreDirectory);
|
||||
|
@ -135,15 +135,26 @@ GeckoChildProcessHost::GetPathToBinary(FilePath& exePath)
|
||||
MOZ_ASSERT(gGREPath);
|
||||
#ifdef OS_WIN
|
||||
exePath = FilePath(char16ptr_t(gGREPath));
|
||||
#elif MOZ_WIDGET_COCOA
|
||||
nsCOMPtr<nsIFile> childProcPath;
|
||||
NS_NewLocalFile(nsDependentString(gGREPath), false,
|
||||
getter_AddRefs(childProcPath));
|
||||
// We need to use an App Bundle on OS X so that we can hide
|
||||
// the dock icon. See Bug 557225.
|
||||
nsCOMPtr<nsIFile> tempPath;
|
||||
childProcPath->GetParent(getter_AddRefs(tempPath));
|
||||
childProcPath = tempPath.forget();
|
||||
childProcPath->AppendNative(NS_LITERAL_CSTRING("MacOS"));
|
||||
childProcPath->AppendNative(NS_LITERAL_CSTRING("plugin-container.app"));
|
||||
childProcPath->AppendNative(NS_LITERAL_CSTRING("Contents"));
|
||||
childProcPath->AppendNative(NS_LITERAL_CSTRING("MacOS"));
|
||||
nsCString tempCPath;
|
||||
childProcPath->GetNativePath(tempCPath);
|
||||
exePath = FilePath(tempCPath.get());
|
||||
#else
|
||||
nsCString path;
|
||||
NS_CopyUnicodeToNative(nsDependentString(gGREPath), path);
|
||||
exePath = FilePath(path.get());
|
||||
#endif
|
||||
#ifdef MOZ_WIDGET_COCOA
|
||||
// We need to use an App Bundle on OS X so that we can hide
|
||||
// the dock icon. See Bug 557225.
|
||||
exePath = exePath.AppendASCII(MOZ_CHILD_PROCESS_BUNDLE);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1086,6 +1086,10 @@ nsresult SetExceptionHandler(nsIFile* aXREDirectory,
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
#if defined(XP_MACOSX)
|
||||
nsCOMPtr<nsIFile> parentPath;
|
||||
exePath->GetParent(getter_AddRefs(parentPath));
|
||||
exePath = parentPath.forget();
|
||||
exePath->Append(NS_LITERAL_STRING("MacOS"));
|
||||
exePath->Append(NS_LITERAL_STRING("crashreporter.app"));
|
||||
exePath->Append(NS_LITERAL_STRING("Contents"));
|
||||
exePath->Append(NS_LITERAL_STRING("MacOS"));
|
||||
|
@ -4173,6 +4173,8 @@ XREMain::XRE_mainRun()
|
||||
|
||||
/*
|
||||
* XRE_main - A class based main entry point used by most platforms.
|
||||
* Note that on OSX, aAppData->xreDirectory will point to
|
||||
* .app/Contents/Resources.
|
||||
*/
|
||||
int
|
||||
XREMain::XRE_main(int argc, char* argv[], const nsXREAppData* aAppData)
|
||||
|
@ -132,7 +132,9 @@ protected:
|
||||
void Append(nsIFile* aDirectory);
|
||||
|
||||
nsCOMPtr<nsIDirectoryServiceProvider> mAppProvider;
|
||||
// On OSX, mGREDir points to .app/Contents/Resources
|
||||
nsCOMPtr<nsIFile> mGREDir;
|
||||
// On OSX, mXULAppDir points to .app/Contents/Resources/browser
|
||||
nsCOMPtr<nsIFile> mXULAppDir;
|
||||
nsCOMPtr<nsIFile> mProfileDir;
|
||||
nsCOMPtr<nsIFile> mProfileLocalDir;
|
||||
|
@ -475,6 +475,7 @@ NS_IMPL_ISUPPORTS(NesteggReporter, nsIMemoryReporter)
|
||||
CountingAllocatorBase<NesteggReporter>::sAmount(0);
|
||||
#endif /* MOZ_WEBM */
|
||||
|
||||
// Note that on OSX, aBinDirectory will point to .app/Contents/Resources/browser
|
||||
EXPORT_XPCOM_API(nsresult)
|
||||
NS_InitXPCOM2(nsIServiceManager** aResult,
|
||||
nsIFile* aBinDirectory,
|
||||
@ -593,6 +594,17 @@ NS_InitXPCOM2(nsIServiceManager** aResult,
|
||||
xpcomLib->GetPath(path);
|
||||
gGREPath = ToNewUnicode(path);
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
nsCOMPtr<nsIFile> parent;
|
||||
xpcomLib->GetParent(getter_AddRefs(parent));
|
||||
parent->AppendNative(NS_LITERAL_CSTRING("MacOS"));
|
||||
bool pathExists = false;
|
||||
parent->Exists(&pathExists);
|
||||
if (pathExists) {
|
||||
xpcomLib = parent.forget();
|
||||
}
|
||||
#endif
|
||||
|
||||
xpcomLib->AppendNative(nsDependentCString(XPCOM_DLL));
|
||||
nsDirectoryService::gService->Set(NS_XPCOM_LIBRARY_FILE, xpcomLib);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user