// 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/common/unguessable_token.mojom";
import "services/ui/public/interfaces/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.common.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,
      ui.mojom.WindowTreeClient& window_tree_client,
      RenderWidgetWindowTreeClient& render_widget_window_tree_client_request);
};
