Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(814)

Unified Diff: chrome/test/data/extensions/platform_apps/window_api/test.js

Issue 186343002: Create windows for new app window bounds API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed nit Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/resources/extensions/app_window_custom_bindings.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9760900ed3dba75544245d91e3d9cd5e29a23874..62edcae91f57cce91351c0102c6c5ca6bd039da1 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,65 @@ 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) {
+ // Ensure that the inner and outer bounds are consistent. Since platforms
+ // have different frame padding, we cannot check the sizes precisely.
+ // It is a reasonable assumption that all platforms will have a title bar at
+ // the top of the window.
+ 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() {
@@ -103,51 +162,471 @@ function testCreate() {
win2.contentWindow.close();
}));
}));
- },
+ }
+ ]);
+}
+function testDeprecatedBounds() {
+ chrome.test.runTests([
function contentSize() {
- chrome.app.window.create('test.html',
- { bounds: { width: 250, height: 200 } }, callbackPass(function(win) {
- assertFuzzyEq(250, win.contentWindow.innerWidth, defaultFuzzFactor);
- assertFuzzyEq(200, win.contentWindow.innerHeight, defaultFuzzFactor);
+ var options = { bounds: { width: 250, height: 200 } };
+ chrome.app.window.create('test.html', options, callbackPass(
+ function(win) {
+ var bounds = win.getBounds();
+ chrome.test.assertEq(options.bounds.width, bounds.width);
+ chrome.test.assertEq(options.bounds.height, bounds.height);
+ chrome.test.assertEq(options.bounds.width, win.innerBounds.width);
+ chrome.test.assertEq(options.bounds.height, win.innerBounds.height);
+ win.close();
+ }));
+ },
+
+ function windowPosition() {
+ var options = { bounds: { left: 250, top: 200 } };
+ chrome.app.window.create('test.html', options, callbackPass(
+ function(win) {
+ var bounds = win.getBounds();
+ chrome.test.assertEq(options.bounds.left, bounds.left);
+ chrome.test.assertEq(options.bounds.top, bounds.top);
+ chrome.test.assertEq(options.bounds.left, win.outerBounds.left);
+ chrome.test.assertEq(options.bounds.top, win.outerBounds.top);
win.close();
}));
},
function minSize() {
- chrome.app.window.create('test.html', {
+ var options = {
bounds: { width: 250, height: 250 },
minWidth: 400, minHeight: 450
- }, callbackPass(function(win) {
- var w = win.contentWindow;
- assertFuzzyEq(400, w.innerWidth, defaultFuzzFactor);
- assertFuzzyEq(450, w.innerHeight, defaultFuzzFactor);
- w.close();
+ };
+ chrome.app.window.create('test.html', options, callbackPass(
+ function(win) {
+ var bounds = win.getBounds();
+ chrome.test.assertEq(options.minWidth, bounds.width);
+ chrome.test.assertEq(options.minHeight, bounds.height);
+ win.close();
}));
},
function maxSize() {
- chrome.app.window.create('test.html', {
+ var options = {
bounds: { width: 250, height: 250 },
maxWidth: 200, maxHeight: 150
- }, callbackPass(function(win) {
- var w = win.contentWindow;
- assertFuzzyEq(200, w.innerWidth, defaultFuzzFactor);
- assertFuzzyEq(150, w.innerHeight, defaultFuzzFactor);
- w.close();
+ };
+ chrome.app.window.create('test.html', options, callbackPass(
+ function(win) {
+ var bounds = win.getBounds();
+ chrome.test.assertEq(options.maxWidth, bounds.width);
+ chrome.test.assertEq(options.maxHeight, bounds.height);
+ win.close();
}));
},
function minAndMaxSize() {
- chrome.app.window.create('test.html', {
+ var options = {
bounds: { width: 250, height: 250 },
minWidth: 400, minHeight: 450,
maxWidth: 200, maxHeight: 150
+ };
+ chrome.app.window.create('test.html', options, callbackPass(
+ function(win) {
+ var bounds = win.getBounds();
+ chrome.test.assertEq(options.minWidth, bounds.width);
+ chrome.test.assertEq(options.minHeight, bounds.height);
+ win.close();
+ }));
+ },
+
+ function simpleSetBounds() {
+ chrome.app.window.create('test.html',
+ { bounds: { width: 250, height: 200 } }, callbackPass(function(win) {
+ var newBounds = {width: 400, height: 450};
+ win.setBounds(newBounds);
+ chrome.test.waitForRoundTrip('msg', callbackPass(function() {
+ var bounds = win.getBounds();
+ chrome.test.assertEq(newBounds.width, bounds.width);
+ chrome.test.assertEq(newBounds.height, bounds.height);
+ win.close();
+ }));
+ }));
+ },
+
+ function heightOnlySetBounds() {
+ chrome.app.window.create('test.html', {
+ bounds: { width: 512, height: 256 }
}, callbackPass(function(win) {
- var w = win.contentWindow;
- assertFuzzyEq(400, w.innerWidth, defaultFuzzFactor);
- assertFuzzyEq(450, w.innerHeight, defaultFuzzFactor);
- w.close();
+ win.setBounds({ height: 512 });
+ chrome.test.waitForRoundTrip('msg', callbackPass(function() {
+ var bounds = win.getBounds();
+ chrome.test.assertEq(512, bounds.width);
+ chrome.test.assertEq(512, bounds.height);
+ win.close();
+ }));
+ }));
+ },
+ ]);
+}
+
+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();
+ }));
+ },
+
+ function testFrameless() {
+ var outerBounds = {
+ minWidth: 50,
+ minHeight: 50,
+ maxWidth: 800,
+ maxHeight: 800
+ };
+ chrome.app.window.create('test.html', {
+ outerBounds: outerBounds,
+ frame: 'none'
+ }, callbackPass(function(win) {
+ chrome.test.assertTrue(win != null);
+ chrome.test.assertEq(outerBounds.minWidth, win.outerBounds.minWidth);
+ chrome.test.assertEq(outerBounds.minHeight, win.outerBounds.minHeight);
+ chrome.test.assertEq(outerBounds.maxWidth, win.outerBounds.maxWidth);
+ chrome.test.assertEq(outerBounds.maxHeight, win.outerBounds.maxHeight);
+ chrome.test.assertEq(outerBounds.minWidth, win.innerBounds.minWidth);
+ chrome.test.assertEq(outerBounds.minHeight, win.innerBounds.minHeight);
+ chrome.test.assertEq(outerBounds.maxWidth, win.innerBounds.maxWidth);
+ chrome.test.assertEq(outerBounds.maxHeight, win.innerBounds.maxHeight);
+ win.close();
}));
}
]);
@@ -177,37 +656,6 @@ function testSingleton() {
]);
}
-function testBounds() {
- chrome.test.runTests([
- function simpleSetBounds() {
- chrome.app.window.create('test.html',
- { bounds: { width: 250, height: 200 } }, callbackPass(function(win) {
- var b = win.getBounds();
- win.setBounds({width: 400, height: 450})
- // Listen to onresize here rather than win.onBoundsChanged, because
- // onBoundsChanged is fired before the web contents are resized.
- win.contentWindow.onresize = callbackPass(function() {
- assertFuzzyEq(400, win.contentWindow.innerWidth, defaultFuzzFactor);
- assertFuzzyEq(450, win.contentWindow.innerHeight, defaultFuzzFactor);
- win.close();
- });
- }));
- },
-
- function heightOnlySetBounds() {
- chrome.app.window.create('test.html', {
- bounds: { width: 512, height: 256 }
- }, callbackPass(function(win) {
- win.setBounds({ height: 512 });
- win.contentWindow.onresize = callbackPass(function() {
- assertFuzzyEq(512, win.contentWindow.innerHeight, defaultFuzzFactor);
- win.close();
- });
- }));
- },
- ]);
-}
-
function testCloseEvent() {
chrome.test.runTests([
function basic() {
« no previous file with comments | « chrome/renderer/resources/extensions/app_window_custom_bindings.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698