Chromium Code Reviews| Index: chrome/test/data/extensions/platform_apps/window_api/test.js |
| diff --git a/chrome/test/data/extensions/platform_apps/window_api/test.js b/chrome/test/data/extensions/platform_apps/window_api/test.js |
| index eb2e86bb9f967e98bafc6d6eda122809b1107e4a..4897087dcee37e7f29b337b742c82b9bba896679 100644 |
| --- a/chrome/test/data/extensions/platform_apps/window_api/test.js |
| +++ b/chrome/test/data/extensions/platform_apps/window_api/test.js |
| @@ -49,6 +49,61 @@ function waitForLoad(win, callback) { |
| })); |
| } |
| +function assertConstraintsUnspecified(win) { |
| + chrome.test.assertEq(null, win.innerBounds.minWidth); |
| + chrome.test.assertEq(null, win.innerBounds.minHeight); |
| + chrome.test.assertEq(null, win.innerBounds.maxWidth); |
| + chrome.test.assertEq(null, win.innerBounds.maxHeight); |
| + chrome.test.assertEq(null, win.outerBounds.minWidth); |
| + chrome.test.assertEq(null, win.outerBounds.minHeight); |
| + chrome.test.assertEq(null, win.outerBounds.maxWidth); |
| + chrome.test.assertEq(null, win.outerBounds.maxHeight); |
| +} |
| + |
| +function assertBoundsConsistent(win) { |
| + chrome.test.assertTrue(win.innerBounds.left >= win.outerBounds.left); |
| + chrome.test.assertTrue(win.innerBounds.top >= win.outerBounds.top); |
| + chrome.test.assertTrue(win.innerBounds.width <= win.outerBounds.width); |
| + chrome.test.assertTrue(win.innerBounds.height <= win.outerBounds.height); |
| + |
| + if (win.innerBounds.minWidth === null) |
| + chrome.test.assertEq(null, win.outerBounds.minWidth); |
| + else |
| + chrome.test.assertTrue( |
| + win.innerBounds.minWidth <= win.outerBounds.minWidth); |
| + |
| + if (win.innerBounds.minHeight === null) |
| + chrome.test.assertEq(null, win.outerBounds.minHeight); |
| + else |
| + chrome.test.assertTrue( |
| + win.innerBounds.minHeight <= win.outerBounds.minHeight); |
| + |
| + if (win.innerBounds.maxWidth === null) |
| + chrome.test.assertEq(null, win.outerBounds.maxWidth); |
| + else |
| + chrome.test.assertTrue( |
| + win.innerBounds.maxWidth <= win.outerBounds.maxWidth); |
| + |
| + if (win.innerBounds.maxHeight === null) |
| + chrome.test.assertEq(null, win.outerBounds.maxHeight); |
| + else |
| + chrome.test.assertTrue( |
| + win.innerBounds.maxHeight <= win.outerBounds.maxHeight); |
| +} |
| + |
| +function testConflictingBoundsProperty(propertyName) { |
| + var innerBounds = {}; |
| + var outerBounds = {}; |
| + innerBounds[propertyName] = 20; |
| + outerBounds[propertyName] = 20; |
| + chrome.app.window.create('test.html', { |
| + innerBounds: innerBounds, |
| + outerBounds: outerBounds |
| + }, callbackFail('The ' + propertyName + ' property cannot be specified for ' + |
| + 'both inner and outer bounds.') |
| + ); |
| +} |
| + |
| function testCreate() { |
| chrome.test.runTests([ |
| function basic() { |
| @@ -153,6 +208,333 @@ function testCreate() { |
| ]); |
| } |
| +function testInitialBounds() { |
| + chrome.test.runTests([ |
| + function testNoOptions() { |
| + chrome.app.window.create('test.html', { |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertTrue(win.innerBounds.width > 0); |
| + chrome.test.assertTrue(win.innerBounds.height > 0); |
| + chrome.test.assertTrue(win.outerBounds.width > 0); |
| + chrome.test.assertTrue(win.outerBounds.height > 0); |
| + assertConstraintsUnspecified(win); |
| + assertBoundsConsistent(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testInnerBoundsOnly() { |
| + var innerBounds = { |
| + left: 150, |
| + top: 100, |
| + width: 400, |
| + height: 300 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + innerBounds: innerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(innerBounds.left, win.innerBounds.left); |
| + chrome.test.assertEq(innerBounds.top, win.innerBounds.top); |
| + chrome.test.assertEq(innerBounds.width, win.innerBounds.width); |
| + chrome.test.assertEq(innerBounds.height, win.innerBounds.height); |
| + assertBoundsConsistent(win); |
| + assertConstraintsUnspecified(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testOuterBoundsOnly() { |
| + var outerBounds = { |
| + left: 150, |
| + top: 100, |
| + width: 400, |
| + height: 300 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + outerBounds: outerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(outerBounds.left, win.outerBounds.left); |
| + chrome.test.assertEq(outerBounds.top, win.outerBounds.top); |
| + chrome.test.assertEq(outerBounds.width, win.outerBounds.width); |
| + chrome.test.assertEq(outerBounds.height, win.outerBounds.height); |
| + assertBoundsConsistent(win); |
| + assertConstraintsUnspecified(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testFrameless() { |
| + var outerBounds = { |
| + left: 150, |
| + top: 100, |
| + width: 400, |
| + height: 300 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + outerBounds: outerBounds, |
| + frame: 'none' |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(outerBounds.left, win.outerBounds.left); |
| + chrome.test.assertEq(outerBounds.top, win.outerBounds.top); |
| + chrome.test.assertEq(outerBounds.width, win.outerBounds.width); |
| + chrome.test.assertEq(outerBounds.height, win.outerBounds.height); |
| + chrome.test.assertEq(outerBounds.left, win.innerBounds.left); |
| + chrome.test.assertEq(outerBounds.top, win.innerBounds.top); |
| + chrome.test.assertEq(outerBounds.width, win.innerBounds.width); |
| + chrome.test.assertEq(outerBounds.height, win.innerBounds.height); |
| + assertConstraintsUnspecified(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testInnerSizeAndOuterPos() { |
| + var innerBounds = { |
| + width: 400, |
| + height: 300 |
| + }; |
| + var outerBounds = { |
| + left: 150, |
| + top: 100 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + innerBounds: innerBounds, |
| + outerBounds: outerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(outerBounds.left, win.outerBounds.left); |
| + chrome.test.assertEq(outerBounds.top, win.outerBounds.top); |
| + chrome.test.assertEq(innerBounds.width, win.innerBounds.width); |
| + chrome.test.assertEq(innerBounds.height, win.innerBounds.height); |
| + assertBoundsConsistent(win); |
| + assertConstraintsUnspecified(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testInnerAndOuterBoundsEdgeCase() { |
| + var innerBounds = { |
| + left: 150, |
| + height: 300 |
| + }; |
| + var outerBounds = { |
| + width: 400, |
| + top: 100 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + innerBounds: innerBounds, |
| + outerBounds: outerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(innerBounds.left, win.innerBounds.left); |
| + chrome.test.assertEq(innerBounds.height, win.innerBounds.height); |
| + chrome.test.assertEq(outerBounds.top, win.outerBounds.top); |
| + chrome.test.assertEq(outerBounds.width, win.outerBounds.width); |
| + assertBoundsConsistent(win); |
| + assertConstraintsUnspecified(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testPositionOnly() { |
| + var outerBounds = { |
| + left: 150, |
| + top: 100 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + outerBounds: outerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(outerBounds.left, win.outerBounds.left); |
| + chrome.test.assertEq(outerBounds.top, win.outerBounds.top); |
| + chrome.test.assertTrue(win.innerBounds.width > 0); |
| + chrome.test.assertTrue(win.innerBounds.height > 0); |
| + chrome.test.assertTrue(win.outerBounds.width > 0); |
| + chrome.test.assertTrue(win.outerBounds.height > 0); |
| + assertBoundsConsistent(win); |
| + assertConstraintsUnspecified(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testSizeOnly() { |
| + var outerBounds = { |
| + width: 500, |
| + height: 400 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + outerBounds: outerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(outerBounds.width, win.outerBounds.width); |
| + chrome.test.assertEq(outerBounds.height, win.outerBounds.height); |
| + assertBoundsConsistent(win); |
| + assertConstraintsUnspecified(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testConflictingProperties() { |
| + testConflictingBoundsProperty("width"); |
| + testConflictingBoundsProperty("height"); |
| + testConflictingBoundsProperty("left"); |
| + testConflictingBoundsProperty("top"); |
| + testConflictingBoundsProperty("minWidth"); |
| + testConflictingBoundsProperty("minHeight"); |
| + testConflictingBoundsProperty("maxWidth"); |
| + testConflictingBoundsProperty("maxHeight"); |
| + } |
| + ]); |
| +} |
| + |
| +function testInitialBoundsInStable() { |
| + chrome.test.runTests([ |
| + function testInnerBounds() { |
| + var innerBounds = { |
| + width: 600, |
| + height: 400 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + innerBounds: innerBounds |
| + }, callbackFail('innerBounds and outerBounds are only available in'+ |
| + ' dev channel.') |
| + ); |
| + }, |
| + function testOuterBounds() { |
| + var outerBounds = { |
| + width: 600, |
| + height: 400 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + outerBounds: outerBounds |
| + }, callbackFail('innerBounds and outerBounds are only available in'+ |
| + ' dev channel.') |
| + ); |
| + } |
| + ]); |
| +} |
| + |
| +function testInitialConstraints() { |
| + chrome.test.runTests([ |
| + function testMaxInnerConstraints() { |
| + var innerBounds = { |
| + width: 800, |
| + height: 600, |
| + maxWidth: 500, |
| + maxHeight: 400 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + innerBounds: innerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(innerBounds.maxWidth, win.innerBounds.width); |
| + chrome.test.assertEq(innerBounds.maxHeight, win.innerBounds.height); |
| + chrome.test.assertEq(innerBounds.maxWidth, win.innerBounds.maxWidth); |
| + chrome.test.assertEq(innerBounds.maxHeight, win.innerBounds.maxHeight); |
| + assertBoundsConsistent(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testMinInnerConstraints() { |
| + var innerBounds = { |
| + width: 100, |
| + height: 100, |
| + minWidth: 300, |
| + minHeight: 200 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + innerBounds: innerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(innerBounds.minWidth, win.innerBounds.width); |
| + chrome.test.assertEq(innerBounds.minHeight, win.innerBounds.height); |
| + chrome.test.assertEq(innerBounds.minWidth, win.innerBounds.minWidth); |
| + chrome.test.assertEq(innerBounds.minHeight, win.innerBounds.minHeight); |
| + assertBoundsConsistent(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testMaxOuterConstraints() { |
| + var outerBounds = { |
| + width: 800, |
| + height: 600, |
| + maxWidth: 500, |
| + maxHeight: 400 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + outerBounds: outerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(outerBounds.maxWidth, win.outerBounds.width); |
| + chrome.test.assertEq(outerBounds.maxHeight, win.outerBounds.height); |
| + chrome.test.assertEq(outerBounds.maxWidth, win.outerBounds.maxWidth); |
| + chrome.test.assertEq(outerBounds.maxHeight, win.outerBounds.maxHeight); |
| + assertBoundsConsistent(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testMinOuterConstraints() { |
| + var outerBounds = { |
| + width: 100, |
| + height: 100, |
| + minWidth: 300, |
| + minHeight: 200 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + outerBounds: outerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(outerBounds.minWidth, win.outerBounds.width); |
| + chrome.test.assertEq(outerBounds.minHeight, win.outerBounds.height); |
| + chrome.test.assertEq(outerBounds.minWidth, win.outerBounds.minWidth); |
| + chrome.test.assertEq(outerBounds.minHeight, win.outerBounds.minHeight); |
| + assertBoundsConsistent(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testMixedConstraints() { |
| + var innerBounds = { |
| + width: 100, |
| + minHeight: 300 |
| + }; |
| + var outerBounds = { |
| + height: 100, |
| + minWidth: 400, |
| + }; |
| + chrome.app.window.create('test.html', { |
| + innerBounds: innerBounds, |
| + outerBounds: outerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(outerBounds.minWidth, win.outerBounds.width); |
| + chrome.test.assertEq(innerBounds.minHeight, win.innerBounds.height); |
| + chrome.test.assertEq(outerBounds.minWidth, win.outerBounds.minWidth); |
| + chrome.test.assertEq(innerBounds.minHeight, win.innerBounds.minHeight); |
| + assertBoundsConsistent(win); |
| + win.close(); |
| + })); |
| + }, |
| + function testBadConstraints() { |
| + var outerBounds = { |
| + width: 500, |
| + height: 400, |
| + minWidth: 800, |
| + minHeight: 700, |
| + maxWidth: 300, |
| + maxHeight: 200 |
| + }; |
| + chrome.app.window.create('test.html', { |
| + outerBounds: outerBounds |
| + }, callbackPass(function(win) { |
| + chrome.test.assertTrue(win != null); |
| + chrome.test.assertEq(outerBounds.minWidth, win.outerBounds.width); |
| + chrome.test.assertEq(outerBounds.minHeight, win.outerBounds.height); |
| + chrome.test.assertEq(outerBounds.minWidth, win.outerBounds.minWidth); |
| + chrome.test.assertEq(outerBounds.minHeight, win.outerBounds.minHeight); |
| + chrome.test.assertEq(outerBounds.minWidth, win.outerBounds.maxWidth); |
| + chrome.test.assertEq(outerBounds.minHeight, win.outerBounds.maxHeight); |
| + assertBoundsConsistent(win); |
| + win.close(); |
| + })); |
| + }, |
| + ]); |
| +} |
| + |
|
benwells
2014/03/05 02:33:30
These tests are awesome, hopefully they won't suff
|
| function testSingleton() { |
| chrome.test.runTests([ |
| function noParameterWithId() { |