From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- js/xpconnect/shell/Makefile.in | 6 +++ js/xpconnect/shell/moz.build | 60 +++++++++++++++++++++++++++ js/xpconnect/shell/xpcshell.cpp | 69 ++++++++++++++++++++++++++++++++ js/xpconnect/shell/xpcshell.exe.manifest | 31 ++++++++++++++ js/xpconnect/shell/xpcshell.rc | 6 +++ js/xpconnect/shell/xpcshellMacUtils.h | 9 +++++ js/xpconnect/shell/xpcshellMacUtils.mm | 19 +++++++++ 7 files changed, 200 insertions(+) create mode 100644 js/xpconnect/shell/Makefile.in create mode 100644 js/xpconnect/shell/moz.build create mode 100644 js/xpconnect/shell/xpcshell.cpp create mode 100644 js/xpconnect/shell/xpcshell.exe.manifest create mode 100644 js/xpconnect/shell/xpcshell.rc create mode 100644 js/xpconnect/shell/xpcshellMacUtils.h create mode 100644 js/xpconnect/shell/xpcshellMacUtils.mm (limited to 'js/xpconnect/shell') diff --git a/js/xpconnect/shell/Makefile.in b/js/xpconnect/shell/Makefile.in new file mode 100644 index 000000000..e5aaf7b44 --- /dev/null +++ b/js/xpconnect/shell/Makefile.in @@ -0,0 +1,6 @@ +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +NSDISTMODE = copy diff --git a/js/xpconnect/shell/moz.build b/js/xpconnect/shell/moz.build new file mode 100644 index 000000000..ecc796f7f --- /dev/null +++ b/js/xpconnect/shell/moz.build @@ -0,0 +1,60 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +GeckoProgram('xpcshell', linkage='dependent') + +if CONFIG['COMPILE_ENVIRONMENT']: + SDK_FILES.bin += [ + '!xpcshell%s' % CONFIG['BIN_SUFFIX'], + ] + +SOURCES += [ + 'xpcshell.cpp', +] + +if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': + SOURCES += [ + 'xpcshellMacUtils.mm', + ] + +include('/ipc/chromium/chromium-config.mozbuild') + +LOCAL_INCLUDES += [ + '/toolkit/xre', +] + +if CONFIG['_MSC_VER']: + # Always enter a Windows program through wmain, whether or not we're + # a console application. + WIN32_EXE_LDFLAGS += ['-ENTRY:wmainCRTStartup'] + +# DELAYLOAD_DLLS in this block ensure that the DLL blocklist initializes +if CONFIG['OS_ARCH'] == 'WINNT': + RCINCLUDE = 'xpcshell.rc' + + if CONFIG['MOZ_SANDBOX']: + # For sandbox includes and the include dependencies those have + LOCAL_INCLUDES += [ + '/security/sandbox/chromium', + '/security/sandbox/chromium-shim', + ] + + USE_LIBS += [ + 'sandbox_s', + ] + + DELAYLOAD_DLLS += [ + 'winmm.dll', + 'user32.dll', + ] + + DELAYLOAD_DLLS += [ + 'xul.dll', + ] + +CFLAGS += CONFIG['TK_CFLAGS'] +CXXFLAGS += CONFIG['TK_CFLAGS'] +OS_LIBS += CONFIG['TK_LIBS'] diff --git a/js/xpconnect/shell/xpcshell.cpp b/js/xpconnect/shell/xpcshell.cpp new file mode 100644 index 000000000..ba979bc69 --- /dev/null +++ b/js/xpconnect/shell/xpcshell.cpp @@ -0,0 +1,69 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=4 et sw=4 tw=99: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* XPConnect JavaScript interactive shell. */ + +#include + +#include "mozilla/WindowsDllBlocklist.h" + +#include "nsXULAppAPI.h" +#ifdef XP_MACOSX +#include "xpcshellMacUtils.h" +#endif +#ifdef XP_WIN +#include +#include + +// we want a wmain entry point +#define XRE_DONT_PROTECT_DLL_LOAD +#define XRE_WANT_ENVIRON +#include "nsWindowsWMain.cpp" +#ifdef MOZ_SANDBOX +#include "mozilla/sandboxing/SandboxInitialization.h" +#endif +#endif + +#ifdef MOZ_WIDGET_GTK +#include +#endif + +int +main(int argc, char** argv, char** envp) +{ +#ifdef MOZ_WIDGET_GTK + // A default display may or may not be required for xpcshell tests, and so + // is not created here. Instead we set the command line args, which is a + // fairly cheap operation. + gtk_parse_args(&argc, &argv); +#endif + +#ifdef XP_MACOSX + InitAutoreleasePool(); +#endif + + // unbuffer stdout so that output is in the correct order; note that stderr + // is unbuffered by default + setbuf(stdout, 0); + +#ifdef HAS_DLL_BLOCKLIST + DllBlocklist_Initialize(); +#endif + + XREShellData shellData; +#if defined(XP_WIN) && defined(MOZ_SANDBOX) + shellData.sandboxBrokerServices = + mozilla::sandboxing::GetInitializedBrokerServices(); +#endif + + int result = XRE_XPCShellMain(argc, argv, envp, &shellData); + +#ifdef XP_MACOSX + FinishAutoreleasePool(); +#endif + + return result; +} diff --git a/js/xpconnect/shell/xpcshell.exe.manifest b/js/xpconnect/shell/xpcshell.exe.manifest new file mode 100644 index 000000000..db2aa0861 --- /dev/null +++ b/js/xpconnect/shell/xpcshell.exe.manifest @@ -0,0 +1,31 @@ + + + + + + +XPConnect Shell + + + + + + + + + + + + + + + + + diff --git a/js/xpconnect/shell/xpcshell.rc b/js/xpconnect/shell/xpcshell.rc new file mode 100644 index 000000000..1b6bec6d4 --- /dev/null +++ b/js/xpconnect/shell/xpcshell.rc @@ -0,0 +1,6 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +1 RT_MANIFEST "xpcshell.exe.manifest" diff --git a/js/xpconnect/shell/xpcshellMacUtils.h b/js/xpconnect/shell/xpcshellMacUtils.h new file mode 100644 index 000000000..61d9030a9 --- /dev/null +++ b/js/xpconnect/shell/xpcshellMacUtils.h @@ -0,0 +1,9 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 sw=2 et tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +// Functions to setup and release the Mac memory pool +void InitAutoreleasePool(); +void FinishAutoreleasePool(); diff --git a/js/xpconnect/shell/xpcshellMacUtils.mm b/js/xpconnect/shell/xpcshellMacUtils.mm new file mode 100644 index 000000000..e0e4b04c8 --- /dev/null +++ b/js/xpconnect/shell/xpcshellMacUtils.mm @@ -0,0 +1,19 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 sw=2 et tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include + +static NSAutoreleasePool *pool = NULL; + +void InitAutoreleasePool() +{ + pool = [[NSAutoreleasePool alloc] init]; +} + +void FinishAutoreleasePool() +{ + [pool release]; +} -- cgit v1.2.3