Merge branch 'bug_6158' of https://github.com/jboesch/jquery into jboesch-bug_6158
authorJohn Resig <jeresig@gmail.com>
Tue, 15 Mar 2011 21:06:24 +0000 (17:06 -0400)
committerJohn Resig <jeresig@gmail.com>
Tue, 15 Mar 2011 21:06:24 +0000 (17:06 -0400)
.gitignore
.gitmodules [new file with mode: 0644]
Makefile
src/ajax.js
src/ajax/xhr.js
src/sizzle [new submodule]
test/qunit [new submodule]
test/unit/ajax.js

index a77d67a..6cd5479 100644 (file)
@@ -4,7 +4,5 @@ dist
 *~
 *.diff
 *.patch
-test/qunit
-src/sizzle
 /*.html
 .DS_Store
diff --git a/.gitmodules b/.gitmodules
new file mode 100644 (file)
index 0000000..80ce236
--- /dev/null
@@ -0,0 +1,6 @@
+[submodule "src/sizzle"]
+       path = src/sizzle
+       url = git://github.com/jeresig/sizzle.git
+[submodule "test/qunit"]
+       path = test/qunit
+       url = git://github.com/jquery/qunit.git
index a6aae42..84816a1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,3 @@
-V ?= 0
-
 SRC_DIR = src
 TEST_DIR = test
 BUILD_DIR = build
@@ -38,7 +36,6 @@ JQ = ${DIST_DIR}/jquery.js
 JQ_MIN = ${DIST_DIR}/jquery.min.js
 
 SIZZLE_DIR = ${SRC_DIR}/sizzle
-QUNIT_DIR = ${TEST_DIR}/qunit
 
 JQ_VER = $(shell cat version.txt)
 VER = sed "s/@VERSION/${JQ_VER}/"
@@ -51,32 +48,8 @@ all: jquery min lint
 ${DIST_DIR}:
        @@mkdir -p ${DIST_DIR}
 
-ifeq ($(strip $(V)),0)
-verbose = --quiet
-else ifeq ($(strip $(V)),1)
-verbose =
-else
-verbose = --verbose
-endif
-
-define clone_or_pull
--@@if test ! -d $(strip ${1})/.git; then \
-               echo "Cloning $(strip ${1})..."; \
-               git clone $(strip ${verbose}) --depth=1 $(strip ${2}) $(strip ${1}); \
-       else \
-               echo "Pulling $(strip ${1})..."; \
-               git --git-dir=$(strip ${1})/.git pull $(strip ${verbose}) origin master; \
-       fi
-
-endef
-
-${QUNIT_DIR}:
-       $(call clone_or_pull, ${QUNIT_DIR}, git://github.com/jquery/qunit.git)
-
-${SIZZLE_DIR}:
-       $(call clone_or_pull, ${SIZZLE_DIR}, git://github.com/jeresig/sizzle.git)
-
-init: ${QUNIT_DIR} ${SIZZLE_DIR}
+init:
+       @@if [ -d .git ]; then git submodule update --init --recursive; fi
 
 jquery: init ${JQ}
 jq: init ${JQ}
@@ -122,7 +95,16 @@ clean:
        @@echo "Removing built copy of Sizzle"
        @@rm -f src/selector.js
 
-       @@echo "Removing cloned directories"
+distclean: clean
+       @@echo "Removing submodules"
        @@rm -rf test/qunit src/sizzle
 
+# update the submodules to the latest at the most logical branch
+pull_submodules:
+       @@git submodule foreach "git pull origin \$$(git branch --no-color --contains \$$(git rev-parse HEAD) | grep -v \( | head -1)"
+       @@git submodule summary
+
+pull: pull_submodules
+       @@git pull ${REMOTE} ${BRANCH}
+
 .PHONY: all jquery lint min init jq clean
index 4714afd..add3b37 100644 (file)
@@ -7,7 +7,7 @@ var r20 = /%20/g,
        rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
        rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
        // #7653, #8125, #8152: local protocol detection
-       rlocalProtocol = /(?:^file|^widget|\-extension):$/,
+       rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/,
        rnoContent = /^(?:GET|HEAD)$/,
        rprotocol = /^\/\//,
        rquery = /\?/,
@@ -19,7 +19,7 @@ var r20 = /%20/g,
        rucHeadersFunc = function( _, $1, $2 ) {
                return $1 + $2.toUpperCase();
        },
-       rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?|\/[^\/])/,
+       rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
 
        // Keep a copy of the old load method
        _load = jQuery.fn.load,
@@ -61,7 +61,7 @@ try {
 }
 
 // Segment location into parts
-ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() );
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
 
 // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
 function addToPrefiltersOrTransports( structure ) {
index a6473dd..5dbc33d 100644 (file)
@@ -92,11 +92,12 @@ if ( jQuery.support.ajax ) {
                                                xhr.overrideMimeType( s.mimeType );
                                        }
 
-                                       // Requested-With header
-                                       // Not set for crossDomain requests with no content
-                                       // (see why at http://trac.dojotoolkit.org/ticket/9486)
-                                       // Won't change header if already provided
-                                       if ( !( s.crossDomain && !s.hasContent ) && !headers["X-Requested-With"] ) {
+                                       // X-Requested-With header
+                                       // For cross-domain requests, seeing as conditions for a preflight are
+                                       // akin to a jigsaw puzzle, we simply never set it to be sure.
+                                       // (it can always be set on a per-request basis or even using ajaxSetup)
+                                       // For same-domain requests, won't change header if already provided.
+                                       if ( !s.crossDomain && !headers["X-Requested-With"] ) {
                                                headers[ "X-Requested-With" ] = "XMLHttpRequest";
                                        }
 
diff --git a/src/sizzle b/src/sizzle
new file mode 160000 (submodule)
index 0000000..ef19279
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit ef19279f54ba49242c6461d47577c703f4f4e80e
diff --git a/test/qunit b/test/qunit
new file mode 160000 (submodule)
index 0000000..d404faf
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit d404faf8f587fcbe6b8907943022e6318dd51e0c
index 2a2ac46..7c572a3 100644 (file)
@@ -492,7 +492,7 @@ test(".ajax() - hash", function() {
 
 test("jQuery ajax - cross-domain detection", function() {
 
-       expect( 5 );
+       expect( 6 );
 
        var loc = document.location,
                otherPort = loc.port === 666 ? 667 : 666,
@@ -508,6 +508,7 @@ test("jQuery ajax - cross-domain detection", function() {
        });
 
        jQuery.ajax({
+               dataType: "jsonp",
                url: 'app:/path',
                beforeSend: function( _ , s ) {
                        ok( s.crossDomain , "Adobe AIR app:/ URL detected as cross-domain" );
@@ -535,6 +536,15 @@ test("jQuery ajax - cross-domain detection", function() {
 
        jQuery.ajax({
                dataType: "jsonp",
+               url: "about:blank",
+               beforeSend: function( _ , s ) {
+                       ok( s.crossDomain , "Test about:blank is detected as cross-domain" );
+                       return false;
+               }
+       });
+
+       jQuery.ajax({
+               dataType: "jsonp",
                url: loc.protocol + "//" + loc.host,
                crossDomain: true,
                beforeSend: function( _ , s ) {