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

// https://heycam.github.io/webidl/#dfn-attribute-getter

// Attribute getters must behave differently based on whether [LenientThis] has
// been specified or whether the attribute's type is Promise<T>.
// All attributes below are marked readonly because we are only interested in
// the behavior of attribute getters.

interface TestAttributeGetters {
    // [LenientThis] causes some V8 type checks to be bypassed; they are done
    // on the Blink side instead and access exceptions just return undefined.
    [LenientThis] readonly attribute long lenientThisLongAttribute;

    // Promise types must turn exceptions into promise rejections.
    readonly attribute Promise<DOMString> stringPromiseAttribute;

    // Mixing both should cause [LenientThis] to return without raising an
    // exception if type checking fails.
    [LenientThis] readonly attribute Promise<DOMString> lenientThisStringPromiseAttribute;

    // [RaisesException] also creates an ExceptionState instance. Make sure it
    // is not declared twice.
    [RaisesException] readonly attribute Promise<short> raisesExceptionShortPromiseAttribute;

    // Regular attribute with no special rules.
    readonly attribute float floatAttribute;
};
