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

module content.mojom;

import "url_loader.mojom";

[Native]
struct URLSyncLoadResult;

const uint32 kURLLoadOptionNone = 0;
// Sends the net::SSLInfo struct in OnReceiveResponse.
const uint32 kURLLoadOptionSendSSLInfo = 1;

interface URLLoaderFactory {
  // Creats a URLLoader and starts loading with the given |request|. |client|'s
  // method will be called when certain events related to that loading
  // (e.g., response arrival) happen. |request_id| is for compatibility with
  // the existing Chrome IPC.
  CreateLoaderAndStart(associated URLLoader& loader,
                       int32 routing_id,
                       int32 request_id,
                       uint32 options,
                       URLRequest request,
                       URLLoaderClient client);

  // Loads the resource for the given |request| synchronously.
  // |request_id| is for compatibility with the existing Chrome IPC.
  [Sync] SyncLoad(int32 routing_id,
                  int32 request_id,
                  URLRequest request)
      => (URLSyncLoadResult result);
};
