From 0022c403a08bab7008842f9cc768432a98be407b Mon Sep 17 00:00:00 2001
From: Randolf Jung <jrandolf@chromium.org>
Date: Mon, 4 Mar 2024 12:56:58 +0100
Subject: [PATCH] Update pointer option processing

For specific pointer types, some properties are not supported and should not be configurable and must be set to the default recommended in https://w3c.github.io/pointerevents/#pointerevent-interface (not the interface definition; each property has a default written in their description).
---
 index.html | 649 ++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 446 insertions(+), 203 deletions(-)

diff --git a/index.html b/index.html
index a26a833c..1daa6b3e 100644
--- a/index.html
+++ b/index.html
@@ -8383,124 +8383,240 @@ <h3>Processing actions</h3>
  given <var>action item</var>, and <var>action</var>:</p>
 
 <ol class="algorithm">
- <li><p>Let <var>button</var> be the result
-  of getting the property <code>button</code>
-  from <var>action item</var>.
-
- <li><p>If <var>button</var> is not an <a>Integer</a> greater than or
-  equal to 0 return <a>error</a> with <a>error code</a>
-  <a>invalid argument</a>.
-
- <li><p>Set the <code>button</code> property of <var>action</var>
-  to <var>button</var>.
-
- <li><p>Let <var>width</var> be the result
-  of getting the property <code>width</code>
-  from <var>action item</var>.
-
- <li><p>If <var>width</var> is not <a>undefined</a>
-  and <var>width</var> is not a <a>Number</a> greater than or
-  equal to 0 return <a>error</a> with <a>error code</a>
-  <a>invalid argument</a>.
-
- <li><p>Set the <code>width</code> property of <var>action</var>
-  to <var>width</var>.
-
- <li><p>Let <var>height</var> be the result
-  of getting the property <code>height</code>
-  from <var>action item</var>.
-
- <li><p>If <var>height</var> is not <a>undefined</a>
-  and <var>height</var> is not a <a>Number</a> greater than or
-  equal to 0 return <a>error</a> with <a>error code</a>
-  <a>invalid argument</a>.
-
- <li><p>Set the <code>height</code> property of <var>action</var>
-  to <var>height</var>.
-
- <li><p>Let <var>pressure</var> be the result
-  of getting the property <code>pressure</code>
-  from <var>action item</var>.
-
- <li><p>If <var>pressure</var> is not <a>undefined</a>
-  and <var>pressure</var> is not a <a>Number</a> greater than or
-  equal to 0 and less than or equal to 1 return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
-
- <li><p>Set the <code>pressure</code> property of <var>action</var>
-  to <var>pressure</var>.
-
- <li><p>Let <var>tangentialPressure</var> be the result
-  of getting the property <code>tangentialPressure</code>
-  from <var>action item</var>.
-
- <li><p>If <var>tangentialPressure</var> is not <a>undefined</a>
-  and <var>tangentialPressure</var> is not a <a>Number</a> greater
-  than or equal to -1 and less than or equal to 1 return <a>error</a>
-  with <a>error code</a> <a>invalid argument</a>.
-
- <li><p>Set the <code>tangentialPressure</code> property of <var>action</var>
-  to <var>tangentialPressure</var>.
-
- <li><p>Let <var>tiltX</var> be the result
-  of getting the property <code>tiltX</code>
-  from <var>action item</var>.
-
- <li><p>If <var>tiltX</var> is not <a>undefined</a>
-  and <var>tiltX</var> is not an <a>Integer</a> greater than or
-  equal to -90 and less than or equal to 90 return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
+ <li><p>Let <var>pointerType</var> be equal to
+  <var>action</var>’s <code>pointerType</code> property.
+  
+ <li><p>Run the substeps of the first matching value of <var>pointerType</var>
 
- <li><p>Set the <code>tiltX</code> property of <var>action</var>
-  to <var>tiltX</var>.
+  <dl class=switch>
+   <dt>"<code>mouse</code>"
+   <dd>
+    <ol>
+     <li><p>Let <var>button</var> be the result
+      of getting the property <code>button</code>
+      from <var>action item</var>.
+    
+     <li><p>If <var>button</var> is not an <a>Integer</a> greater than or
+      equal to 0 return <a>error</a> with <a>error code</a>
+      <a>invalid argument</a>.
+    
+     <li><p>Set the <code>button</code> property of <var>action</var>
+      to <var>button</var>.
 
- <li><p>Let <var>tiltY</var> be the result
-  of getting the property <code>tiltY</code>
-  from <var>action item</var>.
+     <li><p>Set the <code>width</code> property of <var>action</var>
+      to 1.
 
- <li><p>If <var>tiltY</var> is not <a>undefined</a>
-  and <var>tiltY</var> is not an <a>Integer</a> greater than or
-  equal to -90 and less than or equal to 90 return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
+     <li><p>Set the <code>height</code> property of <var>action</var>
+      to 1.
+     
+     <li><p>If <var>action</var>'s <code>subtype</code> property is
+      "<code>pointerDown</code>", set the <code>pressure</code> property of
+      <var>action</var> to 0.5. Otherwise, set the <code>pressure</code> property of
+      <var>action</var> to 0.
 
- <li><p>Set the <code>tiltY</code> property of <var>action</var>
-  to <var>tiltY</var>.
+     <li><p>Set the <code>tangentialPressure</code> property of <var>action</var>
+      to 0.
 
- <li><p>Let <var>twist</var> be the result
-  of getting the property <code>twist</code>
-  from <var>action item</var>.
+     <li><p>Set the <code>tiltX</code> property of <var>action</var>
+      to 0.
 
- <li><p>If <var>twist</var> is not <a>undefined</a>
-  and <var>twist</var> is not an <a>Integer</a> greater than or
-  equal to 0 and less than or equal to 359 return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
+     <li><p>Set the <code>tiltY</code> property of <var>action</var>
+      to 0.
 
- <li><p>Set the <code>twist</code> property of <var>action</var>
-  to <var>twist</var>.
+     <li><p>Set the <code>twist</code> property of <var>action</var>
+      to 0.
 
- <li><p>Let <var>altitudeAngle</var> be the result
-  of getting the property <code>altitudeAngle</code>
-  from <var>action item</var>.
+     <li><p>Set the <code>altitudeAngle</code> property of <var>action</var>
+      to π/2.
 
- <li><p>If <var>altitudeAngle</var> is not <a>undefined</a>
-  and <var>altitudeAngle</var> is not a <a>Number</a> greater than
-  or equal to 0 and less than or equal to π/2 return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
-
- <li><p>Set the <code>altitudeAngle</code> property of <var>action</var>
-  to <var>altitudeAngle</var>.
-
- <li><p>Let <var>azimuthAngle</var> be the result
-  of getting the property <code>azimuthAngle</code>
-  from <var>action item</var>.
+     <li><p>Set the <code>azimuthAngle</code> property of <var>action</var>
+      to 0.
+    </ol>
 
- <li><p>If <var>azimuthAngle</var> is not <a>undefined</a>
-  and <var>azimuthAngle</var> is not a <a>Number</a> greater than
-  or equal to 0 and less than or equal to 2π return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
+    <dt>"<code>touch</code>"
+    <dd>
+     <ol>
+      <li><p>Set the <code>button</code> property of <var>action</var>
+       to 0.
+ 
+      <li><p>Let <var>width</var> be the result
+       of getting the property <code>width</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>width</var> is not <a>undefined</a>
+       and <var>width</var> is not a <a>Number</a> greater than or
+       equal to 0 return <a>error</a> with <a>error code</a>
+       <a>invalid argument</a>.
+     
+      <li><p>Set the <code>width</code> property of <var>action</var>
+       to <var>width</var>.
+     
+      <li><p>Let <var>height</var> be the result
+       of getting the property <code>height</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>height</var> is not <a>undefined</a>
+       and <var>height</var> is not a <a>Number</a> greater than or
+       equal to 0 return <a>error</a> with <a>error code</a>
+       <a>invalid argument</a>.
+     
+      <li><p>Set the <code>height</code> property of <var>action</var>
+       to <var>height</var>.
+ 
+      <li><p>Let <var>pressure</var> be the result
+       of getting the property <code>pressure</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>pressure</var> is not <a>undefined</a>
+       and <var>pressure</var> is not a <a>Number</a> greater than or
+       equal to 0 and less than or equal to 1 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>pressure</code> property of <var>action</var>
+       to <var>pressure</var>.
+ 
+      <li><p>Set the <code>tangentialPressure</code> property of <var>action</var>
+       to 0.
+ 
+      <li><p>Set the <code>tiltX</code> property of <var>action</var>
+       to 90.
+ 
+      <li><p>Set the <code>tiltY</code> property of <var>action</var>
+       to 0.
+ 
+      <li><p>Set the <code>twist</code> property of <var>action</var>
+       to 0.
+ 
+      <li><p>Set the <code>altitudeAngle</code> property of <var>action</var>
+       to 0.
+ 
+      <li><p>Set the <code>azimuthAngle</code> property of <var>action</var>
+       to 0.
+     </ol>
 
- <li><p>Set the <code>azimuthAngle</code> property of <var>action</var>
-  to <var>azimuthAngle</var>.
+    <dt>"<code>pen</code>"
+    <dd>
+     <ol>
+      <li><p>Let <var>button</var> be the result
+       of getting the property <code>button</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>button</var> is not an <a>Integer</a> greater than or
+       equal to 0 return <a>error</a> with <a>error code</a>
+       <a>invalid argument</a>.
+     
+      <li><p>Set the <code>button</code> property of <var>action</var>
+       to <var>button</var>.
+      
+      <li><p>Let <var>width</var> be the result
+       of getting the property <code>width</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>width</var> is not <a>undefined</a>
+       and <var>width</var> is not a <a>Number</a> greater than or
+       equal to 0 return <a>error</a> with <a>error code</a>
+       <a>invalid argument</a>.
+     
+      <li><p>Set the <code>width</code> property of <var>action</var>
+       to <var>width</var>.
+     
+      <li><p>Let <var>height</var> be the result
+       of getting the property <code>height</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>height</var> is not <a>undefined</a>
+       and <var>height</var> is not a <a>Number</a> greater than or
+       equal to 0 return <a>error</a> with <a>error code</a>
+       <a>invalid argument</a>.
+     
+      <li><p>Set the <code>height</code> property of <var>action</var>
+       to <var>height</var>.
+     
+      <li><p>Let <var>pressure</var> be the result
+       of getting the property <code>pressure</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>pressure</var> is not <a>undefined</a>
+       and <var>pressure</var> is not a <a>Number</a> greater than or
+       equal to 0 and less than or equal to 1 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>pressure</code> property of <var>action</var>
+       to <var>pressure</var>.
+     
+      <li><p>Let <var>tangentialPressure</var> be the result
+       of getting the property <code>tangentialPressure</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>tangentialPressure</var> is not <a>undefined</a>
+       and <var>tangentialPressure</var> is not a <a>Number</a> greater
+       than or equal to -1 and less than or equal to 1 return <a>error</a>
+       with <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>tangentialPressure</code> property of <var>action</var>
+       to <var>tangentialPressure</var>.
+     
+      <li><p>Let <var>tiltX</var> be the result
+       of getting the property <code>tiltX</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>tiltX</var> is not <a>undefined</a>
+       and <var>tiltX</var> is not an <a>Integer</a> greater than or
+       equal to -90 and less than or equal to 90 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>tiltX</code> property of <var>action</var>
+       to <var>tiltX</var>.
+     
+      <li><p>Let <var>tiltY</var> be the result
+       of getting the property <code>tiltY</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>tiltY</var> is not <a>undefined</a>
+       and <var>tiltY</var> is not an <a>Integer</a> greater than or
+       equal to -90 and less than or equal to 90 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>tiltY</code> property of <var>action</var>
+       to <var>tiltY</var>.
+     
+      <li><p>Let <var>twist</var> be the result
+       of getting the property <code>twist</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>twist</var> is not <a>undefined</a>
+       and <var>twist</var> is not an <a>Integer</a> greater than or
+       equal to 0 and less than or equal to 359 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>twist</code> property of <var>action</var>
+       to <var>twist</var>.
+     
+      <li><p>Let <var>altitudeAngle</var> be the result
+       of getting the property <code>altitudeAngle</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>altitudeAngle</var> is not <a>undefined</a>
+       and <var>altitudeAngle</var> is not a <a>Number</a> greater than
+       or equal to 0 and less than or equal to π/2 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>altitudeAngle</code> property of <var>action</var>
+       to <var>altitudeAngle</var>.
+     
+      <li><p>Let <var>azimuthAngle</var> be the result
+       of getting the property <code>azimuthAngle</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>azimuthAngle</var> is not <a>undefined</a>
+       and <var>azimuthAngle</var> is not a <a>Number</a> greater than
+       or equal to 0 and less than or equal to 2π return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>azimuthAngle</code> property of <var>action</var>
+       to <var>azimuthAngle</var>.
+     </ol>
+  </dl>
 
  <li><p>Return success with data <a><code>null</code></a>.
 </ol>
@@ -8555,113 +8671,240 @@ <h3>Processing actions</h3>
  <li><p>Set the <code>y</code> property of <var>action</var>
   to <var>y</var>.
 
- <li><p>Let <var>width</var> be the result
-  of getting the property <code>width</code>
-  from <var>action item</var>.
-
- <li><p>If <var>width</var> is not <a>undefined</a>
-  and <var>width</var> is not a <a>Number</a> greater than or
-  equal to 0 return <a>error</a> with <a>error code</a>
-  <a>invalid argument</a>.
-
- <li><p>Set the <code>width</code> property of <var>action</var>
-  to <var>width</var>.
-
- <li><p>Let <var>height</var> be the result
-  of getting the property <code>height</code>
-  from <var>action item</var>.
-
- <li><p>If <var>height</var> is not <a>undefined</a>
-  and <var>height</var> is not a <a>Number</a> greater than or
-  equal to 0 return <a>error</a> with <a>error code</a>
-  <a>invalid argument</a>.
-
- <li><p>Set the <code>height</code> property of <var>action</var>
-  to <var>height</var>.
-
- <li><p>Let <var>pressure</var> be the result
-  of getting the property <code>pressure</code>
-  from <var>action item</var>.
-
- <li><p>If <var>pressure</var> is not <a>undefined</a>
-  and <var>pressure</var> is not a <a>Number</a> greater than or
-  equal to 0 and less than or equal to 1 return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
-
- <li><p>Set the <code>pressure</code> property of <var>action</var>
-  to <var>pressure</var>.
-
- <li><p>Let <var>tangentialPressure</var> be the result
-  of getting the property <code>tangentialPressure</code>
-  from <var>action item</var>.
-
- <li><p>If <var>tangentialPressure</var> is not <a>undefined</a>
-  and <var>tangentialPressure</var> is not a <a>Number</a> greater
-  than or equal to -1 and less than or equal to 1 return <a>error</a>
-  with <a>error code</a> <a>invalid argument</a>.
-
- <li><p>Set the <code>tangentialPressure</code> property of <var>action</var>
-  to <var>tangentialPressure</var>.
-
- <li><p>Let <var>tiltX</var> be the result
-  of getting the property <code>tiltX</code>
-  from <var>action item</var>.
-
- <li><p>If <var>tiltX</var> is not <a>undefined</a>
-  and <var>tiltX</var> is not an <a>Integer</a> greater than or
-  equal to -90 and less than or equal to 90 return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
-
- <li><p>Set the <code>tiltX</code> property of <var>action</var>
-  to <var>tiltX</var>.
+ <li><p>Let <var>pointerType</var> be equal to
+  <var>action</var>’s <code>pointerType</code> property.
+  
+ <li><p>Run the substeps of the first matching value of <var>pointerType</var>
 
- <li><p>Let <var>tiltY</var> be the result
-  of getting the property <code>tiltY</code>
-  from <var>action item</var>.
+  <dl class=switch>
+   <dt>"<code>mouse</code>"
+   <dd>
+    <ol>
+     <li><p>Let <var>button</var> be the result
+      of getting the property <code>button</code>
+      from <var>action item</var>.
+    
+     <li><p>If <var>button</var> is not an <a>Integer</a> greater than or
+      equal to 0 return <a>error</a> with <a>error code</a>
+      <a>invalid argument</a>.
+    
+     <li><p>Set the <code>button</code> property of <var>action</var>
+      to <var>button</var>.
 
- <li><p>If <var>tiltY</var> is not <a>undefined</a>
-  and <var>tiltY</var> is not an <a>Integer</a> greater than or
-  equal to -90 and less than or equal to 90 return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
+     <li><p>Set the <code>width</code> property of <var>action</var>
+      to 1.
 
- <li><p>Set the <code>tiltY</code> property of <var>action</var>
-  to <var>tiltY</var>.
+     <li><p>Set the <code>height</code> property of <var>action</var>
+      to 1.
+     
+     <li><p>If <var>action</var>'s <code>subtype</code> property is
+      "<code>pointerDown</code>", set the <code>pressure</code> property of
+      <var>action</var> to 0.5. Otherwise, set the <code>pressure</code> property of
+      <var>action</var> to 0.
 
- <li><p>Let <var>twist</var> be the result
-  of getting the property <code>twist</code>
-  from <var>action item</var>.
+     <li><p>Set the <code>tangentialPressure</code> property of <var>action</var>
+      to 0.
 
- <li><p>If <var>twist</var> is not <a>undefined</a>
-  and <var>twist</var> is not an <a>Integer</a> greater than or
-  equal to 0 and less than or equal to 359 return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
+     <li><p>Set the <code>tiltX</code> property of <var>action</var>
+      to 0.
 
- <li><p>Set the <code>twist</code> property of <var>action</var>
-  to <var>twist</var>.
+     <li><p>Set the <code>tiltY</code> property of <var>action</var>
+      to 0.
 
- <li><p>Let <var>altitudeAngle</var> be the result
-  of getting the property <code>altitudeAngle</code>
-  from <var>action item</var>.
+     <li><p>Set the <code>twist</code> property of <var>action</var>
+      to 0.
 
- <li><p>If <var>altitudeAngle</var> is not <a>undefined</a>
-  and <var>altitudeAngle</var> is not a <a>Number</a> greater than
-  or equal to 0 and less than or equal to π/2 return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
+     <li><p>Set the <code>altitudeAngle</code> property of <var>action</var>
+      to π/2.
 
- <li><p>Set the <code>altitudeAngle</code> property of <var>action</var>
-  to <var>altitudeAngle</var>.
-
- <li><p>Let <var>azimuthAngle</var> be the result
-  of getting the property <code>azimuthAngle</code>
-  from <var>action item</var>.
+     <li><p>Set the <code>azimuthAngle</code> property of <var>action</var>
+      to 0.
+    </ol>
 
- <li><p>If <var>azimuthAngle</var> is not <a>undefined</a>
-  and <var>azimuthAngle</var> is not a <a>Number</a> greater than
-  or equal to 0 and less than or equal to 2π return <a>error</a> with
-  <a>error code</a> <a>invalid argument</a>.
+    <dt>"<code>touch</code>"
+    <dd>
+     <ol>
+      <li><p>Set the <code>button</code> property of <var>action</var>
+       to 0.
+ 
+      <li><p>Let <var>width</var> be the result
+       of getting the property <code>width</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>width</var> is not <a>undefined</a>
+       and <var>width</var> is not a <a>Number</a> greater than or
+       equal to 0 return <a>error</a> with <a>error code</a>
+       <a>invalid argument</a>.
+     
+      <li><p>Set the <code>width</code> property of <var>action</var>
+       to <var>width</var>.
+     
+      <li><p>Let <var>height</var> be the result
+       of getting the property <code>height</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>height</var> is not <a>undefined</a>
+       and <var>height</var> is not a <a>Number</a> greater than or
+       equal to 0 return <a>error</a> with <a>error code</a>
+       <a>invalid argument</a>.
+     
+      <li><p>Set the <code>height</code> property of <var>action</var>
+       to <var>height</var>.
+ 
+      <li><p>Let <var>pressure</var> be the result
+       of getting the property <code>pressure</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>pressure</var> is not <a>undefined</a>
+       and <var>pressure</var> is not a <a>Number</a> greater than or
+       equal to 0 and less than or equal to 1 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>pressure</code> property of <var>action</var>
+       to <var>pressure</var>.
+ 
+      <li><p>Set the <code>tangentialPressure</code> property of <var>action</var>
+       to 0.
+ 
+      <li><p>Set the <code>tiltX</code> property of <var>action</var>
+       to 90.
+ 
+      <li><p>Set the <code>tiltY</code> property of <var>action</var>
+       to 0.
+ 
+      <li><p>Set the <code>twist</code> property of <var>action</var>
+       to 0.
+ 
+      <li><p>Set the <code>altitudeAngle</code> property of <var>action</var>
+       to 0.
+ 
+      <li><p>Set the <code>azimuthAngle</code> property of <var>action</var>
+       to 0.
+     </ol>
 
- <li><p>Set the <code>azimuthAngle</code> property of <var>action</var>
-  to <var>azimuthAngle</var>.
+    <dt>"<code>pen</code>"
+    <dd>
+     <ol>
+      <li><p>Let <var>button</var> be the result
+       of getting the property <code>button</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>button</var> is not an <a>Integer</a> greater than or
+       equal to 0 return <a>error</a> with <a>error code</a>
+       <a>invalid argument</a>.
+     
+      <li><p>Set the <code>button</code> property of <var>action</var>
+       to <var>button</var>.
+      
+      <li><p>Let <var>width</var> be the result
+       of getting the property <code>width</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>width</var> is not <a>undefined</a>
+       and <var>width</var> is not a <a>Number</a> greater than or
+       equal to 0 return <a>error</a> with <a>error code</a>
+       <a>invalid argument</a>.
+     
+      <li><p>Set the <code>width</code> property of <var>action</var>
+       to <var>width</var>.
+     
+      <li><p>Let <var>height</var> be the result
+       of getting the property <code>height</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>height</var> is not <a>undefined</a>
+       and <var>height</var> is not a <a>Number</a> greater than or
+       equal to 0 return <a>error</a> with <a>error code</a>
+       <a>invalid argument</a>.
+     
+      <li><p>Set the <code>height</code> property of <var>action</var>
+       to <var>height</var>.
+     
+      <li><p>Let <var>pressure</var> be the result
+       of getting the property <code>pressure</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>pressure</var> is not <a>undefined</a>
+       and <var>pressure</var> is not a <a>Number</a> greater than or
+       equal to 0 and less than or equal to 1 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>pressure</code> property of <var>action</var>
+       to <var>pressure</var>.
+     
+      <li><p>Let <var>tangentialPressure</var> be the result
+       of getting the property <code>tangentialPressure</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>tangentialPressure</var> is not <a>undefined</a>
+       and <var>tangentialPressure</var> is not a <a>Number</a> greater
+       than or equal to -1 and less than or equal to 1 return <a>error</a>
+       with <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>tangentialPressure</code> property of <var>action</var>
+       to <var>tangentialPressure</var>.
+     
+      <li><p>Let <var>tiltX</var> be the result
+       of getting the property <code>tiltX</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>tiltX</var> is not <a>undefined</a>
+       and <var>tiltX</var> is not an <a>Integer</a> greater than or
+       equal to -90 and less than or equal to 90 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>tiltX</code> property of <var>action</var>
+       to <var>tiltX</var>.
+     
+      <li><p>Let <var>tiltY</var> be the result
+       of getting the property <code>tiltY</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>tiltY</var> is not <a>undefined</a>
+       and <var>tiltY</var> is not an <a>Integer</a> greater than or
+       equal to -90 and less than or equal to 90 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>tiltY</code> property of <var>action</var>
+       to <var>tiltY</var>.
+     
+      <li><p>Let <var>twist</var> be the result
+       of getting the property <code>twist</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>twist</var> is not <a>undefined</a>
+       and <var>twist</var> is not an <a>Integer</a> greater than or
+       equal to 0 and less than or equal to 359 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>twist</code> property of <var>action</var>
+       to <var>twist</var>.
+     
+      <li><p>Let <var>altitudeAngle</var> be the result
+       of getting the property <code>altitudeAngle</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>altitudeAngle</var> is not <a>undefined</a>
+       and <var>altitudeAngle</var> is not a <a>Number</a> greater than
+       or equal to 0 and less than or equal to π/2 return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>altitudeAngle</code> property of <var>action</var>
+       to <var>altitudeAngle</var>.
+     
+      <li><p>Let <var>azimuthAngle</var> be the result
+       of getting the property <code>azimuthAngle</code>
+       from <var>action item</var>.
+     
+      <li><p>If <var>azimuthAngle</var> is not <a>undefined</a>
+       and <var>azimuthAngle</var> is not a <a>Number</a> greater than
+       or equal to 0 and less than or equal to 2π return <a>error</a> with
+       <a>error code</a> <a>invalid argument</a>.
+     
+      <li><p>Set the <code>azimuthAngle</code> property of <var>action</var>
+       to <var>azimuthAngle</var>.
+     </ol>
+  </dl>
 
  <li><p>Return success with data <a><code>null</code></a>.
 </ol>