// 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/loader/referrer.mojom";
import "ui/gfx/geometry/mojom/geometry.mojom";
import "url/mojom/url.mojom";

enum PrerenderRelType {
  // https://html.spec.whatwg.org/C/#link-type-prerender
  kPrerender,

  // https://html.spec.whatwg.org/C/#link-type-next
  kNext,
};

struct PrerenderAttributes {
  url.mojom.Url url;
  PrerenderRelType rel_type;
  blink.mojom.Referrer referrer;
  gfx.mojom.Size view_size;
};

// This interface is used to request NoStatePrefetch from a renderer process to
// the browser process. This is created per prerender request, for example, when
// a new <link rel=prerender> element is added, when the element's href is
// changed, etc.
interface NoStatePrefetchProcessor {
  // Requests the browesr process to start prefetching with
  // |prerender_attribute|. This must be called only one time before any other
  // functions.
  Start(PrerenderAttributes prerender_attribute);

  // Cancels the ongoing prefetching. This is supposed to be called when the
  // <link rel=prerender> element is removed, the element's href is changed,
  // etc. This must be called after Start().
  Cancel();
};

// Prerender2 (https://crbug.com/1132746):
// This interface is used only when blink::features::kPrerender2 is enabled.
//
// This interface is used to request prerendering from a renderer process to the
// browser process. This is created per prerender request, for example, when a
// new <link rel=prerender> element is added, when the element's href is
// changed, etc.
interface PrerenderProcessor {
  // Requests the browesr process to start prerendering with
  // |prerender_attribute|. This must be called only one time before any other
  // functions.
  Start(PrerenderAttributes prerender_attribute);

  // Cancels the ongoing prerendering. This is supposed to be called when the
  // <link rel=prerender> element is removed, the element's href is changed,
  // etc. This must be called after Start().
  Cancel();
};
