// 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";

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

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