mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 13:21:05 +00:00
2e25ca863b
This is possible if the socket process bridge ends up being restarted, so needs to be handled as an edge-case. The approach taken here is to tightly couple the task queue, pid, and BackgroundStarterChild instances so that they can be swapped out at runtime whenever InitStarter is called. There is no test in the current patch as it is apparently still unsupported to restart the socket process after a crash. Differential Revision: https://phabricator.services.mozilla.com/D135746
36 lines
1.2 KiB
C++
36 lines
1.2 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/. */
|
|
|
|
#ifndef mozilla_ipc_BackgroundStarterChild_h
|
|
#define mozilla_ipc_BackgroundStarterChild_h
|
|
|
|
#include "mozilla/ipc/PBackgroundStarterChild.h"
|
|
#include "mozilla/dom/ContentChild.h"
|
|
|
|
namespace mozilla::ipc {
|
|
|
|
class BackgroundStarterChild final : public PBackgroundStarterChild {
|
|
public:
|
|
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(BackgroundStarterChild, override)
|
|
|
|
BackgroundStarterChild(base::ProcessId aOtherPid,
|
|
nsISerialEventTarget* aTaskQueue)
|
|
: mOtherPid(aOtherPid), mTaskQueue(aTaskQueue) {}
|
|
|
|
// Unlike the methods on `IToplevelProtocol`, may be accessed on any thread
|
|
// and will not be modified after construction.
|
|
const base::ProcessId mOtherPid;
|
|
const nsCOMPtr<nsISerialEventTarget> mTaskQueue;
|
|
|
|
private:
|
|
friend class PBackgroundStarterChild;
|
|
~BackgroundStarterChild() = default;
|
|
};
|
|
|
|
} // namespace mozilla::ipc
|
|
|
|
#endif // mozilla_ipc_BackgroundStarterChild_h
|