// Copyright (c) 2012 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.

// This is used by the app window API internally to pass through messages to
// the shell window.
namespace app.currentWindowInternal {

  // Null or undefined indicates that a value should not change.
  dictionary Bounds {
    long? left;
    long? top;
    long? width;
    long? height;
  };

  // Null or undefined indicates that a value should not change. A value of 0
  // will clear the constraints.
  dictionary SizeConstraints {
    long? minWidth;
    long? minHeight;
    long? maxWidth;
    long? maxHeight;
  };

  dictionary RegionRect {
    long left;
    long top;
    long width;
    long height;
  };

  dictionary Region {
    RegionRect[]? rects;
  };

  interface Functions {
    static void focus();
    static void fullscreen();
    static void minimize();
    static void maximize();
    static void restore();
    static void drawAttention();
    static void clearAttention();
    static void show(optional boolean focused);
    static void hide();
    static void setBounds(DOMString boundsType, Bounds bounds);
    static void setSizeConstraints(DOMString boundsType,
                                   SizeConstraints constraints);
    static void setIcon(DOMString icon_url);
    static void setShape(Region region);
    static void setAlwaysOnTop(boolean always_on_top);
    static void setVisibleOnAllWorkspaces(boolean always_visible);
  };

  interface Events {
    static void onClosed();
    static void onBoundsChanged();
    static void onFullscreened();
    static void onMinimized();
    static void onMaximized();
    static void onRestored();
    static void onAlphaEnabledChanged();
    // Only sent in tests.
    static void onWindowShownForTests();
  };
};
