// Copyright 2013 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.

// Use the <code>chrome.diagnostics</code> API to query various properties of
// the environment that may be useful for diagnostics.
namespace diagnostics {
  dictionary SendPacketOptions {
    // Target IP address.
    DOMString ip;
    // Packet time to live value. If omitted, the system default value will be
    // used.
    long? ttl;
    // Packet timeout in seconds. If omitted, the system default value will be
    // used.
    long? timeout;
    // Size of the payload. If omitted, the system default value will be used.
    long? size;
  };

  dictionary SendPacketResult {
    // The IP of the host which we receives the ICMP reply from.
    // The IP may differs from our target IP if the packet's ttl is used up.
    DOMString ip;

    // Latency in millisenconds.
    double latency;
  };

  callback SendPacketCallback = void(SendPacketResult result);

  interface Functions {
    // Send a packet of the given type with the given parameters.
    static void sendPacket(SendPacketOptions options,
                           SendPacketCallback callback);
  };
};
