// 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 content.mojom;

import "services/network/public/interfaces/url_loader_factory.mojom";

// The primordial interface implemented by a render process host. This should be
// used for implementing renderer-to-browser messages.
interface RendererHost {
  // Requests a URLLoaderFactory for the blob scheme.
  GetBlobURLLoaderFactory(network.mojom.URLLoaderFactory& loader);

  // Request a histogram from the browser. The browser will send the histogram
  // data only if it has been passed the command line flag
  // switches::kDomAutomationController.
  [Sync]
  GetBrowserHistogram(string name) => (string histogram_json);

  // Notify the browser that this render process can or can't be suddenly
  // terminated.
  SuddenTerminationChanged(bool enabled);

  // Request a child_control.Shutdown message to be sent to the renderer. This
  // may not initiate a shutdown sequence in some cases.
  ShutdownRequest();
};
