]> source.dussan.org Git - jquery.git/commitdiff
Don't execute focus tests in Firefox
authorOleg <markelog@gmail.com>
Thu, 7 Nov 2013 21:32:12 +0000 (22:32 +0100)
committerOleg <markelog@gmail.com>
Fri, 8 Nov 2013 15:07:26 +0000 (16:07 +0100)
Cherry picked from 45be91e3981164e076a71de31f0b8a972a4bf104 commit

test/unit/event.js

index d81551da94edb84e4128a546361f5377bb474d63..b099ef2b9fa448ab0dba56f6a1854e4c81d68094 100644 (file)
@@ -2419,51 +2419,6 @@ test("checkbox state (#3827)", function() {
        jQuery( cb ).triggerHandler( "click" );
 });
 
-test("focus-blur order (#12868)", function() {
-       expect( 5 );
-
-       var order,
-               $text = jQuery("#text1"),
-               $radio = jQuery("#radio1").trigger("focus");
-
-       // IE6-10 fire focus/blur events asynchronously; this is the resulting mess.
-       // IE's browser window must be topmost for this to work properly!!
-       stop();
-       $radio[0].focus();
-
-       setTimeout( function() {
-
-               $text
-                       .on( "focus", function(){
-                               equal( order++, 1, "text focus" );
-                       })
-                       .on( "blur", function(){
-                               equal( order++, 0, "text blur" );
-                       });
-               $radio
-                       .on( "focus", function(){
-                               equal( order++, 1, "radio focus" );
-                       })
-                       .on( "blur", function(){
-                               equal( order++, 0, "radio blur" );
-                       });
-
-               // Enabled input getting focus
-               order = 0;
-               equal( document.activeElement, $radio[0], "radio has focus" );
-               $text.trigger("focus");
-               setTimeout( function() {
-                       equal( document.activeElement, $text[0], "text has focus" );
-
-                       // Run handlers without native method on an input
-                       order = 1;
-                       $radio.triggerHandler( "focus" );
-                       $text.off();
-                       start();
-               }, 50 );
-       }, 50 );
-});
-
 test("hover event no longer special since 1.9", function() {
        expect( 1 );
 
@@ -2645,33 +2600,6 @@ test( "make sure events cloned correctly", 18, function() {
        clone.find("#check1").trigger("change"); // 0 events should fire
 });
 
-test( "Check order of focusin/focusout events", 2, function() {
-       var focus, blur,
-               input = jQuery( "#name" );
-
-       input.on( "focus", function() {
-               focus = true;
-
-       }).on( "focusin", function() {
-               ok( !focus, "Focusin event should fire before focus does" );
-
-       }).on( "blur", function() {
-               blur = true;
-
-       }).on( "focusout", function() {
-               ok( !blur, "Focusout event should fire before blur does" );
-       });
-
-       // gain focus
-       input.trigger( "focus" );
-
-       // then lose it
-       jQuery( "#search" ).trigger( "focus" );
-
-       // cleanup
-       input.off();
-});
-
 test( "String.prototype.namespace does not cause trigger() to throw (#13360)", function() {
        expect( 1 );
        var errored = false;
@@ -2694,3 +2622,78 @@ test( "Inline event result is returned (#13993)", function() {
 
        equal( result, 42, "inline handler returned value" );
 });
+
+// This tests are unreliable in Firefox
+if ( !(/firefox/i.test( window.navigator.userAgent )) ) {
+       test( "Check order of focusin/focusout events", 2, function() {
+               var focus, blur,
+                       input = jQuery( "#name" );
+
+               input.on( "focus", function() {
+                       focus = true;
+
+               }).on( "focusin", function() {
+                       ok( !focus, "Focusin event should fire before focus does" );
+
+               }).on( "blur", function() {
+                       blur = true;
+
+               }).on( "focusout", function() {
+                       ok( !blur, "Focusout event should fire before blur does" );
+               });
+
+               // gain focus
+               input.trigger( "focus" );
+
+               // then lose it
+               jQuery( "#search" ).trigger( "focus" );
+
+               // cleanup
+               input.off();
+       });
+
+       test("focus-blur order (#12868)", function() {
+               expect( 5 );
+
+               var order,
+                       $text = jQuery("#text1"),
+                       $radio = jQuery("#radio1").trigger("focus");
+
+               // IE6-10 fire focus/blur events asynchronously; this is the resulting mess.
+               // IE's browser window must be topmost for this to work properly!!
+               stop();
+               $radio[0].focus();
+
+               setTimeout( function() {
+
+                       $text
+                               .on( "focus", function(){
+                                       equal( order++, 1, "text focus" );
+                               })
+                               .on( "blur", function(){
+                                       equal( order++, 0, "text blur" );
+                               });
+                       $radio
+                               .on( "focus", function(){
+                                       equal( order++, 1, "radio focus" );
+                               })
+                               .on( "blur", function(){
+                                       equal( order++, 0, "radio blur" );
+                               });
+
+                       // Enabled input getting focus
+                       order = 0;
+                       equal( document.activeElement, $radio[0], "radio has focus" );
+                       $text.trigger("focus");
+                       setTimeout( function() {
+                               equal( document.activeElement, $text[0], "text has focus" );
+
+                               // Run handlers without native method on an input
+                               order = 1;
+                               $radio.triggerHandler( "focus" );
+                               $text.off();
+                               start();
+                       }, 50 );
+               }, 50 );
+       });
+}