diff --git a/README.md b/README.md index af30c9cc3e..c3a72886ef 100755 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ List of Definitions * [Cheerio](https://github.com/MatthewMueller/cheerio) (by [Bret Little](https://github.com/blittle)) * [Chosen](http://harvesthq.github.com/chosen/) (by [Boris Yankov](https://github.com/borisyankov)) * [Chrome](http://developer.chrome.com/extensions/) (by [Matthew Kimber](https://github.com/matthewkimber)) +* [Chrome App](http://developer.chrome.com/apps/) (by [Adam Lay](https://github.com/AdamLay)) * [CodeMirror](http://codemirror.net) (by [François de Campredon](https://github.com/fdecampredon)) * [Commander](http://github.com/visionmedia/commander.js) (by [Marcelo Dezem](https://github.com/mdezem)) * [d3.js](http://d3js.org/) (from TypeScript samples) diff --git a/chrome/chrome-app-tests.ts b/chrome/chrome-app-tests.ts new file mode 100644 index 0000000000..0ae0ae2af4 --- /dev/null +++ b/chrome/chrome-app-tests.ts @@ -0,0 +1,27 @@ +/// + +import runtime = chrome.app.runtime; +import cwindow = chrome.app.window; + +var createOptions: cwindow.CreateOptions = { + id: "My Window", + bounds: { + left: 0, + top: 0, + width: 640, + height: 480 + }, + resizable: true +}; + +//Create new window on app launch +chrome.app.runtime.onLaunched.addListener(function (launchData: runtime.LaunchData) { + chrome.app.window.create('app/url', createOptions, function (created_window: cwindow.AppWindow) { + return; + }); +}); + +chrome.app.runtime.onRestarted.addListener(function () { return; }); + +// Get Current Window +var currentWindow: cwindow.AppWindow = chrome.app.window.current(); \ No newline at end of file diff --git a/chrome/chrome-app.d.ts b/chrome/chrome-app.d.ts new file mode 100644 index 0000000000..c8dd2e6d46 --- /dev/null +++ b/chrome/chrome-app.d.ts @@ -0,0 +1,95 @@ +// Type definitions for Chrome packaged application development. +// Project: http://developer.chrome.com/apps/ +// Definitions by: Adam Lay +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +//////////////////// +// App Runtime +//////////////////// +declare module chrome.app.runtime { + interface LaunchData { + id?: string; + items?: LaunchDataItem[]; + url?: string; + referrerUrl?: string; + isKioskSession?: boolean; + } + + interface LaunchDataItem { + entry: File; + type: string; + } + + interface LaunchedEvent { + addListener(callback: (launchData: LaunchData) => void); + } + + interface RestartedEvent { + addListener(callback: () => void); + } + + var onLaunched: LaunchedEvent; + var onRestarted: RestartedEvent; +} + +//////////////////// +// App Window +//////////////////// +declare module chrome.app.window { + interface Bounds { + left?: number; + top?: number; + width?: number; + height?: number; + } + + interface AppWindow { + focus: () => void; + fullscreen: () => void; + isFullscreen: () => boolean; + minimize: () => void; + isMinimized: () => boolean; + maximize: () => void; + isMaximized: () => boolean; + restore: () => void; + moveTo: (left: number, top: number) => void; + resizeTo: (width: number, height: number) => void; + drawAttention: () => void; + clearAttention: () => void; + close: () => void; + show: () => void; + hide: () => void; + getBounds: () => Bounds; + setBounds: (bounds: Bounds) => void; + contentWindow: Window; + } + + interface CreateOptions { + id?: string; + minWidth?: number; + minHeight?: number; + maxWidth?: number; + maxHeight?: number; + frame?: string; // "none", "chrome" + bounds?: Bounds; + transparentBackground?: boolean; + state?: string; // "normal", "fullscreen", "maximized", "minimized" + hidden?: boolean; + resizable?: boolean; + singleton?: boolean; + } + + export function create(url: string, options?: CreateOptions, callback?: (created_window: AppWindow) => void): void; + export function current(): AppWindow; + + interface WindowEvent { + addListener(callback: () => void): void; + } + + var onBoundsChanged: WindowEvent; + var onClosed: WindowEvent; + var onFullscreened: WindowEvent; + var onMaximized: WindowEvent; + var onMinimized: WindowEvent; + var onRestored: WindowEvent; +} \ No newline at end of file