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

[
] interface UnionTypesTest {
    attribute (double or DOMString or DOMString[]) doubleOrStringOrStringArrayAttribute;

    DOMString doubleOrStringArg((double or DOMString) arg);
    DOMString doubleOrInternalEnumArg((double or InternalEnum) arg);

    [ImplementedAs=doubleOrStringArg] DOMString doubleOrStringDefaultDoubleArg(optional (double or DOMString) arg = 3.14);
    [ImplementedAs=doubleOrStringArg] DOMString doubleOrStringDefaultStringArg(optional (double or DOMString) arg = "foo");
    [ImplementedAs=doubleOrStringArg] DOMString doubleOrStringDefaultNullArg(optional (double or DOMString)? arg = null);

    DOMString doubleOrStringArrayArg((double or DOMString)[] arg);
    DOMString doubleOrStringSequenceArg(sequence<(double or DOMString)> arg);

    DOMString nodeListOrElementArg((NodeList or Element) arg);
    DOMString nodeListOrElementOrNullArg((NodeList or Element)? arg);

    DOMString doubleOrStringOrStringArrayArg((double or DOMString or DOMString[]) arg);
    DOMString doubleOrStringOrStringSequenceArg((double or DOMString or sequence<DOMString>) arg);
    [ImplementedAs=doubleOrStringOrStringArrayArg] DOMString doubleOrStringOrStringArrayNullableArg((double or DOMString or DOMString[])? arg);
    [ImplementedAs=doubleOrStringOrStringSequenceArg] DOMString doubleOrStringOrStringSequenceNullableArg((double or DOMString or sequence<DOMString>)? arg);
};
