Bug 1333008 - Don't toggle play or pause when button is focused. r=jaws draft
authorRay Lin <ralin@mozilla.com>
Thu, 16 Feb 2017 14:19:32 +0800
changeset 485919 9fbb2e9b419454ff0024b3383bb3ef4c88ce88ad
parent 485258 2737f66ad6ac74a688bde788b319122f2001b92b
child 546147 30a5a8a66e29735dc0a47a38cbd76bf14a7cc534
push id45876
push userbmo:ralin@mozilla.com
push dateFri, 17 Feb 2017 09:54:10 +0000
reviewersjaws
bugs1333008
milestone54.0a1
Bug 1333008 - Don't toggle play or pause when button is focused. r=jaws MozReview-Commit-ID: 2tyQUOOMQgH
toolkit/content/tests/widgets/test_videocontrols.html
toolkit/content/widgets/videocontrols.xml
--- a/toolkit/content/tests/widgets/test_videocontrols.html
+++ b/toolkit/content/tests/widgets/test_videocontrols.html
@@ -368,20 +368,38 @@ function runTest(event) {
       });
       break;
 
     case 26:
       is(event.type, "volumechange", "checking event type");
       is(video.volume, 0.5, "Volume should be decreased by 0.1");
       SimpleTest.executeSoon(function() {
         isVolumeSliderShowingCorrectVolume(video.volume);
+        synthesizeMouse(video, playButtonCenterX, playButtonCenterY, { });
+      });
+      break;
+
+    case 27:
+      is(event.type, "play", "checking event type");
+
+      SimpleTest.executeSoon(() => {
+        synthesizeKey(" ", {});
+      });
+      break;
+
+    case 28:
+      is(event.type, "pause", "checking event type");
+
+      SimpleTest.executeSoon(() => {
         SimpleTest.finish();
       });
       break;
 
+
+
     default:
       throw "unexpected test #" + testnum + " w/ event " + event.type;
   }
 
   testnum++;
 }
 
 
--- a/toolkit/content/widgets/videocontrols.xml
+++ b/toolkit/content/widgets/videocontrols.xml
@@ -1348,16 +1348,21 @@
         }
 
         this.log("Got keystroke: " + keystroke);
         var oldval, newval;
 
         try {
           switch (keystroke) {
             case "space": /* Play */
+              let target = event.originalTarget;
+              if (target.localName === "button" && !target.disabled) {
+                break;
+              }
+
               this.togglePause();
               break;
             case "downArrow": /* Volume decrease */
               oldval = this.video.volume;
               this.video.volume = (oldval < 0.1 ? 0 : oldval - 0.1);
               this.video.muted = false;
               break;
             case "upArrow": /* Volume increase */