2013-08-29 03:40:07 +00:00
|
|
|
assert = require 'assert'
|
2013-12-06 14:23:02 +00:00
|
|
|
fs = require 'fs'
|
|
|
|
path = require 'path'
|
2013-08-29 03:40:07 +00:00
|
|
|
remote = require 'remote'
|
2013-12-06 14:23:02 +00:00
|
|
|
|
2013-08-29 03:40:07 +00:00
|
|
|
BrowserWindow = remote.require 'browser-window'
|
|
|
|
|
2013-12-06 14:23:02 +00:00
|
|
|
describe 'browser-window module', ->
|
|
|
|
fixtures = path.resolve __dirname, 'fixtures'
|
2013-08-29 03:40:07 +00:00
|
|
|
|
2014-04-24 08:08:59 +00:00
|
|
|
w = null
|
|
|
|
beforeEach ->
|
|
|
|
w.destroy() if w?
|
2014-05-15 08:41:13 +00:00
|
|
|
w = new BrowserWindow(show: false, width: 400, height: 400)
|
2014-04-24 08:08:59 +00:00
|
|
|
afterEach ->
|
|
|
|
w.destroy() if w?
|
|
|
|
w = null
|
|
|
|
|
2013-08-29 03:40:07 +00:00
|
|
|
describe 'BrowserWindow.close()', ->
|
|
|
|
it 'should emit unload handler', (done) ->
|
2014-04-25 04:22:16 +00:00
|
|
|
w.webContents.on 'did-finish-load', ->
|
|
|
|
w.close()
|
2014-04-23 00:50:33 +00:00
|
|
|
w.on 'closed', ->
|
2013-08-29 10:03:14 +00:00
|
|
|
test = path.join(fixtures, 'api', 'unload')
|
2013-08-29 03:40:07 +00:00
|
|
|
content = fs.readFileSync(test)
|
|
|
|
fs.unlinkSync(test)
|
|
|
|
assert.equal String(content), 'unload'
|
|
|
|
done()
|
|
|
|
w.loadUrl 'file://' + path.join(fixtures, 'api', 'unload.html')
|
|
|
|
|
2013-09-02 08:28:36 +00:00
|
|
|
it 'should emit beforeunload handler', (done) ->
|
|
|
|
w.on 'onbeforeunload', ->
|
|
|
|
done()
|
2014-04-25 04:22:16 +00:00
|
|
|
w.webContents.on 'did-finish-load', ->
|
|
|
|
w.close()
|
2013-09-02 08:28:36 +00:00
|
|
|
w.loadUrl 'file://' + path.join(fixtures, 'api', 'beforeunload-false.html')
|
|
|
|
|
|
|
|
describe 'window.close()', ->
|
2014-02-17 10:18:52 +00:00
|
|
|
it 'should emit unload handler', (done) ->
|
2013-09-02 08:28:36 +00:00
|
|
|
w.on 'closed', ->
|
2013-08-29 03:40:07 +00:00
|
|
|
test = path.join(fixtures, 'api', 'close')
|
|
|
|
content = fs.readFileSync(test)
|
|
|
|
fs.unlinkSync(test)
|
|
|
|
assert.equal String(content), 'close'
|
|
|
|
done()
|
|
|
|
w.loadUrl 'file://' + path.join(fixtures, 'api', 'close.html')
|
2013-08-29 03:47:07 +00:00
|
|
|
|
2013-09-02 08:28:36 +00:00
|
|
|
it 'should emit beforeunload handler', (done) ->
|
2013-09-02 08:47:53 +00:00
|
|
|
w.on 'onbeforeunload', ->
|
|
|
|
done()
|
|
|
|
w.loadUrl 'file://' + path.join(fixtures, 'api', 'close-beforeunload-false.html')
|
2013-09-02 08:28:36 +00:00
|
|
|
|
2013-08-29 03:47:07 +00:00
|
|
|
describe 'BrowserWindow.loadUrl(url)', ->
|
2014-04-25 04:22:16 +00:00
|
|
|
it 'should emit did-start-loading event', (done) ->
|
|
|
|
w.webContents.on 'did-start-loading', ->
|
|
|
|
done()
|
2013-08-29 03:47:07 +00:00
|
|
|
w.loadUrl 'about:blank'
|
2013-09-02 08:28:36 +00:00
|
|
|
|
2013-10-03 01:39:17 +00:00
|
|
|
describe 'BrowserWindow.focus()', ->
|
|
|
|
it 'does not make the window become visible', ->
|
|
|
|
assert.equal w.isVisible(), false
|
|
|
|
w.focus()
|
|
|
|
assert.equal w.isVisible(), false
|
|
|
|
|
2013-11-22 06:42:39 +00:00
|
|
|
describe 'BrowserWindow.capturePage(rect, callback)', ->
|
2013-12-15 08:32:49 +00:00
|
|
|
it 'calls the callback with a Buffer', (done) ->
|
2013-11-22 06:42:39 +00:00
|
|
|
w.capturePage {x: 0, y: 0, width: 100, height: 100}, (image) ->
|
2013-12-15 08:32:49 +00:00
|
|
|
assert.equal image.constructor.name, 'Buffer'
|
|
|
|
done()
|
2013-11-22 06:42:39 +00:00
|
|
|
|
2014-05-15 08:41:13 +00:00
|
|
|
describe 'BrowserWindow.setSize(width, height)', ->
|
|
|
|
it 'sets the window size', ->
|
|
|
|
# No way to reliably set size when window has not been shown on Linux.
|
|
|
|
return if process.platform is 'linux'
|
|
|
|
|
|
|
|
size = [400, 400]
|
|
|
|
w.setSize size[0], size[1]
|
|
|
|
after = w.getSize()
|
|
|
|
assert.equal after[0], size[0]
|
|
|
|
assert.equal after[1], size[1]
|
|
|
|
|
2014-08-11 02:22:56 +00:00
|
|
|
it 'can set the window larger than screen', ->
|
|
|
|
# No way to reliably set size when window has not been shown on Linux.
|
|
|
|
return if process.platform is 'linux'
|
|
|
|
|
|
|
|
size = require('screen').getPrimaryDisplay().size
|
|
|
|
size.width += 100
|
|
|
|
size.height += 100
|
|
|
|
w.setSize size.width, size.height
|
|
|
|
after = w.getSize()
|
|
|
|
assert.equal after[0], size.width
|
|
|
|
assert.equal after[1], size.height
|
|
|
|
|
2014-05-15 08:41:13 +00:00
|
|
|
describe 'BrowserWindow.setContentSize(width, height)', ->
|
|
|
|
it 'sets the content size', ->
|
|
|
|
# No way to reliably set size when window has not been shown on Linux.
|
|
|
|
return if process.platform is 'linux'
|
|
|
|
|
|
|
|
size = [400, 400]
|
|
|
|
w.setContentSize size[0], size[1]
|
|
|
|
after = w.getContentSize()
|
|
|
|
assert.equal after[0], size[0]
|
|
|
|
assert.equal after[1], size[1]
|
|
|
|
|
2014-05-22 01:51:32 +00:00
|
|
|
describe 'BrowserWindow.fromId(id)', ->
|
|
|
|
it 'returns the window with id', ->
|
|
|
|
assert.equal w.id, BrowserWindow.fromId(w.id).id
|
|
|
|
|
2014-05-15 08:41:13 +00:00
|
|
|
describe '"use-content-size" option', ->
|
|
|
|
it 'make window created with content size when used', ->
|
|
|
|
w.destroy()
|
|
|
|
w = new BrowserWindow(show: false, width: 400, height: 400, 'use-content-size': true)
|
|
|
|
contentSize = w.getContentSize()
|
|
|
|
assert.equal contentSize[0], 400
|
|
|
|
assert.equal contentSize[1], 400
|
|
|
|
|
|
|
|
it 'make window created with window size when not used', ->
|
2014-07-21 12:58:15 +00:00
|
|
|
size = w.getSize()
|
|
|
|
assert.equal size[0], 400
|
|
|
|
assert.equal size[1], 400
|
2014-05-15 08:41:13 +00:00
|
|
|
|
2013-09-02 08:28:36 +00:00
|
|
|
describe 'beforeunload handler', ->
|
|
|
|
it 'returning true would not prevent close', (done) ->
|
|
|
|
w.on 'closed', ->
|
|
|
|
done()
|
|
|
|
w.loadUrl 'file://' + path.join(fixtures, 'api', 'close-beforeunload-true.html')
|
|
|
|
|
2013-09-02 08:54:54 +00:00
|
|
|
it 'returning non-empty string would not prevent close', (done) ->
|
|
|
|
w.on 'closed', ->
|
|
|
|
done()
|
|
|
|
w.loadUrl 'file://' + path.join(fixtures, 'api', 'close-beforeunload-string.html')
|
|
|
|
|
2013-09-02 08:28:36 +00:00
|
|
|
it 'returning false would prevent close', (done) ->
|
|
|
|
w.on 'onbeforeunload', ->
|
|
|
|
done()
|
|
|
|
w.loadUrl 'file://' + path.join(fixtures, 'api', 'close-beforeunload-false.html')
|
|
|
|
|
2013-09-02 08:54:54 +00:00
|
|
|
it 'returning empty string would prevent close', (done) ->
|
2013-09-02 08:28:36 +00:00
|
|
|
w.on 'onbeforeunload', ->
|
|
|
|
done()
|
2013-09-02 08:54:54 +00:00
|
|
|
w.loadUrl 'file://' + path.join(fixtures, 'api', 'close-beforeunload-empty-string.html')
|