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

enum FoodEnum {
    "Bread",
    "Spaghetti",
    "Sushi"
};

interface SequenceTest {
    // The identity functions just return what they have received in |arg|, to
    // test converting both to and from V8.
    sequence<sequence<ByteString>> identityByteStringSequenceSequence(sequence<sequence<ByteString>> arg);
    sequence<double> identityDoubleSequence(sequence<double> arg);
    sequence<FoodEnum> identityFoodEnumSequence(sequence<FoodEnum> arg);
    sequence<long> identityLongSequence(sequence<long> arg);
    sequence<octet>? identityOctetSequenceOrNull(sequence<octet>? arg);

    sequence<Element> getElementSequence();
    void setElementSequence(sequence<Element> arg);

    bool unionReceivedSequence((double or sequence<double>) arg);
};
