// Copyright 2015 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 "mojo/public/mojom/base/unguessable_token.mojom";
import "services/ws/public/mojom/window_tree.mojom";

interface RenderWidgetWindowTreeClient {
  // Asks the renderer to create a Window for the frame with the routing id
  // |routing_id| and embeds the WindowTreeClient that was previously supplied
  // to ScheduleEmbed().
  Embed(uint32 frame_routing_id, mojo_base.mojom.UnguessableToken token);

  // Called when a render frame has been destroyed. This is sent via mojom
  // to handle to ensure there aren't race conditions because of message order
  // delivery.
  DestroyFrame(uint32 frame_routing_id);
};

interface RenderWidgetWindowTreeClientFactory {
  CreateWindowTreeClientForRenderWidget(
      uint32 render_widget_host_routing_id,
      ws.mojom.WindowTreeClient& window_tree_client,
      RenderWidgetWindowTreeClient& render_widget_window_tree_client_request);
};
