// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module reaper;

import "services/reaper/reaper.mojom";
import "services/reaper/scythe.mojom";

// Diagnostic and test support for the reaper.
interface Diagnostics {
  // Returns all live nodes, in no particular order.
  DumpNodes() => (array<Node> nodes);

  // Clear all state.
  Reset();

  // Get a reaper for any app URL.
  GetReaperForApp(string app_url, Reaper& reaper);

  // Set whether a particular URL is a GC root or not.
  SetIsRoot(string app_url, bool is_root);

  // Set the tool Reaper will use to kill applications.
  SetScythe(Scythe scythe);

  // No-op used for creating ordering between interfaces.
  Ping() => ();
};

struct Node {
  string app_url;
  uint32 node_id;
  string other_app_url;
  uint32 other_id;
  bool is_source;
};
