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

module blink.mojom;

import "third_party/blink/public/mojom/manifest/manifest.mojom";
import "url/mojom/url.mojom";

interface ManifestManager {
  // Requests the manifest URL and the Manifest of the frame's document. |url|
  // will be empty if the document specifies no manifest, and |manifest| will be
  // empty if any other failures occurred.
  RequestManifest() => (url.mojom.Url url, Manifest? manifest);

  // Requests the manifest URL and the debug info for Manifest of the frame's
  // document. |url| will be empty if the document specifies no manifest.
  // |debug_info| will be null if the document specifies no manifest or if
  // fetching the manifest fails.
  //
  // This method is temporary until all clients are migrated from
  // content/renderer into blink.
  RequestManifestDebugInfo() => (url.mojom.Url url,
                                 ManifestDebugInfo? debug_info);
};
