зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1659838: Change IOUtils shutdown blocker phase from XPCOMWillShutdown to ProfileBeforeChange r=Gijs
IOUtils is meant to act as a drop-in replacement for OS.File. Previously, IOUtils would block shutdown at the XPCOMWillShutDown phase to allow pending I/O tasks to finish, however, OS.File blocks for the same reason during the ProfileBeforeChange phase. To make IOUtils directly compatible with OS.File, we now match this behaviour. Differential Revision: https://phabricator.services.mozilla.com/D87511
This commit is contained in:
Родитель
07edf2a38a
Коммит
b1744ebbe9
|
@ -3,6 +3,17 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
* 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/.
|
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IOUtils is a simple, efficient interface for performing file I/O from a
|
||||||
|
* privileged chrome-only context. All asynchronous I/O tasks are run on
|
||||||
|
* a background thread.
|
||||||
|
*
|
||||||
|
* Pending I/O tasks will block shutdown at the |profileBeforeChange| phase.
|
||||||
|
* During this shutdown phase, no additional I/O tasks will be accepted --
|
||||||
|
* method calls to this interface will reject once shutdown has entered this
|
||||||
|
* phase.
|
||||||
|
*/
|
||||||
[ChromeOnly, Exposed=(Window, Worker)]
|
[ChromeOnly, Exposed=(Window, Worker)]
|
||||||
namespace IOUtils {
|
namespace IOUtils {
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -451,7 +451,7 @@ already_AddRefed<nsIAsyncShutdownClient> IOUtils::GetShutdownBarrier() {
|
||||||
MOZ_ASSERT(svc);
|
MOZ_ASSERT(svc);
|
||||||
|
|
||||||
nsCOMPtr<nsIAsyncShutdownClient> barrier;
|
nsCOMPtr<nsIAsyncShutdownClient> barrier;
|
||||||
nsresult rv = svc->GetXpcomWillShutdown(getter_AddRefs(barrier));
|
nsresult rv = svc->GetProfileBeforeChange(getter_AddRefs(barrier));
|
||||||
NS_ENSURE_SUCCESS(rv, nullptr);
|
NS_ENSURE_SUCCESS(rv, nullptr);
|
||||||
sBarrier = barrier;
|
sBarrier = barrier;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче