mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-05-16 19:09:18 +08:00
Add Nw.js (https://github.com/nwjs/nw.js) Definitions (#9595)
* Add NW.js Definitions File * Add NW.js Tests File * Rename nw.js.tests.ts to nw.js-tests.ts * Fix tests of nw.js-test.ts fails Tests of `nw.js-test.ts` fails because `nw` was declared as module not namespace. * Final fixes for tests failures Fix below issues: 1- no reference to nw.js.d.ts 2- not defined some variables types (item: line 91 - screen: lines 136, 140, 144 - optional: line 167 - msg: line 230 )
This commit is contained in:
committed by
Masahiro Wakame
parent
1f0791147c
commit
cd4af2f88f
352
nw.js/nw.js-tests.ts
Normal file
352
nw.js/nw.js-tests.ts
Normal file
@@ -0,0 +1,352 @@
|
||||
/// <reference path="nw.js.d.ts" />
|
||||
/*
|
||||
* nw.App Tests
|
||||
*/
|
||||
var argv = nw.App.argv;
|
||||
var fullArgv = nw.App.fullArgv;
|
||||
var filteredArgv = nw.App.filteredArgv;
|
||||
var dataPath = nw.App.dataPath;
|
||||
var manifest = nw.App.manifest;
|
||||
|
||||
nw.App.clearCache();
|
||||
nw.App.closeAllWindows();
|
||||
nw.App.crashBrowser();
|
||||
nw.App.crashRenderer();
|
||||
nw.App.getProxyForURL( 'https://github.com/alirdn' );
|
||||
nw.App.setProxyConfig( 'http=foopy:80;ftp=foopy2' );
|
||||
nw.App.quit();
|
||||
nw.App.addOriginAccessWhitelistEntry( 'http://github.com/', 'chrome-extension', location.host, true );
|
||||
nw.App.removeOriginAccessWhitelistEntry( 'http://github.com/', 'chrome-extension', location.host, true );
|
||||
|
||||
/*
|
||||
* Note:
|
||||
* nw.App.registerGlobalHotKey() tested in Shortcut Tests
|
||||
* nw.App.unregisterGlobalHotKey() tested in Shortcut Tests
|
||||
* */
|
||||
|
||||
nw.App.on( 'open', function ( args ) {
|
||||
console.log( args );
|
||||
});
|
||||
|
||||
nw.App.on( 'reopen', function () {
|
||||
console.log( 'reopened' );
|
||||
});
|
||||
|
||||
/**
|
||||
* nw.Clipboard Tests
|
||||
*/
|
||||
// get the system clipboard
|
||||
var clipboard = nw.Clipboard.get();
|
||||
// Read from clipboard
|
||||
var text = clipboard.get( 'text' );
|
||||
console.log( text );
|
||||
|
||||
// Or write something
|
||||
clipboard.set( 'I love NW.js :)', 'text' );
|
||||
|
||||
// And clear it!
|
||||
clipboard.clear();
|
||||
|
||||
/**
|
||||
* nw.Menu Tests
|
||||
*/
|
||||
// Create an empty context menu
|
||||
var menu = new nw.Menu();
|
||||
|
||||
// Add some items
|
||||
menu.append( new nw.MenuItem( { label: 'Item A' }) );
|
||||
menu.append( new nw.MenuItem( { label: 'Item B' }) );
|
||||
menu.append( new nw.MenuItem( { type: 'separator' }) );
|
||||
menu.append( new nw.MenuItem( { label: 'Item C' }) );
|
||||
|
||||
// Remove one item
|
||||
menu.removeAt( 1 );
|
||||
|
||||
// Popup as context menu
|
||||
menu.popup( 10, 10 );
|
||||
|
||||
// Iterate menu's items
|
||||
for ( var i = 0; i < menu.items.length; ++i ) {
|
||||
console.log( menu.items[i] );
|
||||
}
|
||||
// Create an empty menubar
|
||||
var menu = new nw.Menu( { type: 'menubar' });
|
||||
|
||||
// Create a submenu as the 2nd level menu
|
||||
var submenu = new nw.Menu();
|
||||
submenu.append( new nw.MenuItem( { label: 'Item A' }) );
|
||||
submenu.append( new nw.MenuItem( { label: 'Item B' }) );
|
||||
|
||||
// Create and append the 1st level menu to the menubar
|
||||
menu.append( new nw.MenuItem( {
|
||||
label: 'First Menu',
|
||||
submenu: submenu
|
||||
}) );
|
||||
|
||||
// Assign it to `window.menu` to get the menu displayed
|
||||
nw.Window.get().menu = menu;
|
||||
|
||||
/**
|
||||
* nw.MenuItem Tests
|
||||
*/
|
||||
var item: any;
|
||||
|
||||
// Create a separator
|
||||
item = new nw.MenuItem( { type: 'separator' });
|
||||
|
||||
// Create a normal item with label and icon
|
||||
item = new nw.MenuItem( {
|
||||
type: "normal",
|
||||
label: "I'm a menu item",
|
||||
icon: "img/icon.png"
|
||||
});
|
||||
|
||||
// Or you can omit the 'type' field for normal items
|
||||
item = new nw.MenuItem( { label: 'Simple item' });
|
||||
|
||||
// Bind a callback to item
|
||||
item = new nw.MenuItem( {
|
||||
label: "Click me",
|
||||
click: function () {
|
||||
console.log( "I'm clicked" );
|
||||
},
|
||||
key: "s",
|
||||
modifiers: "ctrl+alt",
|
||||
});
|
||||
|
||||
// You can have submenu!
|
||||
var submenu = new nw.Menu();
|
||||
submenu.append( new nw.MenuItem( { label: 'Item 1' }) );
|
||||
submenu.append( new nw.MenuItem( { label: 'Item 2' }) );
|
||||
submenu.append( new nw.MenuItem( { label: 'Item 3' }) );
|
||||
item.submenu = submenu;
|
||||
|
||||
// And everything can be changed at runtime
|
||||
item.label = 'New label';
|
||||
item.click = function () {
|
||||
console.log( 'New click callback' );
|
||||
};
|
||||
|
||||
/**
|
||||
* nw.Screen Tests
|
||||
*/
|
||||
//init must be called once during startup, before any function to nw.Screen can be called
|
||||
nw.Screen.Init();
|
||||
|
||||
var screenCB = {
|
||||
onDisplayBoundsChanged: function ( screen: any ) {
|
||||
console.log( 'displayBoundsChanged', screen );
|
||||
},
|
||||
|
||||
onDisplayAdded: function ( screen: any ) {
|
||||
console.log( 'displayAdded', screen );
|
||||
},
|
||||
|
||||
onDisplayRemoved: function ( screen: any ) {
|
||||
console.log( 'displayRemoved', screen )
|
||||
}
|
||||
};
|
||||
|
||||
// listen to screen events
|
||||
nw.Screen.on( 'displayBoundsChanged', screenCB.onDisplayBoundsChanged );
|
||||
nw.Screen.on( 'displayAdded', screenCB.onDisplayAdded );
|
||||
nw.Screen.on( 'displayRemoved', screenCB.onDisplayRemoved );
|
||||
|
||||
/**
|
||||
* nw.Screen.chooseDesktopMedia() Tests
|
||||
*/
|
||||
nw.Screen.Init(); // you only need to call this once
|
||||
nw.Screen.chooseDesktopMedia( ["window", "screen"],
|
||||
function ( streamId ) {
|
||||
var vid_constraint = {
|
||||
mandatory: {
|
||||
chromeMediaSource: 'desktop',
|
||||
chromeMediaSourceId: streamId,
|
||||
maxWidth: 1920,
|
||||
maxHeight: 1080
|
||||
},
|
||||
optional: <any[]>[]
|
||||
};
|
||||
//navigator.webkitGetUserMedia( { audio: false, video: constraint }, success_func, fallback_func );
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* nw.Screen.DesktopCaptureMonitor Tests
|
||||
*/
|
||||
var dcm = nw.Screen.DesktopCaptureMonitor;
|
||||
nw.Screen.Init();
|
||||
dcm.on( "added", function ( id, name, order, type ) {
|
||||
//select first stream and shutdown
|
||||
var constraints = {
|
||||
audio: {
|
||||
mandatory: {
|
||||
chromeMediaSource: "system",
|
||||
chromeMediaSourceId: dcm.registerStream( id )
|
||||
}
|
||||
},
|
||||
video: {
|
||||
mandatory: {
|
||||
chromeMediaSource: 'desktop',
|
||||
chromeMediaSourceId: dcm.registerStream( id )
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// TODO: call getUserMedia with contraints
|
||||
|
||||
dcm.stop();
|
||||
});
|
||||
|
||||
dcm.on( "removed", function ( id ) {
|
||||
});
|
||||
dcm.on( "orderchanged", function ( id, new_order, old_order ) {
|
||||
});
|
||||
dcm.on( "namechanged", function ( id, name ) {
|
||||
});
|
||||
dcm.on( "thumbnailchanged", function ( id, thumbnail ) {
|
||||
});
|
||||
dcm.start( true, true );
|
||||
|
||||
/**
|
||||
* nw.Shell Tests
|
||||
*/
|
||||
// Open URL with default browser.
|
||||
nw.Shell.openExternal( 'https://github.com/nwjs/nw.js' );
|
||||
|
||||
// Open a text file with default text editor.
|
||||
nw.Shell.openItem( 'test.txt' );
|
||||
|
||||
// Show a file in parent folder with file manager.
|
||||
nw.Shell.showItemInFolder( 'test.txt' );
|
||||
|
||||
/**
|
||||
* nw.Shortcut Tests
|
||||
*/
|
||||
var option = {
|
||||
key: "Ctrl+Shift+A",
|
||||
active: function () {
|
||||
console.log( "Global desktop keyboard shortcut: " + this.key + " active." );
|
||||
},
|
||||
failed: function ( msg: any ) {
|
||||
// :(, fail to register the |key| or couldn't parse the |key|.
|
||||
console.log( msg );
|
||||
}
|
||||
};
|
||||
|
||||
// Create a shortcut with |option|.
|
||||
var shortcut = new nw.Shortcut( option );
|
||||
|
||||
// Register global desktop shortcut, which can work without focus.
|
||||
nw.App.registerGlobalHotKey( shortcut );
|
||||
|
||||
// If register |shortcut| successfully and user struck "Ctrl+Shift+A", |shortcut|
|
||||
// will get an "active" event.
|
||||
|
||||
// You can also add listener to shortcut's active and failed event.
|
||||
shortcut.on( 'active', function () {
|
||||
console.log( "Global desktop keyboard shortcut: " + this.key + " active." );
|
||||
});
|
||||
|
||||
shortcut.on( 'failed', function ( msg: any ) {
|
||||
console.log( msg );
|
||||
});
|
||||
|
||||
// Unregister the global desktop shortcut.
|
||||
nw.App.unregisterGlobalHotKey( shortcut );
|
||||
|
||||
/**
|
||||
* nw.Tray Tests
|
||||
*/
|
||||
// Create a tray icon
|
||||
var tray = new nw.Tray( { title: 'Tray', icon: 'img/icon.png' });
|
||||
|
||||
// Give it a menu
|
||||
var menu = new nw.Menu();
|
||||
menu.append( new nw.MenuItem( { type: 'checkbox', label: 'box1' }) );
|
||||
tray.menu = menu;
|
||||
|
||||
// Remove the tray
|
||||
tray.remove();
|
||||
tray = null;
|
||||
|
||||
/**
|
||||
* nw.Window Tests
|
||||
*/
|
||||
// Get the current window
|
||||
var win = nw.Window.get();
|
||||
|
||||
// Listen to the minimize event
|
||||
win.on( 'minimize', function () {
|
||||
console.log( 'Window is minimized' );
|
||||
});
|
||||
|
||||
// Minimize the window
|
||||
win.minimize();
|
||||
|
||||
// Unlisten the minimize event
|
||||
win.removeAllListeners( 'minimize' );
|
||||
|
||||
// Create a new window and get it
|
||||
nw.Window.open( 'https://github.com', {}, function ( new_win ) {
|
||||
// And listen to new window's focus event
|
||||
new_win.on( 'focus', function () {
|
||||
console.log( 'New window is focused' );
|
||||
});
|
||||
});
|
||||
|
||||
// Get the current window
|
||||
var win = nw.Window.get();
|
||||
|
||||
// Create a new window and get it
|
||||
nw.Window.open( 'https://github.com/nwjs/nw.js', {}, function ( new_win ) {
|
||||
// do something with the newly created window
|
||||
});
|
||||
|
||||
win.on( 'close', function () {
|
||||
this.hide(); // Pretend to be closed already
|
||||
console.log( "We're closing..." );
|
||||
this.close( true ); // then close it forcely
|
||||
});
|
||||
|
||||
win.close();
|
||||
|
||||
// png as base64string
|
||||
win.capturePage( function ( base64string ) {
|
||||
// do something with the base64string
|
||||
}, { format: 'png', datatype: 'raw' });
|
||||
|
||||
// png as node buffer
|
||||
win.capturePage( function ( buffer ) {
|
||||
// do something with the buffer
|
||||
}, { format: 'png', datatype: 'buffer' });
|
||||
|
||||
// Open a new window.
|
||||
nw.Window.open( 'popup.html', {}, function ( win ) {
|
||||
|
||||
// Release the 'win' object here after the new window is closed.
|
||||
win.on( 'closed', function () {
|
||||
win = null;
|
||||
});
|
||||
|
||||
// Listen to main window's close event
|
||||
nw.Window.get().on( 'close', function () {
|
||||
// Hide the window to give user the feeling of closing immediately
|
||||
this.hide();
|
||||
|
||||
// If the new window is still open then close it.
|
||||
if ( win != null )
|
||||
win.close( true );
|
||||
|
||||
// After closing the new window, close the main window.
|
||||
this.close( true );
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
nw.Window.get().on( 'new-win-policy', function ( frame, url, policy ) {
|
||||
// do not open the window
|
||||
policy.ignore();
|
||||
// and open it in external browser
|
||||
nw.Shell.openExternal( url );
|
||||
});
|
||||
1883
nw.js/nw.js.d.ts
vendored
Normal file
1883
nw.js/nw.js.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user