// 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 DictionaryTest {
    void set(optional InternalDictionary testingDictionary);
    InternalDictionary get();
    [CallWith=ScriptState] object getDictionaryMemberProperties();

    void setDerived(InternalDictionaryDerived derived);
    InternalDictionaryDerived getDerived();

    void setDerivedDerived(InternalDictionaryDerivedDerived derived);
    InternalDictionaryDerivedDerived getDerivedDerived();

    [CallWith=ScriptState, RaisesException] DOMString stringFromIterable(Dictionary iterableDictionary);
};
