Esempio n. 1
0
void
mozilla::CreateHangMonitorChild(Endpoint<PProcessHangMonitorChild>&& aEndpoint)
{
  MOZ_RELEASE_ASSERT(NS_IsMainThread());

  JSContext* cx = danger::GetJSContext();
  JS_AddInterruptCallback(cx, InterruptCallback);

  ProcessHangMonitor* monitor = ProcessHangMonitor::GetOrCreate();
  auto* child = new HangMonitorChild(monitor);

  monitor->Dispatch(NewNonOwningRunnableMethod
                    <Endpoint<PProcessHangMonitorChild>&&>(child,
                                                           &HangMonitorChild::Bind,
                                                           Move(aEndpoint)));
}
Esempio n. 2
0
static PProcessHangMonitorParent*
CreateHangMonitorParent(ContentParent* aContentParent,
                        Endpoint<PProcessHangMonitorParent>&& aEndpoint)
{
  MOZ_RELEASE_ASSERT(NS_IsMainThread());

  ProcessHangMonitor* monitor = ProcessHangMonitor::GetOrCreate();
  auto* parent = new HangMonitorParent(monitor);

  auto* process = new HangMonitoredProcess(parent, aContentParent);
  parent->SetProcess(process);

  monitor->Dispatch(NewNonOwningRunnableMethod
                    <Endpoint<PProcessHangMonitorParent>&&>(parent,
                                                            &HangMonitorParent::Bind,
                                                            Move(aEndpoint)));

  return parent;
}