Bug 1337830 - [DateTimeInput] Home/End keys should have no effect on year field. r?mossop draft
authorJessica Jong <jjong@mozilla.com>
Fri, 19 May 2017 14:55:39 +0800
changeset 580990 6b0dd1324fab3ef0e4a8e8eb90f7cc76d1021e72
parent 580912 8e98dab5054dd093a37ba20c62cf0523e484cfbd
child 629458 f8575f25fc875c18743ad87b014c6eb38d454dad
push id59741
push userjjong@mozilla.com
push dateFri, 19 May 2017 06:56:02 +0000
reviewersmossop
bugs1337830
milestone55.0a1
Bug 1337830 - [DateTimeInput] Home/End keys should have no effect on year field. r?mossop MozReview-Commit-ID: LjYetlucSnT
dom/html/test/forms/test_input_date_key_events.html
toolkit/content/widgets/datetimebox.xml
--- a/dom/html/test/forms/test_input_date_key_events.html
+++ b/dom/html/test/forms/test_input_date_key_events.html
@@ -179,26 +179,26 @@ var testData = [
   },
   {
     // End key on day field sets it to the maximum day, which is 31.
     keys: ["VK_TAB", "VK_END"],
     initialVal: "2016-01-10",
     expectedVal: "2016-01-31"
   },
   {
-    // Home key on year field sets it to the minimum year, which is 0001.
+    // Home key should have no effect on year field.
     keys: ["VK_TAB", "VK_TAB", "VK_HOME"],
     initialVal: "2016-01-01",
-    expectedVal: "0001-01-01"
+    expectedVal: "2016-01-01"
   },
   {
-    // End key on year field sets it to the maximum year, which is 275760.
+    // End key should have no effect on year field.
     keys: ["VK_TAB", "VK_TAB", "VK_END"],
     initialVal: "2016-01-01",
-    expectedVal: "275760-01-01"
+    expectedVal: "2016-01-01"
   },
 ];
 
 function sendKeys(aKeys) {
   for (let i = 0; i < aKeys.length; i++) {
     let key = aKeys[i];
     if (key.startsWith("VK")) {
       synthesizeKey(key, {});
--- a/toolkit/content/widgets/datetimebox.xml
+++ b/toolkit/content/widgets/datetimebox.xml
@@ -323,16 +323,22 @@
         <![CDATA[
           if (this.isDisabled() || this.isReadonly()) {
             return;
           }
 
           let targetField = aEvent.originalTarget;
           let key = aEvent.key;
 
+          // Home/End key does nothing on year field.
+          if (targetField == this.mYearField && (key == "Home" ||
+                                                 key == "End")) {
+            return;
+          }
+
           switch (key) {
             case "ArrowUp":
               this.incrementFieldValue(targetField, 1);
               break;
             case "ArrowDown":
               this.incrementFieldValue(targetField, -1);
               break;
             case "PageUp": {