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

[DartPackage="mojo"]
module mojo;

import "mojo/public/interfaces/network/http_header.mojom";
import "mojo/public/interfaces/network/network_error.mojom";

struct URLResponse {
  // If the response resulted in a network level error, this field will be set.
  NetworkError? error;

  // The response body stream. Read from this data pipe to receive the bytes of
  // response body.
  handle<data_pipe_consumer>? body;

  // The final URL of the response, after redirects have been followed.
  string? url;

  // The HTTP status code. 0 if not applicable.
  uint32 status_code;

  // The HTTP status line.
  string? status_line;

  // The HTTP response headers.
  array<HttpHeader>? headers;

  // The MIME type of the response body.
  string? mime_type;

  // The character set of the response body.
  string? charset;

  // These fields are set to non-NULL if this response corresponds to a
  // redirect.  Call the |FollowRedirect| method on the URLLoader instance to
  // follow this redirect.
  string? redirect_method;
  string? redirect_url;
  string? redirect_referrer;
};
