mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 07:15:46 +00:00
bdcac7a378
This handles the case where the profiler state changes in the parent process between the initial launch of the child process and the time at which the PProfiler connection is established. MozReview-Commit-ID: 5SQme5M7P30 --HG-- extra : rebase_source : 301d5541ff5c05a9540e45f1b57c13fb37d5d6fa
54 lines
1.7 KiB
C++
54 lines
1.7 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 ProfilerChild_h
|
|
#define ProfilerChild_h
|
|
|
|
#include "mozilla/PProfilerChild.h"
|
|
#include "mozilla/RefPtr.h"
|
|
|
|
class nsIThread;
|
|
|
|
namespace mozilla {
|
|
|
|
// The ProfilerChild actor is created in all processes except for the main
|
|
// process. The corresponding ProfilerParent actor is created in the main
|
|
// process, and it will notify us about profiler state changes and request
|
|
// profiles from us.
|
|
class ProfilerChild final : public PProfilerChild
|
|
{
|
|
NS_INLINE_DECL_REFCOUNTING(ProfilerChild)
|
|
|
|
ProfilerChild();
|
|
|
|
// Collects and returns a profile.
|
|
// This method can be used to grab a profile just before PProfiler is torn
|
|
// down. The collected profile should then be sent through a different
|
|
// message channel that is guaranteed to stay open long enough.
|
|
nsCString GrabShutdownProfile();
|
|
|
|
void Destroy();
|
|
|
|
private:
|
|
virtual ~ProfilerChild();
|
|
|
|
mozilla::ipc::IPCResult RecvStart(const ProfilerInitParams& params) override;
|
|
mozilla::ipc::IPCResult RecvEnsureStarted(const ProfilerInitParams& params) override;
|
|
mozilla::ipc::IPCResult RecvStop() override;
|
|
mozilla::ipc::IPCResult RecvPause() override;
|
|
mozilla::ipc::IPCResult RecvResume() override;
|
|
mozilla::ipc::IPCResult RecvGatherProfile(GatherProfileResolver&& aResolve) override;
|
|
|
|
void ActorDestroy(ActorDestroyReason aActorDestroyReason) override;
|
|
|
|
nsCOMPtr<nsIThread> mThread;
|
|
bool mDestroyed;
|
|
};
|
|
|
|
} // namespace mozilla
|
|
|
|
#endif // ProfilerChild_h
|