Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Update sizzle; Add sizzle cache collision iframe test. Fixes #8539.
  • Loading branch information
timmywil committed Oct 13, 2011
1 parent 3ad0ba6 commit 8723f3b
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 42 deletions.
2 changes: 1 addition & 1 deletion src/sizzle
Submodule sizzle updated 2 files
+17 −13 sizzle.js
+1 −1 test/unit/selector.js
44 changes: 22 additions & 22 deletions test/data/selector.html → test/data/selector/html5_selector.html
Expand Up @@ -2,28 +2,28 @@
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>jQuery selector</title>

<script src="../../src/core.js"></script>
<script src="../../src/callbacks.js"></script>
<script src="../../src/deferred.js"></script>
<script src="../../src/support.js"></script>
<script src="../../src/data.js"></script>
<script src="../../src/queue.js"></script>
<script src="../../src/attributes.js"></script>
<script src="../../src/event.js"></script>
<script src="../../src/sizzle/sizzle.js"></script>
<script src="../../src/sizzle-jquery.js"></script>
<script src="../../src/traversing.js"></script>
<script src="../../src/manipulation.js"></script>
<script src="../../src/css.js"></script>
<script src="../../src/ajax.js"></script>
<script src="../../src/ajax/jsonp.js"></script>
<script src="../../src/ajax/script.js"></script>
<script src="../../src/ajax/xhr.js"></script>
<script src="../../src/effects.js"></script>
<script src="../../src/offset.js"></script>
<script src="../../src/dimensions.js"></script>
<title>jQuery selector - attributes</title>

<script src="../../../src/core.js"></script>
<script src="../../../src/callbacks.js"></script>
<script src="../../../src/deferred.js"></script>
<script src="../../../src/support.js"></script>
<script src="../../../src/data.js"></script>
<script src="../../../src/queue.js"></script>
<script src="../../../src/attributes.js"></script>
<script src="../../../src/event.js"></script>
<script src="../../../src/sizzle/sizzle.js"></script>
<script src="../../../src/sizzle-jquery.js"></script>
<script src="../../../src/traversing.js"></script>
<script src="../../../src/manipulation.js"></script>
<script src="../../../src/css.js"></script>
<script src="../../../src/ajax.js"></script>
<script src="../../../src/ajax/jsonp.js"></script>
<script src="../../../src/ajax/script.js"></script>
<script src="../../../src/ajax/xhr.js"></script>
<script src="../../../src/effects.js"></script>
<script src="../../../src/offset.js"></script>
<script src="../../../src/dimensions.js"></script>

<script id="script1"
defer
Expand Down
40 changes: 40 additions & 0 deletions test/data/selector/sizzle_cache.html
@@ -0,0 +1,40 @@
<!doctype html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>jQuery selector - sizzle cache</title>

<script src="http://code.jquery.com/jquery-git.js"></script>
<script>
var $git = jQuery.noConflict(true);
</script>
<script src="../../../src/core.js"></script>
<script src="../../../src/callbacks.js"></script>
<script src="../../../src/deferred.js"></script>
<script src="../../../src/support.js"></script>
<script src="../../../src/data.js"></script>
<script src="../../../src/queue.js"></script>
<script src="../../../src/attributes.js"></script>
<script src="../../../src/event.js"></script>
<script src="../../../src/sizzle/sizzle.js"></script>
<script src="../../../src/sizzle-jquery.js"></script>
<script src="../../../src/traversing.js"></script>
<script src="../../../src/manipulation.js"></script>
<script src="../../../src/css.js"></script>
<script src="../../../src/ajax.js"></script>
<script src="../../../src/ajax/jsonp.js"></script>
<script src="../../../src/ajax/script.js"></script>
<script src="../../../src/ajax/xhr.js"></script>
<script src="../../../src/effects.js"></script>
<script src="../../../src/offset.js"></script>
<script src="../../../src/dimensions.js"></script>

</head>
<body>

<div class="test">
<a href="#" id="collision">Worlds collide</a>
</div>

</body>
</html>
47 changes: 28 additions & 19 deletions test/unit/selector.js
Expand Up @@ -17,7 +17,7 @@ var testIframe = function( fileName, name, fn ) {
var loadFixture = function() {

// Creates iframe with cache disabled
var src = "./data/" + fileName + ".html?" + parseInt( Math.random()*1000, 10 ),
var src = "./data/selector/" + fileName + ".html?" + parseInt( Math.random()*1000, 10 ),
iframe = jQuery("<iframe />").css({
width: 500, height: 500, position: "absolute", top: -600, left: -600, visibility: "hidden"
}).appendTo("body")[0];
Expand All @@ -38,47 +38,47 @@ var testIframe = function( fileName, name, fn ) {
// continue
start();
// call actual tests passing the correct jQuery instance to use
fn.call( this, win.jQuery, win );
fn.call( this, win.jQuery, win, win.document );
document.body.removeChild( iframe );
iframe = null;
}
}, 15 );
});
};

testIframe("selector", "attributes - jQuery.attr", function( jQuery, window ) {
testIframe("html5_selector", "attributes - jQuery.attr", function( jQuery, window, document ) {
expect(34);

var document = window.document;

/**
* Returns an array of elements with the given IDs, eg.
*/
var q = function() {
var r = [];
for ( var i = 0; i < arguments.length; i++ ) {
r.push( document.getElementById( arguments[i] ) );
}
return r;
};
function q() {
var r = [],
i = 0;

for ( ; i < arguments.length; i++ ) {
r.push( document.getElementById( arguments[i] ) );
}
return r;
}

/**
* Asserts that a select matches the given IDs * @example t("Check for something", "//[a]", ["foo", "baar"]);
* @param {String} a - Assertion name
* @param {String} b - Sizzle selector
* @param {String} c - Array of ids to construct what is expected
*/
var t = function( a, b, c ) {
var f = jQuery(b).get(), s = "";
function t( a, b, c ) {
var f = jQuery(b).get(),
s = "",
i = 0;

for ( var i = 0; i < f.length; i++ ) {
s += (s && ",") + '"' + f[i].id + '"';
for ( ; i < f.length; i++ ) {
s += (s && ",") + '"' + f[i].id + '"';
}

deepEqual(f, q.apply( q, c ), a + " (" + b + ")");
};
}

// ====== All known boolean attributes, including html5 booleans ======
// autobuffer, autofocus, autoplay, async, checked,
Expand Down Expand Up @@ -131,3 +131,12 @@ testIframe("selector", "attributes - jQuery.attr", function( jQuery, window ) {

t( "Improperly named form elements do not interfere with form selections (#9570)", "form[name='formName']", ["form1"]);
});

testIframe("sizzle_cache", "Sizzle cache collides with multiple Sizzles on a page", function( jQuery, window, document ) {
var $git = window.$git;

expect(3);
deepEqual( $git('.test a').get(), [ document.getElementById('collision') ], "Select collision anchor with first sizzle" );
equal( jQuery('.evil a').length, 0, "Select nothing with second sizzle" );
equal( jQuery('.evil a').length, 0, "Select nothing again with second sizzle" );
});

0 comments on commit 8723f3b

Please sign in to comment.