зеркало из https://github.com/mozilla/gecko-dev.git
Bug 595305 - Factor cookie third-party URI code into separate API. Tests. r=bent, a=betaN+
This commit is contained in:
Родитель
f90d6cec5d
Коммит
734265ed01
|
@ -0,0 +1,84 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
|
||||
// Test ThirdPartyUtil methods. See mozIThirdPartyUtil.
|
||||
|
||||
Components.utils.import("resource://gre/modules/NetUtil.jsm");
|
||||
|
||||
let Cc = Components.classes;
|
||||
let Ci = Components.interfaces;
|
||||
let NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG;
|
||||
|
||||
function do_check_throws(f, result, stack)
|
||||
{
|
||||
if (!stack) {
|
||||
try {
|
||||
// We might not have a 'Components' object.
|
||||
stack = Components.stack.caller;
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
f();
|
||||
} catch (exc) {
|
||||
do_check_eq(exc.result, result);
|
||||
return;
|
||||
}
|
||||
do_throw("expected " + result + " exception, none thrown", stack);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
let util = Cc["@mozilla.org/thirdpartyutil;1"].getService(Ci.mozIThirdPartyUtil);
|
||||
|
||||
// Create URIs and channels pointing to foo.com and bar.com.
|
||||
// We will use these to put foo.com into first and third party contexts.
|
||||
let spec1 = "http://foo.com/foo.html";
|
||||
let spec2 = "http://bar.com/bar.html";
|
||||
let uri1 = NetUtil.newURI(spec1);
|
||||
let uri2 = NetUtil.newURI(spec2);
|
||||
let channel1 = NetUtil.newChannel(uri1);
|
||||
let channel2 = NetUtil.newChannel(uri2);
|
||||
|
||||
// Create some file:// URIs.
|
||||
let filespec1 = "file://foo.txt";
|
||||
let filespec2 = "file://bar.txt";
|
||||
let fileuri1 = NetUtil.newURI(filespec1);
|
||||
let fileuri2 = NetUtil.newURI(filespec2);
|
||||
let filechannel1 = NetUtil.newChannel(fileuri1);
|
||||
let filechannel2 = NetUtil.newChannel(fileuri2);
|
||||
|
||||
// Test isThirdPartyURI.
|
||||
do_check_false(util.isThirdPartyURI(uri1, uri1));
|
||||
do_check_true(util.isThirdPartyURI(uri1, uri2));
|
||||
do_check_true(util.isThirdPartyURI(uri2, uri1));
|
||||
do_check_false(util.isThirdPartyURI(fileuri1, fileuri1));
|
||||
do_check_false(util.isThirdPartyURI(fileuri1, fileuri2));
|
||||
do_check_true(util.isThirdPartyURI(uri1, fileuri1));
|
||||
do_check_throws(function() { util.isThirdPartyURI(uri1, null); },
|
||||
NS_ERROR_INVALID_ARG);
|
||||
do_check_throws(function() { util.isThirdPartyURI(null, uri1); },
|
||||
NS_ERROR_INVALID_ARG);
|
||||
do_check_throws(function() { util.isThirdPartyURI(null, null); },
|
||||
NS_ERROR_INVALID_ARG);
|
||||
|
||||
// We can't test isThirdPartyWindow since we can't really set up a window
|
||||
// heirarchy. We leave that to mochitests.
|
||||
|
||||
// Test isThirdPartyChannel. As above, we can't test the bits that require
|
||||
// a load context or window heirarchy.
|
||||
do_check_throws(function() { util.isThirdPartyChannel(null); },
|
||||
NS_ERROR_INVALID_ARG);
|
||||
do_check_throws(function() { util.isThirdPartyChannel(channel1); },
|
||||
NS_ERROR_INVALID_ARG);
|
||||
do_check_throws(function() { util.isThirdPartyChannel(channel1, uri1); },
|
||||
NS_ERROR_INVALID_ARG);
|
||||
do_check_true(util.isThirdPartyChannel(channel1, uri2));
|
||||
let httpchannel1 = channel1.QueryInterface(Ci.nsIHttpChannelInternal);
|
||||
httpchannel1.forceAllowThirdPartyCookie = true;
|
||||
do_check_false(util.isThirdPartyChannel(channel1));
|
||||
do_check_false(util.isThirdPartyChannel(channel1, uri1));
|
||||
do_check_true(util.isThirdPartyChannel(channel1, uri2));
|
||||
}
|
||||
|
|
@ -51,6 +51,10 @@ _TEST_FILES = \
|
|||
file_domain_inner.html \
|
||||
file_domain_inner_inner.html \
|
||||
test_differentdomain.html \
|
||||
test_different_domain_in_hierarchy.html \
|
||||
file_domain_hierarchy_inner.html \
|
||||
file_domain_hierarchy_inner_inner.html \
|
||||
file_domain_hierarchy_inner_inner_inner.html \
|
||||
test_image.html \
|
||||
file_image_inner.html \
|
||||
file_image_inner_inner.html \
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<META HTTP-EQUIV="Set-Cookie" CONTENT="meta=tag">
|
||||
<script type="text/javascript">
|
||||
document.cookie = "can=has";
|
||||
|
||||
// send a message to our test document, to say we're done loading
|
||||
window.opener.postMessage("message", "http://mochi.test:8888");
|
||||
</script>
|
||||
<body>
|
||||
<iframe name="frame1" src="http://example.com/tests/extensions/cookie/test/file_domain_hierarchy_inner_inner.html"></iframe>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<META HTTP-EQUIV="Set-Cookie" CONTENT="meta2=tag2">
|
||||
<script type="text/javascript">
|
||||
document.cookie = "can2=has2";
|
||||
|
||||
// send a message to our test document, to say we're done loading
|
||||
window.parent.opener.postMessage("message", "http://mochi.test:8888");
|
||||
</script>
|
||||
<body>
|
||||
<iframe name="frame1" src="http://example.org/tests/extensions/cookie/test/file_domain_hierarchy_inner_inner_inner.html"></iframe>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<META HTTP-EQUIV="Set-Cookie" CONTENT="meta3=tag3">
|
||||
<script type="text/javascript">
|
||||
document.cookie = "can3=has3";
|
||||
|
||||
// send a message to our test document, to say we're done loading
|
||||
window.parent.parent.opener.postMessage("message", "http://mochi.test:8888");
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test cookie requests from within a window hierarchy of different base domains</title>
|
||||
<script type="text/javascript" src="/MochiKit/packed.js"></script>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||
</head>
|
||||
<body onload="setupTest('http://example.org/tests/extensions/cookie/test/file_domain_hierarchy_inner.html', 3, 3)">
|
||||
<p id="display"></p>
|
||||
<pre id="test">
|
||||
<script class="testbody" type="text/javascript" src="file_testcommon.js">
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче