| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>Screen Enumeration: getScreens() tentative</title> |
| <!-- TODO: update link to W3C whenever specifications are ready --> |
| <link rel="help" href="https://github.com/webscreens/screen-enumeration"/> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="resources/screenenumeration-helpers.js"></script> |
| <script> |
| |
| "use strict"; |
| |
| screen_enumeration_test(async (t, mockScreenEnum) => { |
| let display1 = makeDisplay(10, |
| {x: 0, y: 10, width: 1200, height: 800}, |
| {x: 20, y: 30, width: 1000, height: 600}, |
| 1.0); |
| |
| mockScreenEnum.addDisplay(display1); |
| mockScreenEnum.setPrimaryId(mockScreenEnum.displays_[0].id); |
| mockScreenEnum.setInternalId(mockScreenEnum.displays_[0].id); |
| mockScreenEnum.setSuccess(true); |
| |
| // Grant window-placement permissions for testdriver. |
| await test_driver.set_permission({name: "window-placement"}, "granted"); |
| |
| // This returns the mocked displays via MockScreenEnumeration implementation. |
| const screens = await self.getScreens(); |
| |
| assert_equals(screens.length, 1); |
| |
| assert_equals(screens[0].left, 0); |
| assert_equals(screens[0].top, 10); |
| assert_equals(screens[0].width, 1200); |
| assert_equals(screens[0].height, 800); |
| assert_equals(screens[0].availLeft, 20); |
| assert_equals(screens[0].availTop, 30); |
| assert_equals(screens[0].availWidth, 1000); |
| assert_equals(screens[0].availHeight, 600); |
| assert_equals(screens[0].primary, true); |
| assert_equals(screens[0].internal, true); |
| assert_equals(screens[0].scaleFactor, 1.0); |
| assert_equals(screens[0].id, "0"); |
| }, "getScreens() returns a single mocked screen"); |
| |
| screen_enumeration_test(async (t, mockScreenEnum) => { |
| let display1 = makeDisplay(10, |
| {x: 0, y: 10, width: 1200, height: 800}, |
| {x: 20, y: 30, width: 1000, height: 600}, |
| 1.0); |
| |
| let display2 = makeDisplay(11, |
| {x: 0, y: 10, width: 1200, height: 800}, |
| {x: 20, y: 30, width: 1000, height: 600}, |
| 1.0); |
| |
| let display3 = makeDisplay(12, |
| {x: 0, y: 10, width: 1200, height: 800}, |
| {x: 20, y: 30, width: 1000, height: 600}, |
| 1.0); |
| |
| mockScreenEnum.addDisplay(display1); |
| mockScreenEnum.addDisplay(display2); |
| mockScreenEnum.addDisplay(display3); |
| mockScreenEnum.setPrimaryId(mockScreenEnum.displays_[0].id); |
| mockScreenEnum.setInternalId(mockScreenEnum.displays_[0].id); |
| mockScreenEnum.setSuccess(true); |
| |
| // Grant window-placement permissions for testdriver. |
| await test_driver.set_permission({name: "window-placement"}, "granted"); |
| |
| // This returns the mocked displays via MockScreenEnumeration implementation. |
| let screens = await self.getScreens(); |
| |
| assert_equals(screens.length, 3); |
| assert_equals(screens[0].id, "0"); |
| assert_equals(screens[1].id, "1"); |
| assert_equals(screens[2].id, "2"); |
| |
| mockScreenEnum.removeDisplay(display2.id); |
| |
| screens = await self.getScreens(); |
| assert_equals(screens.length, 2); |
| assert_equals(screens[0].id, "0"); |
| assert_equals(screens[1].id, "1"); |
| |
| mockScreenEnum.removeDisplay(display1.id); |
| |
| screens = await self.getScreens(); |
| assert_equals(screens.length, 1); |
| assert_equals(screens[0].id, "0"); |
| }, "getScreens() supports multiple mocked screens"); |
| |
| </script> |