summaryrefslogtreecommitdiff
diff options
authorYao Wei (魏銘廷) <yao.wei@canonical.com>2021-09-13 10:23:55 +0800
committerYao Wei (魏銘廷) <yao.wei@canonical.com>2021-09-22 10:45:40 +0800
commitf33feb02a56471e8ea605cabc2d698a40890af6f (patch)
tree038a4b7f720041640bcb8c3f96c87051e2ab172b
parent7e6a412cf72fab51b113c712bc37b98d1481f0f8 (diff)
Check whether screen orientation is fixed on laptops
This is to address LP: #1895110, that the accelerometer on some laptops can cause the screen orientation change by tilting the machine, or is incorrect by default.
-rwxr-xr-xbin/fixed_screen_orientation.sh22
-rw-r--r--units/input/jobs.pxu16
-rw-r--r--units/input/test-plan.pxu4
3 files changed, 41 insertions, 1 deletions
diff --git a/bin/fixed_screen_orientation.sh b/bin/fixed_screen_orientation.sh
new file mode 100755
index 0000000..5fbe162
--- /dev/null
+++ b/bin/fixed_screen_orientation.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+if ! (udevadm info --export-db | grep -q iio_device); then
+ echo "Screen orientation check PASSED:"
+ echo "no iio_device found in this device, therefore rotation should not happen."
+ exit 0
+fi
+
+if dbus-send --system --print-reply --dest=net.hadess.SensorProxy \
+ /net/hadess/SensorProxy \
+ org.freedesktop.DBus.Properties.Get string:net.hadess.SensorProxy string:HasAccelerometer |
+ grep -q "boolean true"; then
+ echo "Screen orientation check FAILED:"
+ echo "this device has an accelerometer that needs to be disabled."
+ echo "==="
+ # list IIO devices for reference
+ echo "udevadm info /sys/bus/iio/devices/iio*"
+ udevadm info /sys/bus/iio/devices/iio*
+ exit 1
+fi
+
+echo "Screen orientation check PASSED:"
+echo "Accelerometer is not enabled."
diff --git a/units/input/jobs.pxu b/units/input/jobs.pxu
index 5f5cde0..7ae0667 100644
--- a/units/input/jobs.pxu
+++ b/units/input/jobs.pxu
@@ -75,3 +75,19 @@ _steps:
4. Double-click the left button with your {product}.
_verification:
Did these buttons work as expected?
+
+unit: template
+template-resource: dmi
+template-filter: dmi.category == 'CHASSIS' and dmi.product not in ('Tablet', 'Convertible', 'Detachable')
+plugin: shell
+category_id: com.canonical.plainbox::input
+estimated_duration: 2
+id: input/fixed_screen_orientation_on_{product}_{__index__}
+user: root
+requires:
+ executable.name == 'udevadm'
+ executable.name == 'dbus-send'
+command: fixed_screen_orientation.sh
+_summary: Check whether screen orientation is fixed on {product}
+_purpose:
+ This tests whether the display orientation of {product} is fixed, and cannot be altered by tilting {product}.
diff --git a/units/input/test-plan.pxu b/units/input/test-plan.pxu
index ef9cf75..1c87d1f 100644
--- a/units/input/test-plan.pxu
+++ b/units/input/test-plan.pxu
@@ -23,7 +23,9 @@ _name: Input tests (Automated)
_description:
Input tests (Automated)
include:
-
+ input/fixed_screen_orientation_on_.* certification-status=non-blocker
+bootstrap_include:
+ dmi
id: after-suspend-input-cert-full
unit: test plan