]> source.dussan.org Git - jquery.git/commitdiff
Ajax, Manipulation: don't test cross-document manip in Android 2.3
authorMichał Gołębiowski <m.goleb@gmail.com>
Mon, 5 May 2014 13:45:57 +0000 (15:45 +0200)
committerMichał Gołębiowski <m.goleb@gmail.com>
Wed, 7 May 2014 21:22:24 +0000 (23:22 +0200)
(cherry-picked from 213b9604f3da654e4281eeea56fcb169f88ffd19)

Fixes #14796
Closes gh-1572

test/unit/ajax.js
test/unit/manipulation.js

index 8dd97405a9ed5aa3f43076642c0443a257b26fd7..68628a2d35a6dec524d0ae318ffea7826a759969 100644 (file)
@@ -1513,6 +1513,12 @@ module( "ajax", {
                        var parsedXML = jQuery( jQuery.parseXML("<tab title=\"Added\">blibli</tab>") ).find("tab");
                        ajaxXML = jQuery( ajaxXML );
                        try {
+                               // Android 2.3 doesn't automatically adopt nodes from foreign documents.
+                               // (see the comment in test/manipulation.js)
+                               // Support: Android 2.3
+                               if ( /android 2\.3/i.test( navigator.userAgent ) ) {
+                                       parsedXML = jQuery( ajaxXML[ 0 ].adoptNode( parsedXML[ 0 ] ) );
+                               }
                                ajaxXML.find("infowindowtab").append( parsedXML );
                        } catch( e ) {
                                strictEqual( e, undefined, "error" );
index 48d5f398788b3412b39e88f95b5b32d05a8583ba..ad90df92318a8311b9cdf8917ad6f220ee6efb7c 100644 (file)
@@ -410,7 +410,7 @@ test( "XML DOM manipulation (#9960)", function() {
 
        expect( 5 );
 
-       var
+       var scxml1Adopted,
                xmlDoc1 = jQuery.parseXML("<scxml xmlns='http://www.w3.org/2005/07/scxml' version='1.0'><state x='100' y='100' initial='actions' id='provisioning'></state><state x='100' y='100' id='error'></state><state x='100' y='100' id='finished' final='true'></state></scxml>"),
                xmlDoc2 = jQuery.parseXML("<scxml xmlns='http://www.w3.org/2005/07/scxml' version='1.0'><state id='provisioning3'></state></scxml>"),
                xml1 = jQuery( xmlDoc1 ),
@@ -419,6 +419,15 @@ test( "XML DOM manipulation (#9960)", function() {
                scxml2 = jQuery( "scxml", xml2 ),
                state = scxml2.find("state");
 
+       // Android 2.3 doesn't automatically adopt nodes from foreign documents.
+       // Although technically this is compliant behavior, no other browser
+       // (including newer Android Browsers) behave in this way so do the adopting
+       // just for Android 2.3.
+       // Support: Android 2.3
+       if ( /android 2\.3/i.test( navigator.userAgent ) ) {
+               state = jQuery( xmlDoc1.adoptNode( state[ 0 ] ) );
+       }
+
        scxml1.append( state );
        strictEqual( scxml1[0].lastChild, state[0], "append" );
 
@@ -431,7 +440,13 @@ test( "XML DOM manipulation (#9960)", function() {
        scxml1.find("#provisioning").before( state );
        strictEqual( scxml1[0].firstChild, state[0], "before" );
 
-       scxml2.replaceWith( scxml1 );
+       // Support: Android 2.3
+       if ( /android 2\.3/i.test( navigator.userAgent ) ) {
+               scxml1Adopted = jQuery( xmlDoc2.adoptNode( scxml1[ 0 ] ) );
+               scxml2.replaceWith( scxml1Adopted );
+       } else {
+               scxml2.replaceWith( scxml1 );
+       }
        deepEqual( jQuery( "state", xml2 ).get(), scxml1.find("state").get(), "replaceWith" );
 });