// 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.

[DartPackage="mojo_services"]
module mojo;

import "geometry/interfaces/geometry.mojom";
import "input_events/interfaces/input_events.mojom";

// WindowManagerInternal is an interface provided by the WindowManager
// exclusively to the ViewManager.
interface WindowManagerInternal {
  // Creates a connection to the WindowManager specifically for a connection to
  // the ViewManager. |connection_id| is the id of the connection to the
  // ViewManager. See view_manager.mojom for details on the id.
  CreateWindowManagerForViewManagerClient(
      uint16 connection_id,
      handle<message_pipe> window_manager_pipe);

  SetViewManagerClient(handle<message_pipe> view_manager_client_request);
};

// WindowManagerInternalClient is an interface provide by the ViewManager
// exclusively to the WindowManager. It provides functionality only available
// to the WindowManager.
interface WindowManagerInternalClient {
  // Dispatches the specified input event to the specified view.
  DispatchInputEventToView(uint32 view_id, mojo.Event event);

  // Sets the native viewport size.
  SetViewportSize(mojo.Size size);

  // Clones the tree rooted at |view_id|. When the animation completes the clone
  // is destroyed.
  // TODO(sky): add actual animation.
  // TODO(sky): I think this only makes sense when destroying (view is
  // already visible), should it be named to indicate this?
  CloneAndAnimate(uint32 view_id);
};
