WebAPI/BrowserAPI/KeyboardEvent: Difference between revisions

Update follow up bugs
(Update follow up bugs)
 
(5 intermediate revisions by 3 users not shown)
Line 25: Line 25:
Four new events are proposed:
Four new events are proposed:
* mozbrowserbeforekeydown
* mozbrowserbeforekeydown
* mozbrowserkeydown
* mozbrowserafterkeydown
* mozbrowserbeforekeyup
* mozbrowserbeforekeyup
* mozbrowserkeyup
* mozbrowserafterkeyup




Line 33: Line 33:
# 'mozbrowserbeforekeydown' is dispatched to mozbrowser-embedder iframe
# 'mozbrowserbeforekeydown' is dispatched to mozbrowser-embedder iframe
# 'keydown' is dispatched to mozbrowser-embedded iframe
# 'keydown' is dispatched to mozbrowser-embedded iframe
# 'mozbrowserkeydown' is dispatched to mozbrowser-embedder iframe
# 'mozbrowserafterkeydown' is dispatched to mozbrowser-embedder iframe




Line 39: Line 39:
# 'mozbrowserbeforekeyup' is dispatched to mozbrowser-embedder iframe
# 'mozbrowserbeforekeyup' is dispatched to mozbrowser-embedder iframe
# 'keyup' is dispatched to mozbrowser-embedded iframe
# 'keyup' is dispatched to mozbrowser-embedded iframe
# 'mozbrowserkeyup' is dispatched to mozbrowser-embedder iframe
# 'mozbrowserafterkeyup' is dispatched to mozbrowser-embedder iframe


==== Nested mozbrowser iframes case ====
==== Nested mozbrowser iframes case ====
Line 71: Line 71:
     window.addEventListener('mozbrowserbeforekeydown', handleEventAndPreventDefault);
     window.addEventListener('mozbrowserbeforekeydown', handleEventAndPreventDefault);
     window.addEventListener('mozbrowserbeforekeyup', handleEventAndPreventDefault);
     window.addEventListener('mozbrowserbeforekeyup', handleEventAndPreventDefault);
     window.addEventListener('mozbrowserkeydown', function() { });
     window.addEventListener('mozbrowserafterkeydown', function() { });
     window.addEventListener('mozbrowserkeyup', function() { });
     window.addEventListener('mozbrowserafterkeyup', function() { });
* mozbrowser-embedded iframe
* mozbrowser-embedded iframe
     window.addEventListener('keydown', handleEvent);
     window.addEventListener('keydown', handleEvent);
Line 82: Line 82:
  | 1 || mozbrowserbeforekeydown || || Receive event 'mozbrowserbeforekeydown'.
  | 1 || mozbrowserbeforekeydown || || Receive event 'mozbrowserbeforekeydown'.
  |-
  |-
  | 2 || mozbrowserkeydown || ||
  | 2 || mozbrowserafterkeydown || ||
  |-
  |-
  | 3 || mozbrowserbeforekeyup || || Receive event 'mozbrowserbeforekeyup'.
  | 3 || mozbrowserbeforekeyup || || Receive event 'mozbrowserbeforekeyup'.
  |-
  |-
  | 4 || mozbrowserkeyup || ||
  | 4 || mozbrowserafterkeyup || ||
  |}
  |}


Line 93: Line 93:
     window.addEventListener('mozbrowserbeforekeydown', handleEvent);
     window.addEventListener('mozbrowserbeforekeydown', handleEvent);
     window.addEventListener('mozbrowserbeforekeyup', handleEvent);
     window.addEventListener('mozbrowserbeforekeyup', handleEvent);
     window.addEventListener('mozbrowserkeydown', function() { });
     window.addEventListener('mozbrowserafterkeydown', function() { });
     window.addEventListener('mozbrowserkeyup', function() { });
     window.addEventListener('mozbrowserafterkeyup', function() { });
* mozbrowser-embedded iframe
* mozbrowser-embedded iframe
     window.addEventListener('keydown', handleEvent);
     window.addEventListener('keydown', handleEvent);
Line 106: Line 106:
  | 2 || || keydown || Receive event 'keydown'.
  | 2 || || keydown || Receive event 'keydown'.
  |-
  |-
  | 3 || mozbrowserkeydown || ||
  | 3 || mozbrowserafterkeydown || ||
  |-
  |-
  | 4 || mozbrowserbeforekeyup || || Receive event 'mozbrowserbeforekeyup'.
  | 4 || mozbrowserbeforekeyup || || Receive event 'mozbrowserbeforekeyup'.
Line 112: Line 112:
  | 5 || || keyup || Receive event 'keyup'.
  | 5 || || keyup || Receive event 'keyup'.
  |-
  |-
  | 6 || mozbrowserkeyup || ||
  | 6 || mozbrowserafterkeyup || ||
  |}
  |}


Line 119: Line 119:
     window.addEventListener('mozbrowserbeforekeydown', function() { });
     window.addEventListener('mozbrowserbeforekeydown', function() { });
     window.addEventListener('mozbrowserbeforekeyup', function() { });
     window.addEventListener('mozbrowserbeforekeyup', function() { });
     window.addEventListener('mozbrowserkeydown', checkAttrAndHandleEvent);
     window.addEventListener('mozbrowserafterkeydown', checkAttrAndHandleEvent);
     window.addEventListener('mozbrowserkeyup', checkAttrAndHandleEvent);
     window.addEventListener('mozbrowserafterkeyup', checkAttrAndHandleEvent);
* mozbrowser-embedded iframe
* mozbrowser-embedded iframe
     window.addEventListener('keydown', handleEventAndPreventDefault);
     window.addEventListener('keydown', handleEventAndPreventDefault);
Line 132: Line 132:
  | 2 || || keydown || Receive event 'keydown'.
  | 2 || || keydown || Receive event 'keydown'.
  |-
  |-
  | 3 || mozbrowserkeydown || || Receive event 'mozbrowserkeydown' with embeddedCancelled equals to 'true'.
  | 3 || mozbrowserafterkeydown || || Receive event 'mozbrowserafterkeydown' with embeddedCancelled equals to 'true'.
  |-
  |-
  | 4 || mozbrowserbeforekeyup || ||
  | 4 || mozbrowserbeforekeyup || ||
Line 138: Line 138:
  | 5 || || keyup || Receive event 'keyup'.
  | 5 || || keyup || Receive event 'keyup'.
  |-
  |-
  | 6 || mozbrowserup || || Receive event 'mozbrowserkeyup' with embeddedCancelled equals to 'true'.
  | 6 || mozbrowserup || || Receive event 'mozbrowserafterkeyup' with embeddedCancelled equals to 'true'.
  |}
  |}


Line 145: Line 145:
     window.addEventListener('mozbrowserbeforekeydown', function() { });
     window.addEventListener('mozbrowserbeforekeydown', function() { });
     window.addEventListener('mozbrowserbeforekeyup', function() { });
     window.addEventListener('mozbrowserbeforekeyup', function() { });
     window.addEventListener('mozbrowserkeydown', checkAttrAndHandleEvent);
     window.addEventListener('mozbrowserafterkeydown', checkAttrAndHandleEvent);
     window.addEventListener('mozbrowserkeyup', checkAttrAndHandleEvent);
     window.addEventListener('mozbrowserafterkeyup', checkAttrAndHandleEvent);
* mozbrowser-embedded iframe
* mozbrowser-embedded iframe
     window.addEventListener('keydown', handleEvent);
     window.addEventListener('keydown', handleEvent);
Line 158: Line 158:
  | 2 || || keydown || Receive event 'keydown'.
  | 2 || || keydown || Receive event 'keydown'.
  |-
  |-
  | 3 || mozbrowserkeydown || || Receive event 'mozbrowserkeyup' with embeddedCancelled equals to 'false'.
  | 3 || mozbrowserafterkeydown || || Receive event 'mozbrowserafterkeyup' with embeddedCancelled equals to 'false'.
  |-
  |-
  | 4 || mozbrowserbeforekeyup || ||
  | 4 || mozbrowserbeforekeyup || ||
Line 164: Line 164:
  | 5 || || keyup || Receive event 'keyup'.
  | 5 || || keyup || Receive event 'keyup'.
  |-
  |-
  | 6 || mozbrowserkeyup || || Receive event 'mozbrowserkeyup' with embeddedCancelled equals to 'false'.
  | 6 || mozbrowserafterkeyup || || Receive event 'mozbrowserafterkeyup' with embeddedCancelled equals to 'false'.
  |}
  |}


Line 213: Line 213:
|-
|-
! Default action
! Default action
| Set mozbrowserkeydown.embeddedCancelled to false; others defined in http://www.w3.org/TR/DOM-Level-3-Events/#event-type-keydown
| Set mozbrowserafterkeydown.embeddedCancelled to false; others defined in http://www.w3.org/TR/DOM-Level-3-Events/#event-type-keydown
|}
|}


==== mozbrowserkeydown ====
==== mozbrowserafterkeydown ====
{| border="1"
{| border="1"
! Type
! Type
Line 285: Line 285:
|-
|-
! Default action
! Default action
| Set mozbrowserkeyup.embeddedCancelled to false; others defined in http://www.w3.org/TR/DOM-Level-3-Events/#event-type-keyup
| Set mozbrowserafterkeyup.embeddedCancelled to false; others defined in http://www.w3.org/TR/DOM-Level-3-Events/#event-type-keyup
|}
|}


==== mozbrowserkeyup ====
==== mozbrowserafterkeyup ====
{| border="1"
{| border="1"
! Type
! Type
| mozbrowserkeyup
| mozbrowserafterkeyup
|-
|-
! Interface
! Interface
Line 311: Line 311:
| None
| None
|}
|}


== Related Gaia Changes ==
== Related Gaia Changes ==
Line 349: Line 348:
# System app should decide how to handle key event when inner iframe did not handle it
# System app should decide how to handle key event when inner iframe did not handle it


Build time customization detail will be discussed later. Default Policy in System App for 'Power', 'Exit', 'VolumeUp', 'VolumeDown':
{| class="wikitable"
|-
! Key  !! Default Policy
|-
| Power || SYSTEM-ONLY
|-
| Exit || SYSTEM-ONLY
|-
| VolumeUp || APP-CANCELLED
|-
| VolumeDown || APP-CANCELLED
|}


Here are two possible way to do it (TBD)
Default Policy for other keys are APP-CANCELLED.
# Build time customization - generate json configuration file at build time, and read it at start-up time
# Run time customization - settings value?
# Build time + run time


There is one more thing to do in this part. We only handle 'Power', 'Exit', 'VolumeUp', 'VolumDown' in part 1. But there will be more 'keys' need to be handled. We'll have to create a key mapping and handling table with customization in this part.
There is one more thing to do in this part. We only handle 'Power', 'Exit', 'VolumeUp', 'VolumDown' in part 1. But there will be more 'keys' need to be handled. We'll have to create a key mapping and handling table with customization in this part.
Line 365: Line 374:


https://bugzilla.mozilla.org/show_bug.cgi?id=1014418
https://bugzilla.mozilla.org/show_bug.cgi?id=1014418
https://bugzilla.mozilla.org/show_bug.cgi?id=1103339
https://bugzilla.mozilla.org/show_bug.cgi?id=1094066
[[Category:Web APIs]]
Confirmed users
23

edits