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

// http://fetch.spec.whatwg.org/#response-class

enum ResponseType { "basic", "cors", "default", "error", "opaque", "opaqueredirect" };

[
    // TODO(yhirano): We use "any" for body because the IDL processor doesn't
    // recognize ReadableStream implemented with V8 extras. Fix it.
    Constructor(optional any body, optional Dictionary responseInitDict),
    ConstructorCallWith=ScriptState,
    Exposed=(Window,Worker),
    RaisesException=Constructor,
    DependentLifetime,
    GarbageCollected,
] interface Response {
    [CallWith=ExecutionContext] static Response error();
    [CallWith=ExecutionContext, RaisesException] static Response redirect(USVString url, optional unsigned short status = 302);
    readonly attribute ResponseType type;
    readonly attribute USVString url;
    readonly attribute unsigned short status;
    readonly attribute boolean ok;
    readonly attribute ByteString statusText;
    readonly attribute Headers headers;

    [RaisesException] Response clone();

    [ImplementedAs=bodyWithUseCounter] readonly attribute ReadableByteStream body;
};

Response implements Body;
