493 lines
19 KiB
Plaintext
Executable File
493 lines
19 KiB
Plaintext
Executable File
// Copyright 2012 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Use the <code>chrome.app.window</code> API to create windows. Windows
|
|
// have an optional frame with title bar and size controls. They are not
|
|
// associated with any Chrome browser windows. See the <a
|
|
// href="https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/window-state">
|
|
// Window State Sample</a> for a demonstration of these options.
|
|
namespace app.window {
|
|
|
|
// Previously named Bounds.
|
|
dictionary ContentBounds {
|
|
long? left;
|
|
long? top;
|
|
long? width;
|
|
long? height;
|
|
};
|
|
|
|
dictionary BoundsSpecification {
|
|
// The X coordinate of the content or window.
|
|
long? left;
|
|
|
|
// The Y coordinate of the content or window.
|
|
long? top;
|
|
|
|
// The width of the content or window.
|
|
long? width;
|
|
|
|
// The height of the content or window.
|
|
long? height;
|
|
|
|
// The minimum width of the content or window.
|
|
long? minWidth;
|
|
|
|
// The minimum height of the content or window.
|
|
long? minHeight;
|
|
|
|
// The maximum width of the content or window.
|
|
long? maxWidth;
|
|
|
|
// The maximum height of the content or window.
|
|
long? maxHeight;
|
|
};
|
|
|
|
dictionary Bounds {
|
|
// This property can be used to read or write the current X coordinate of
|
|
// the content or window.
|
|
long left;
|
|
|
|
// This property can be used to read or write the current Y coordinate of
|
|
// the content or window.
|
|
long top;
|
|
|
|
// This property can be used to read or write the current width of the
|
|
// content or window.
|
|
long width;
|
|
|
|
// This property can be used to read or write the current height of the
|
|
// content or window.
|
|
long height;
|
|
|
|
// This property can be used to read or write the current minimum width of
|
|
// the content or window. A value of <code>null</code> indicates
|
|
// 'unspecified'.
|
|
long? minWidth;
|
|
|
|
// This property can be used to read or write the current minimum height of
|
|
// the content or window. A value of <code>null</code> indicates
|
|
// 'unspecified'.
|
|
long? minHeight;
|
|
|
|
// This property can be used to read or write the current maximum width of
|
|
// the content or window. A value of <code>null</code> indicates
|
|
// 'unspecified'.
|
|
long? maxWidth;
|
|
|
|
// This property can be used to read or write the current maximum height of
|
|
// the content or window. A value of <code>null</code> indicates
|
|
// 'unspecified'.
|
|
long? maxHeight;
|
|
|
|
// Set the left and top position of the content or window.
|
|
static void setPosition(long left, long top);
|
|
|
|
// Set the width and height of the content or window.
|
|
static void setSize(long width, long height);
|
|
|
|
// Set the minimum size constraints of the content or window. The minimum
|
|
// width or height can be set to <code>null</code> to remove the constraint.
|
|
// A value of <code>undefined</code> will leave a constraint unchanged.
|
|
static void setMinimumSize(long minWidth, long minHeight);
|
|
|
|
// Set the maximum size constraints of the content or window. The maximum
|
|
// width or height can be set to <code>null</code> to remove the constraint.
|
|
// A value of <code>undefined</code> will leave a constraint unchanged.
|
|
static void setMaximumSize(long maxWidth, long maxHeight);
|
|
};
|
|
|
|
dictionary FrameOptions {
|
|
// Frame type: <code>none</code> or <code>chrome</code> (defaults to
|
|
// <code>chrome</code>).
|
|
//
|
|
// For <code>none</code>, the <code>-webkit-app-region</code> CSS property
|
|
// can be used to apply draggability to the app's window.
|
|
//
|
|
// <code>-webkit-app-region: drag</code> can be used to mark regions
|
|
// draggable. <code>no-drag</code> can be used to disable this style on
|
|
// nested elements.
|
|
DOMString? type;
|
|
// Allows the frame color to be set. Frame coloring is only available if the
|
|
// frame type is <code>chrome</code>.
|
|
//
|
|
// Frame coloring is new in Chrome 36.
|
|
DOMString? color;
|
|
// Allows the frame color of the window when active to be set. Frame
|
|
// coloring is only available if the frame type is <code>chrome</code>.
|
|
//
|
|
// Frame coloring is only available if the frame type is
|
|
// <code>chrome</code>.
|
|
//
|
|
// Frame coloring is new in Chrome 36.
|
|
DOMString? activeColor;
|
|
// Allows the frame color of the window when inactive to be set differently
|
|
// to the active color. Frame
|
|
// coloring is only available if the frame type is <code>chrome</code>.
|
|
//
|
|
// <code>inactiveColor</code> must be used in conjunction with <code>
|
|
// color</code>.
|
|
//
|
|
// Frame coloring is new in Chrome 36.
|
|
DOMString? inactiveColor;
|
|
};
|
|
|
|
// State of a window: normal, fullscreen, maximized, minimized.
|
|
enum State { normal, fullscreen, maximized, minimized };
|
|
|
|
// Specifies the type of window to create.
|
|
enum WindowType {
|
|
// Default window type.
|
|
shell,
|
|
// OS managed window (Deprecated).
|
|
panel
|
|
};
|
|
|
|
[noinline_doc] dictionary CreateWindowOptions {
|
|
// Id to identify the window. This will be used to remember the size
|
|
// and position of the window and restore that geometry when a window
|
|
// with the same id is later opened.
|
|
// If a window with a given id is created while another window with the same
|
|
// id already exists, the currently opened window will be focused instead of
|
|
// creating a new window.
|
|
DOMString? id;
|
|
|
|
// Used to specify the initial position, initial size and constraints of the
|
|
// window's content (excluding window decorations).
|
|
// If an <code>id</code> is also specified and a window with a matching
|
|
// <code>id</code> has been shown before, the remembered bounds will be used
|
|
// instead.
|
|
//
|
|
// Note that the padding between the inner and outer bounds is determined by
|
|
// the OS. Therefore setting the same bounds property for both the
|
|
// <code>innerBounds</code> and <code>outerBounds</code> will result in an
|
|
// error.
|
|
//
|
|
// This property is new in Chrome 36.
|
|
BoundsSpecification? innerBounds;
|
|
|
|
// Used to specify the initial position, initial size and constraints of the
|
|
// window (including window decorations such as the title bar and frame).
|
|
// If an <code>id</code> is also specified and a window with a matching
|
|
// <code>id</code> has been shown before, the remembered bounds will be used
|
|
// instead.
|
|
//
|
|
// Note that the padding between the inner and outer bounds is determined by
|
|
// the OS. Therefore setting the same bounds property for both the
|
|
// <code>innerBounds</code> and <code>outerBounds</code> will result in an
|
|
// error.
|
|
//
|
|
// This property is new in Chrome 36.
|
|
BoundsSpecification? outerBounds;
|
|
|
|
// Default width of the window.
|
|
[nodoc, deprecated="Use $(ref:BoundsSpecification)."] long? defaultWidth;
|
|
|
|
// Default height of the window.
|
|
[nodoc, deprecated="Use $(ref:BoundsSpecification)."] long? defaultHeight;
|
|
|
|
// Default X coordinate of the window.
|
|
[nodoc, deprecated="Use $(ref:BoundsSpecification)."] long? defaultLeft;
|
|
|
|
// Default Y coordinate of the window.
|
|
[nodoc, deprecated="Use $(ref:BoundsSpecification)."] long? defaultTop;
|
|
|
|
// Width of the window.
|
|
[nodoc, deprecated="Use $(ref:BoundsSpecification)."] long? width;
|
|
|
|
// Height of the window.
|
|
[nodoc, deprecated="Use $(ref:BoundsSpecification)."] long? height;
|
|
|
|
// X coordinate of the window.
|
|
[nodoc, deprecated="Use $(ref:BoundsSpecification)."] long? left;
|
|
|
|
// Y coordinate of the window.
|
|
[nodoc, deprecated="Use $(ref:BoundsSpecification)."] long? top;
|
|
|
|
// Minimum width of the window.
|
|
[deprecated="Use innerBounds or outerBounds."] long? minWidth;
|
|
|
|
// Minimum height of the window.
|
|
[deprecated="Use innerBounds or outerBounds."] long? minHeight;
|
|
|
|
// Maximum width of the window.
|
|
[deprecated="Use innerBounds or outerBounds."] long? maxWidth;
|
|
|
|
// Maximum height of the window.
|
|
[deprecated="Use innerBounds or outerBounds."] long? maxHeight;
|
|
|
|
// Type of window to create.
|
|
[deprecated="All app windows use the 'shell' window type"] WindowType? type;
|
|
|
|
// Creates a special ime window. This window is not focusable and can be
|
|
// stacked above virtual keyboard window. This is restriced to component ime
|
|
// extensions.
|
|
// Requires the <code>app.window.ime</code> API permission.
|
|
[nodoc] boolean? ime;
|
|
|
|
// If true, the window will have its own shelf icon. Otherwise the window
|
|
// will be grouped in the shelf with other windows that are associated with
|
|
// the app. Defaults to false. If showInShelf is set to true you need to
|
|
// specify an id for the window.
|
|
boolean? showInShelf;
|
|
|
|
// URL of the window icon. A window can have its own icon when showInShelf
|
|
// is set to true. The URL should be a global or an extension local URL.
|
|
DOMString? icon;
|
|
|
|
// Frame type: <code>none</code> or <code>chrome</code> (defaults to
|
|
// <code>chrome</code>). For <code>none</code>, the
|
|
// <code>-webkit-app-region</code> CSS property can be used to apply
|
|
// draggability to the app's window. <code>-webkit-app-region: drag</code>
|
|
// can be used to mark regions draggable. <code>no-drag</code> can be used
|
|
// to disable this style on nested elements.
|
|
//
|
|
// Use of <code>FrameOptions</code> is new in M36.
|
|
(DOMString or FrameOptions)? frame;
|
|
|
|
// Size and position of the content in the window (excluding the titlebar).
|
|
// If an id is also specified and a window with a matching id has been shown
|
|
// before, the remembered bounds of the window will be used instead.
|
|
[deprecated="Use innerBounds or outerBounds."] ContentBounds? bounds;
|
|
|
|
// Enable window background transparency.
|
|
// Only supported in ash. Requires the <code>app.window.alpha</code> API
|
|
// permission.
|
|
[nodoc] boolean? alphaEnabled;
|
|
|
|
// The initial state of the window, allowing it to be created already
|
|
// fullscreen, maximized, or minimized. Defaults to 'normal'.
|
|
State? state;
|
|
|
|
// If true, the window will be created in a hidden state. Call show() on
|
|
// the window to show it once it has been created. Defaults to false.
|
|
boolean? hidden;
|
|
|
|
// If true, the window will be resizable by the user. Defaults to true.
|
|
boolean? resizable;
|
|
|
|
// By default if you specify an id for the window, the window will only be
|
|
// created if another window with the same id doesn't already exist. If a
|
|
// window with the same id already exists that window is activated instead.
|
|
// If you do want to create multiple windows with the same id, you can
|
|
// set this property to false.
|
|
[deprecated="Multiple windows with the same id is no longer supported."] boolean? singleton;
|
|
|
|
// If true, the window will stay above most other windows. If there are
|
|
// multiple windows of this kind, the currently focused window will be in
|
|
// the foreground. Requires the <code>alwaysOnTopWindows</code>
|
|
// permission. Defaults to false.
|
|
//
|
|
// Call <code>setAlwaysOnTop()</code> on the window to change this property
|
|
// after creation.
|
|
boolean? alwaysOnTop;
|
|
|
|
// If true, the window will be focused when created. Defaults to true.
|
|
boolean? focused;
|
|
|
|
// If true, and supported by the platform, the window will be visible on all
|
|
// workspaces.
|
|
boolean? visibleOnAllWorkspaces;
|
|
};
|
|
|
|
// Called in the creating window (parent) before the load event is called in
|
|
// the created window (child). The parent can set fields or functions on the
|
|
// child usable from onload. E.g. background.js:
|
|
//
|
|
// <code>function(createdWindow) { createdWindow.contentWindow.foo =
|
|
// function () { }; };</code>
|
|
//
|
|
// window.js:
|
|
//
|
|
// <code>window.onload = function () { foo(); }</code>
|
|
callback CreateWindowCallback =
|
|
void ([instanceOf=AppWindow] object createdWindow);
|
|
|
|
[noinline_doc] dictionary AppWindow {
|
|
// Focus the window.
|
|
static void focus();
|
|
|
|
// Fullscreens the window.
|
|
//
|
|
// The user will be able to restore the window by pressing ESC. An
|
|
// application can prevent the fullscreen state to be left when ESC is
|
|
// pressed by requesting the <code>app.window.fullscreen.overrideEsc</code>
|
|
// permission and canceling the event by calling .preventDefault(), in the
|
|
// keydown and keyup handlers, like this:
|
|
//
|
|
// <code>window.onkeydown = window.onkeyup = function(e) { if (e.keyCode ==
|
|
// 27 /* ESC */) { e.preventDefault(); } };</code>
|
|
//
|
|
// Note <code>window.fullscreen()</code> will cause the entire window to
|
|
// become fullscreen and does not require a user gesture. The HTML5
|
|
// fullscreen API can also be used to enter fullscreen mode (see
|
|
// <a href="http://developer.chrome.com/apps/api_other.html">Web APIs</a>
|
|
// for more details).
|
|
static void fullscreen();
|
|
|
|
// Is the window fullscreen? This will be true if the window has been
|
|
// created fullscreen or was made fullscreen via the
|
|
// <code>AppWindow</code> or HTML5 fullscreen APIs.
|
|
static boolean isFullscreen();
|
|
|
|
// Minimize the window.
|
|
static void minimize();
|
|
|
|
// Is the window minimized?
|
|
static boolean isMinimized();
|
|
|
|
// Maximize the window.
|
|
static void maximize();
|
|
|
|
// Is the window maximized?
|
|
static boolean isMaximized();
|
|
|
|
// Restore the window, exiting a maximized, minimized, or fullscreen state.
|
|
static void restore();
|
|
|
|
// Move the window to the position (|left|, |top|).
|
|
[deprecated="Use outerBounds."] static void moveTo(long left, long top);
|
|
|
|
// Resize the window to |width|x|height| pixels in size.
|
|
[deprecated="Use outerBounds."] static void resizeTo(long width, long height);
|
|
|
|
// Draw attention to the window.
|
|
static void drawAttention();
|
|
|
|
// Clear attention to the window.
|
|
static void clearAttention();
|
|
|
|
// Close the window.
|
|
static void close();
|
|
|
|
// Show the window. Does nothing if the window is already visible.
|
|
// Focus the window if |focused| is set to true or omitted.
|
|
static void show(optional boolean focused);
|
|
|
|
// Hide the window. Does nothing if the window is already hidden.
|
|
static void hide();
|
|
|
|
// Get the window's inner bounds as a $(ref:ContentBounds) object.
|
|
[nocompile, deprecated="Use innerBounds or outerBounds."] static ContentBounds getBounds();
|
|
|
|
// Set the window's inner bounds.
|
|
[nocompile, deprecated="Use innerBounds or outerBounds."] static void setBounds(ContentBounds bounds);
|
|
|
|
// Set the app icon for the window (experimental).
|
|
// Currently this is only being implemented on Ash.
|
|
// TODO(stevenjb): Investigate implementing this on Windows and OSX.
|
|
[nodoc] static void setIcon(DOMString iconUrl);
|
|
|
|
// Is the window always on top?
|
|
static boolean isAlwaysOnTop();
|
|
|
|
// Accessors for testing.
|
|
[nodoc] boolean hasFrameColor;
|
|
[nodoc] long activeFrameColor;
|
|
[nodoc] long inactiveFrameColor;
|
|
|
|
// Set whether the window should stay above most other windows. Requires the
|
|
// <code>alwaysOnTopWindows</code> permission.
|
|
static void setAlwaysOnTop(boolean alwaysOnTop);
|
|
|
|
// Can the window use alpha transparency?
|
|
// TODO(jackhou): Document this properly before going to stable.
|
|
[nodoc] static boolean alphaEnabled();
|
|
|
|
// Set whether the window is visible on all workspaces. (Only for platforms
|
|
// that support this).
|
|
static void setVisibleOnAllWorkspaces(boolean alwaysVisible);
|
|
|
|
// The JavaScript 'window' object for the created child.
|
|
[instanceOf=Window] object contentWindow;
|
|
|
|
// The id the window was created with.
|
|
DOMString id;
|
|
|
|
// The position, size and constraints of the window's content, which does
|
|
// not include window decorations.
|
|
// This property is new in Chrome 36.
|
|
Bounds innerBounds;
|
|
|
|
// The position, size and constraints of the window, which includes window
|
|
// decorations, such as the title bar and frame.
|
|
// This property is new in Chrome 36.
|
|
Bounds outerBounds;
|
|
};
|
|
|
|
interface Functions {
|
|
// The size and position of a window can be specified in a number of
|
|
// different ways. The most simple option is not specifying anything at
|
|
// all, in which case a default size and platform dependent position will
|
|
// be used.
|
|
//
|
|
// To set the position, size and constraints of the window, use the
|
|
// <code>innerBounds</code> or <code>outerBounds</code> properties. Inner
|
|
// bounds do not include window decorations. Outer bounds include the
|
|
// window's title bar and frame. Note that the padding between the inner and
|
|
// outer bounds is determined by the OS. Therefore setting the same property
|
|
// for both inner and outer bounds is considered an error (for example,
|
|
// setting both <code>innerBounds.left</code> and
|
|
// <code>outerBounds.left</code>).
|
|
//
|
|
// To automatically remember the positions of windows you can give them ids.
|
|
// If a window has an id, This id is used to remember the size and position
|
|
// of the window whenever it is moved or resized. This size and position is
|
|
// then used instead of the specified bounds on subsequent opening of a
|
|
// window with the same id. If you need to open a window with an id at a
|
|
// location other than the remembered default, you can create it hidden,
|
|
// move it to the desired location, then show it.
|
|
static void create(
|
|
DOMString url,
|
|
optional CreateWindowOptions options,
|
|
optional CreateWindowCallback callback);
|
|
|
|
// Returns an $(ref:AppWindow) object for the
|
|
// current script context (ie JavaScript 'window' object). This can also be
|
|
// called on a handle to a script context for another page, for example:
|
|
// otherWindow.chrome.app.window.current().
|
|
[nocompile] static AppWindow current();
|
|
[nocompile, nodoc] static void initializeAppWindow(object state);
|
|
|
|
// Gets an array of all currently created app windows. This method is new in
|
|
// Chrome 33.
|
|
[nocompile] static AppWindow[] getAll();
|
|
|
|
// Gets an $(ref:AppWindow) with the given id. If no window with the given id
|
|
// exists null is returned. This method is new in Chrome 33.
|
|
[nocompile] static AppWindow get(DOMString id);
|
|
|
|
// Whether the current platform supports windows being visible on all
|
|
// workspaces.
|
|
[nocompile] static boolean canSetVisibleOnAllWorkspaces();
|
|
};
|
|
|
|
interface Events {
|
|
// Fired when the window is resized.
|
|
[nocompile] static void onBoundsChanged();
|
|
|
|
// Fired when the window is closed. Note, this should be listened to from
|
|
// a window other than the window being closed, for example from the
|
|
// background page. This is because the window being closed will be in the
|
|
// process of being torn down when the event is fired, which means not all
|
|
// APIs in the window's script context will be functional.
|
|
[nocompile] static void onClosed();
|
|
|
|
// Fired when the window is fullscreened (either via the
|
|
// <code>AppWindow</code> or HTML5 APIs).
|
|
[nocompile] static void onFullscreened();
|
|
|
|
// Fired when the window is maximized.
|
|
[nocompile] static void onMaximized();
|
|
|
|
// Fired when the window is minimized.
|
|
[nocompile] static void onMinimized();
|
|
|
|
// Fired when the window is restored from being minimized or maximized.
|
|
[nocompile] static void onRestored();
|
|
|
|
// Fired when the window's ability to use alpha transparency changes.
|
|
[nocompile, nodoc] static void onAlphaEnabledChanged();
|
|
};
|
|
};
|