Bug 1329294 Part 1: Ensure Content Temp Dir is created before use. r=bsmedberg

This commit is contained in:
Bob Owen 2017-04-10 14:38:13 +01:00
parent a30be0b80c
commit 02318af6d1

View File

@ -746,7 +746,14 @@ GetContentProcessTempBaseDirKey()
nsresult
nsXREDirProvider::LoadContentProcessTempDir()
{
mContentTempDir = GetContentProcessSandboxTempDir();
// The parent is responsible for creating the sandbox temp dir.
if (XRE_IsParentProcess()) {
mContentProcessSandboxTempDir = CreateContentProcessSandboxTempDir();
mContentTempDir = mContentProcessSandboxTempDir;
} else {
mContentTempDir = GetContentProcessSandboxTempDir();
}
if (mContentTempDir) {
return NS_OK;
} else {
@ -1202,10 +1209,11 @@ nsXREDirProvider::DoStartup()
obsSvc->NotifyObservers(nullptr, "profile-initial-state", nullptr);
#if (defined(XP_WIN) || defined(XP_MACOSX)) && defined(MOZ_CONTENT_SANDBOX)
// The parent is responsible for creating the sandbox temp dir
if (XRE_IsParentProcess()) {
mContentProcessSandboxTempDir = CreateContentProcessSandboxTempDir();
mContentTempDir = mContentProcessSandboxTempDir;
// Makes sure the content temp dir has been loaded if it hasn't been
// already. In the parent this ensures it has been created before we attempt
// to start any content processes.
if (!mContentTempDir) {
mozilla::Unused << NS_WARN_IF(NS_FAILED(LoadContentProcessTempDir()));
}
#endif
}