mirror of
https://github.com/servo/servo.git
synced 2025-07-12 01:43:43 +01:00
104 lines
3.8 KiB
HTML
104 lines
3.8 KiB
HTML
<!DOCTYPE html>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/resources/testdriver.js"></script>
|
|
<script src="/resources/testdriver-vendor.js"></script>
|
|
<script>
|
|
test(() => {
|
|
assert_true('type' in screen.orientation);
|
|
assert_true('angle' in screen.orientation);
|
|
}, "Test screen.orientation properties");
|
|
|
|
test(() => {
|
|
const type = screen.orientation.type;
|
|
const angle = screen.orientation.angle;
|
|
|
|
if (screen.width > screen.height) {
|
|
assert_true(type == "landscape-primary" || type == "landscape-secondary");
|
|
} else if (screen.width < screen.height) {
|
|
assert_true(type == "portrait-primary" || type == "portrait-secondary");
|
|
}
|
|
|
|
assert_true(angle == 0 || angle == 90 || angle == 180 || angle == 270);
|
|
}, "Test screen.orientation default values.");
|
|
|
|
promise_test(async t => {
|
|
await test_driver.bless("request full screen", () => {
|
|
return document.documentElement.requestFullscreen();
|
|
});
|
|
await screen.orientation.lock("portrait-primary");
|
|
const orientations =
|
|
screen.orientation.angle === 0
|
|
? {
|
|
secondaryOrientation1: "portrait-secondary",
|
|
primaryOrientation2: "landscape-primary",
|
|
secondaryOrientation2: "landscape-secondary"
|
|
}
|
|
: {
|
|
secondaryOrientation1: "landscape-secondary",
|
|
primaryOrientation2: "portrait-primary",
|
|
secondaryOrientation2: "portrait-secondary"
|
|
};
|
|
await screen.orientation.lock(orientations.secondaryOrientation1);
|
|
assert_equals(
|
|
screen.orientation.angle,
|
|
180,
|
|
"Secondary orientation 1 angle must be 180"
|
|
);
|
|
await screen.orientation.lock(orientations.primaryOrientation2);
|
|
assert_true(
|
|
screen.orientation.angle == 90 || screen.orientation.angle == 270,
|
|
"Primary orientation 2 angle must be either 90 or 270"
|
|
);
|
|
const primaryOrientation2Angle = screen.orientation.angle;
|
|
const secondaryOrientation2Angle = primaryOrientation2Angle === 90 ? 270 : 90;
|
|
await screen.orientation.lock(orientations.secondaryOrientation2);
|
|
assert_equals(
|
|
screen.orientation.angle,
|
|
secondaryOrientation2Angle,
|
|
"Secondary orientation 2 angle must be the opposite angle to primary orientation 2"
|
|
);
|
|
screen.orientation.unlock();
|
|
return document.exitFullscreen();
|
|
}, "Test the orientations and associated angles");
|
|
|
|
test(() => {
|
|
const type = screen.orientation.type;
|
|
const angle = screen.orientation.angle;
|
|
|
|
screen.orientation.type = 'foo';
|
|
screen.orientation.angle = 42;
|
|
|
|
assert_equals(screen.orientation.type, type);
|
|
assert_equals(screen.orientation.angle, angle);
|
|
}, "Test that screen.orientation properties are not writable");
|
|
|
|
test(() => {
|
|
assert_equals(screen.orientation, screen.orientation);
|
|
}, "Test that screen.orientation is always the same object");
|
|
|
|
promise_test(async t => {
|
|
await test_driver.bless("request full screen", () => {
|
|
return document.documentElement.requestFullscreen();
|
|
});
|
|
const orientation = screen.orientation;
|
|
const orientationType = screen.orientation.type;
|
|
const orientationAngle = screen.orientation.angle;
|
|
const orientationWatcher = new EventWatcher(t, orientation, "change");
|
|
|
|
if (orientationType.includes("portrait")) {
|
|
await orientation.lock("landscape-primary");
|
|
} else {
|
|
await orientation.lock("portrait-primary");
|
|
}
|
|
|
|
await orientationWatcher.wait_for("change");
|
|
assert_equals(screen.orientation, orientation);
|
|
assert_equals(screen.orientation.type, orientation.type);
|
|
assert_equals(screen.orientation.angle, orientation.angle);
|
|
assert_not_equals(screen.orientation.type, orientationType);
|
|
assert_not_equals(screen.orientation.angle, orientationAngle);
|
|
screen.orientation.unlock();
|
|
return document.exitFullscreen();
|
|
}, "Test that screen.orientation values change if the orientation changes");
|
|
</script>
|