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))); }
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; }