Skip to content

Commit

Permalink
Fix issue with priority config not triggering script fetching when it…
Browse files Browse the repository at this point in the history
… was part of a data-main script load.
  • Loading branch information
jrburke committed Feb 4, 2011
1 parent 2302203 commit 9be3d7d
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 59 deletions.
7 changes: 7 additions & 0 deletions require.js
Expand Up @@ -1041,6 +1041,13 @@ var require, define;
requireWait = context.requireWait;
context.requireWait = false;
context.require(cfg.priority);
//Trigger a resume right away, for the case when
//the script with the priority load is done as part
//of a data-main call. In that case the normal resume
//call will not happen because the scriptCount will be
//at 1, since the script for data-main is being processed.
resume();
//Restore previous state.
context.requireWait = requireWait;
config.priorityWait = cfg.priority;
}
Expand Down
60 changes: 1 addition & 59 deletions tests/priority/priority.html
Expand Up @@ -2,67 +2,9 @@
<html>
<head>
<title>require.js: Priority Test</title>
<script type="text/javascript" src="../../require.js"></script>
<script type="text/javascript" src="../doh/runner.js"></script>
<script type="text/javascript" src="../doh/_browserRunner.js"></script>
<script type="text/javascript">
var master = new doh.Deferred(),
count = 0;
doh.register(
"priority",
[
{
name: "priority",
timeout: 5000,
runTest: function () {
return master;
}
}
]
);
doh.run();

require(
{
baseUrl: "./",
priority: ["one", "two"]
},
["alpha", "beta", "gamma", "epsilon"],
function (alpha, beta, gamma, epsilon) {
count += 1;

//Make sure callback is only called once.
doh.is(1, count);

doh.is("alpha", alpha.name);
doh.is("beta", alpha.betaName);
doh.is("beta", beta.name);
doh.is("gamma", beta.gammaName);
doh.is("gamma", gamma.name);
doh.is("theta", gamma.thetaName);
doh.is("epsilon", gamma.epsilonName);
doh.is("epsilon", epsilon.name);
}
);

function verifyFunc() {
var regExp = /alpha|beta|gamma|theta/,
i,
scripts = document.getElementsByTagName("script");
for (i = scripts.length - 1; i > -1; i--) {
doh.f(regExp.test(scripts[i].src));
}
master.callback(true);
}

//Account for requiring this test with a version of require.js that
//does not have require.ready built in.
if (require.ready) {
require.ready(verifyFunc);
} else {
setTimeout(verifyFunc, 3000);
}
</script>
<script type="text/javascript" data-main="priority.js" src="../../require.js"></script>
</head>
<body>
<h1>require.js: Priority Test</h1>
Expand Down
56 changes: 56 additions & 0 deletions tests/priority/priority.js
@@ -0,0 +1,56 @@
var master = new doh.Deferred(),
count = 0;
doh.register(
"priority",
[
{
name: "priority",
timeout: 5000,
runTest: function () {
return master;
}
}
]
);
doh.run();

require(
{
baseUrl: "./",
priority: ["one", "two"]
},
["alpha", "beta", "gamma", "epsilon"],
function (alpha, beta, gamma, epsilon) {
count += 1;

//Make sure callback is only called once.
doh.is(1, count);

doh.is("alpha", alpha.name);
doh.is("beta", alpha.betaName);
doh.is("beta", beta.name);
doh.is("gamma", beta.gammaName);
doh.is("gamma", gamma.name);
doh.is("theta", gamma.thetaName);
doh.is("epsilon", gamma.epsilonName);
doh.is("epsilon", epsilon.name);
}
);

function verifyFunc() {
var regExp = /alpha|beta|gamma|theta/,
i,
scripts = document.getElementsByTagName("script");
for (i = scripts.length - 1; i > -1; i--) {
doh.f(regExp.test(scripts[i].src));
}
master.callback(true);
}

//Account for requiring this test with a version of require.js that
//does not have require.ready built in.
if (require.ready) {
require.ready(verifyFunc);
} else {
setTimeout(verifyFunc, 3000);
}

0 comments on commit 9be3d7d

Please sign in to comment.