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

// Tests function and callback types in various places in IDL.

namespace idl_function_types {
  callback MyCallback = void(long x);
  callback MyUnionCallback = void ((long or DOMString) x);
  callback MyOptionalUnionCallback = void (optional (long or DOMString) x);

  interface Functions {
    static void whatever(MyCallback[] callbacks);
    static void blah(MyUnionCallback callback);
    static void badabish(MyOptionalUnionCallback callback);
    static void union_params((long or DOMString) x);
  };
};
