forked from mirrors/gecko-dev
Create a new utility-process type for the sole use of out-of-process instantiation of the Windows file dialog. We do not sandbox this process type, as in certain test environments sandboxing has been found to prevent the child process from interacting with any other windows on the desktop -- including the parent process window which it will need to assign as the parent of the file dialog. Technically, no functional changes, as this commit adds no uses of this type. (That will come later in the patchset.) Differential Revision: https://phabricator.services.mozilla.com/D180341
67 lines
2.1 KiB
C++
67 lines
2.1 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 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 "mozilla/ProcInfo.h"
|
|
|
|
#include "mozilla/UniquePtr.h"
|
|
#include "nsNetCID.h"
|
|
#include "nsServiceManagerUtils.h"
|
|
#include "nsThreadUtils.h"
|
|
|
|
namespace mozilla {
|
|
|
|
RefPtr<ProcInfoPromise> GetProcInfo(nsTArray<ProcInfoRequest>&& aRequests) {
|
|
auto holder = MakeUnique<MozPromiseHolder<ProcInfoPromise>>();
|
|
RefPtr<ProcInfoPromise> promise = holder->Ensure(__func__);
|
|
|
|
nsresult rv = NS_OK;
|
|
nsCOMPtr<nsIEventTarget> target =
|
|
do_GetService(NS_STREAMTRANSPORTSERVICE_CONTRACTID, &rv);
|
|
if (NS_FAILED(rv)) {
|
|
NS_WARNING("Failed to get stream transport service");
|
|
holder->Reject(rv, __func__);
|
|
return promise;
|
|
}
|
|
|
|
RefPtr<nsIRunnable> r = NS_NewRunnableFunction(
|
|
__func__,
|
|
[holder = std::move(holder),
|
|
requests = std::move(aRequests)]() mutable -> void {
|
|
holder->ResolveOrReject(GetProcInfoSync(std::move(requests)), __func__);
|
|
});
|
|
|
|
rv = target->Dispatch(r.forget(), NS_DISPATCH_NORMAL);
|
|
if (NS_FAILED(rv)) {
|
|
NS_WARNING("Failed to dispatch the LoadDataRunnable.");
|
|
}
|
|
|
|
return promise;
|
|
}
|
|
|
|
nsCString GetUtilityActorName(const UtilityActorName aActorName) {
|
|
switch (aActorName) {
|
|
case UtilityActorName::Unknown:
|
|
return "unknown"_ns;
|
|
case UtilityActorName::AudioDecoder_Generic:
|
|
return "audio-decoder-generic"_ns;
|
|
case UtilityActorName::AudioDecoder_AppleMedia:
|
|
return "audio-decoder-applemedia"_ns;
|
|
case UtilityActorName::AudioDecoder_WMF:
|
|
return "audio-decoder-wmf"_ns;
|
|
case UtilityActorName::MfMediaEngineCDM:
|
|
return "mf-media-engine"_ns;
|
|
case UtilityActorName::JSOracle:
|
|
return "js-oracle"_ns;
|
|
case UtilityActorName::WindowsUtils:
|
|
return "windows-utils"_ns;
|
|
case UtilityActorName::WindowsFileDialog:
|
|
return "windows-file-dialog"_ns;
|
|
default:
|
|
return "unknown"_ns;
|
|
}
|
|
}
|
|
|
|
} // namespace mozilla
|