// Copyright 2014 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/shell/public/interfaces/interface_provider.mojom";

// Implemented by the frame provider (e.g. renderer processes).
interface Frame {
  GetInterfaceProvider(shell.mojom.InterfaceProvider& interfaces);
};

// Implemented by the frame server (i.e. the browser process).
interface FrameHost {
  GetInterfaceProvider(shell.mojom.InterfaceProvider& interfaces);
};

// Implemented by a service that provides implementations of the Frame
// interface. (e.g. renderer processes).
interface FrameFactory {
  CreateFrame(int32 frame_routing_id, Frame& frame, FrameHost host);
};
