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

// https://fetch.spec.whatwg.org/#request-class

typedef (Request or USVString) RequestInfo;

enum RequestDestination { "", "audio", "audioworklet", "document", "embed", "font", "frame", "iframe", "image", "manifest", "object", "paintworklet", "report",
    "script", "sharedworker", "style",  "track", "video", "worker", "xslt" };
enum RequestMode { "navigate", "same-origin", "no-cors", "cors" };
enum RequestCredentials { "omit", "same-origin", "include" };
enum RequestRedirect { "follow", "error", "manual" };
enum RequestCache { "default", "no-store", "reload", "no-cache", "force-cache",
                    "only-if-cached" };
enum RequestImportance {"low", "auto", "high"};

// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies

enum ReferrerPolicy {
    "",
    "no-referrer",
    "no-referrer-when-downgrade",
    "same-origin",
    "origin",
    "strict-origin",
    "origin-when-cross-origin",
    "strict-origin-when-cross-origin",
    "unsafe-url"
};

[
    ActiveScriptWrappable,
    Exposed=(Window,Worker)
] interface Request {
    [CallWith=ScriptState, RaisesException] constructor(RequestInfo input, optional RequestInit init = {});
    readonly attribute ByteString method;
    readonly attribute USVString url;
    [ImplementedAs=getHeaders, SameObject] readonly attribute Headers headers;
    readonly attribute RequestDestination destination;
    readonly attribute DOMString referrer;
    [ImplementedAs=getReferrerPolicy] readonly attribute ReferrerPolicy referrerPolicy;
    readonly attribute RequestMode mode;
    readonly attribute RequestCredentials credentials;
    readonly attribute RequestCache cache;
    readonly attribute RequestRedirect redirect;
    readonly attribute DOMString integrity;
    readonly attribute boolean keepalive;
    readonly attribute AbortSignal signal;

    [MeasureAs=RequestIsHistoryNavigation] readonly attribute boolean isHistoryNavigation;
    [RaisesException, CallWith=ScriptState, DoNotTestNewObject, NewObject] Request clone();
};

Request includes Body;
