chromium/third_party/blink/public/mojom/devtools/devtools_frontend.mojom

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module blink.mojom;

import "mojo/public/mojom/base/values.mojom";

// Provides extra capabilities required for DevTools frontend to function.
// This includes communication channel from/to inspected target which implements
// remote debugging protocol. Protocol messages go through browser process.
//
// Instances of this interface must be associated with navigation-related
// interface, since we should setup DevToolsFrontend before the navigation
// commits in the frame.
interface DevToolsFrontend {
  // Sets up a main frame as a DevTools frontend. This exposes DevToolsHost
  // object (see DevToolsHost.idl for details). The |api_script| is executed
  // on each navigation in the frame before the DevTools frontend starts
  // loading. It makes use of DevToolsHost to expose embedder capabilities to
  // DevTools (e.g. connection to the inspected target).
  SetupDevToolsFrontend(string api_script,
                        pending_associated_remote<DevToolsFrontendHost> host);

  // Sets up a child frame to expose DevTools extension API by executing script
  // |extension_api| on each navigation in the frame. This script provides
  // required capabilities for DevTools extensions to function, implementing
  // chrome.devtools extension API.
  SetupDevToolsExtensionAPI(string extension_api);
};

// Provides embedder functionality to a frame serving as DevTools frontend.
interface DevToolsFrontendHost {
  // Sends a message to DevTools frontend embedder.
  DispatchEmbedderMessage(mojo_base.mojom.DictionaryValue message);
};